开放性数学实验报告

(2016 / 2017学年 第 2学期)

题 目:基于MATLAB的圆周率近似计算

专 业 通信工程

学生姓名 杨 坤 冯著豪 周李鑫

班级学号 B16011115 B16011110 B16011124

指导教师 赵礼峰

指导单位 南京邮电大学理学院

日 期 2017/5/20

MATLAB圆周率的近似计算

B16011115 杨 坤 B16011110 冯著豪 B16011124周李鑫

摘要:圆周率(Pi)是圆的周长与直径的比值,一般用希腊字母π表示,是一个在数学及物理学中普遍存在的数学常数。π也等于圆形之面积与半径平方之比。是精确计算圆周长、圆面积、球体积等几何形状的关键值。 在分析学里,π可以严格地定义为满足sin x = 0的最小正实数x。

计算圆周率一直是很多人的追求。在电子计算机还没有发明的时候就有很多先贤用各种方法计算了圆周率的近似值最著名的应该是祖冲之,他计算出了圆周率的位数达到了小数点后七位。该记录在世界范围内保持了八百年。

之后圆周率的计算进入了分析法时期,这一时期人们开始利用无穷级数或无穷连乘积求π,摆脱可割圆术的繁复计算。无穷乘积式、无穷连分数、无穷级数等各种π值表达式纷纷出现,使得π值计算精度迅速增加。

在分析法的基础上,电子计算机的出现使得圆周率的计算精度大幅提高。计算圆周率已经成为评判超级计算机的性能指标的项目之一。

如今个人计算机的性能也达到了一个极高的程度。学习使用计算机计算圆周率可以帮助我们更好地学习matlab同时对数学也会有更深的理解。

关键词:圆周率计算;投点法;定积分计分法;幂级数;韦达公式

一、 问题分析

计算圆周率有很多方法,不同方法之间自然也有好坏之分。在强大的计算机性能的支持下,我们能使用不同的方法计算圆周率并且感受不同方法孰优孰劣。首先我们需要了解不同的计算方法是怎么计算圆周率的,然后使用matlab编写代码帮助我们实现算法,计算出圆周率。

二、 实验方法

1. 投点法:

投点法,顾名思义就是通过投点计算圆周率。在一个边长为1的正方形里以1为半径画一个四分之一圆,再向正方形里投点,在概率的学习中我们知道,大量地向这个正方形中投点时,在投的点足够多的前提下,落在四分之一扇形里的点与投的所有点的个数之比应该为扇形与整个正方形的面积之比。扇形的面积为四分之一圆,即1/4*pi,正方形的面积为1.设投n个点,落在扇形里的点的个数为count即可推出pi=4*(count/n)。

代码如下:

count=0;

ezplot('x^2+y^2=1',[0,1,0,1]),hold on ,grid on

n=10000;

for i=1:1:n

x=rand(1,1);

y=rand(1,1);

plot(x,y,'*'),hold on

pause(0.001)

if x^2+y^2<=1

count=count+1;

end

end

p=4*(count/n)

投200个点时多次运行分别获得以下结果:

3.3600 3.0600 3.1800 3.1400 3.1800

可见这时所得的结果并不稳定,且结果并不精确于是继续实验投一千个点。

多次实验后得出以下结果

3.1040 3.1120 3.2200 3.1520 3.0560 3.1280

此时的精确度仍然不尽人意,于是我们直接投了一万个点

此时得到了以下结果

3.1376 3.1355 3.1413 3.1415 3.1490 3.1457

此时基本达到了两位小数的精确度

于是我们更改投点个数得到以下结果

投100000个点时:3.1415 3.1414 3.1414 3.1413

当我们准备投更多点时发现投点法消耗太多计算机资源,已经无法投太多的点了。投点法计算圆周率利用了计算机的高性能,但是性能的使用效率并不太高。

2. 定积分积分法

0111+x2dx=π4 π=40111+x2dx

将区间[0,1]分成n等份,在每个小区间上,选中点为ξi,使用积分的方法计算π的近似值。

代码如下:

n=50;%等分积分区间数。

i=0:1/n:1;

s=0;

for k=1:length(i)-1

s=s+(1/(1+((i(k)+i(k+1))/2)^2))*1/n;

end

vpa(4*s,20)

设置不同的区间数,获得不同的近似值,对应关系如下:

区间数

50

100

200

300

400

500

600

近似值

3.1416

3.1416

3.1415947

3.14159357

3.14159317

3.14159298

3.14159288

相比于投点法,该方法以较高的效率使用了计算机资源达到了更高的精度,当n=100,000,000时,精度达到了小数点后十二位。

3. 幂级数

幂级数的方法有很多,我们学习了使用arctan(x)的Maclaurin展开式计算π的近似值,π=4arctan1=4(1-13+15-…+-1n+12n-1+…

代码如下

n=10; %展开次数

s=0;

digits(50) %计算精度

for k=1:n

s=s+4*(-1)^(k+1)/(2*k-1);

end

vpa(s,20)

改变n的值,计算不同情况下得出的圆周率近似值

n

10

100

1000

10000

100000

近似值

3.0418

3.131592

3.14059

3.1414926535

3.1415826535897

该计算方法能比较准确地得出较高精度的圆周率的近似值

4. 韦达公式

根据韦达在1593年给出的公式 2π=22*2+22*…

代码如下:

a=sqrt(2);

s=1;

n=100

for i=1:n

s=(s*a)/2;

a1=sqrt(2+a);

a=a1;

end

vpa(2/s,20)

使用该算法计算圆周率的近似值时,n与所得的近似值如下:

n

10

100

1000

Pi

3.1415914

3.14159265358979385

3.1415926535897932385

事实上,当n为100时所算出的圆周率精度已经超过了小数点后100位,可见其计算精度之高,效率之快。一下列出n=100时所得结果精确到100位的输出值:

3.1415926535 8979323846 2643383279 5028841971 6939937510 5820974944 5923078164 0628620899 8628034825 342117068

三、实验感想

圆周率的近似计算一直是一种挑战,经过这次研究,我们更加深刻地体会到了数学的魅力,同时也对matlab更加熟悉。在不断的学习中,我们成长了很多。

参考文献:

【1】 杨振华,郦志新《数学实验》北京:科学技术出版社,2010.2

【2】 赵洪牛《高等数学》北京:高等教育出版社

【3】 百度百科:圆周率

6 / 6

展开阅读全文

圆周率近似计算matlab,matlab 圆周率的近似计算 实验报告.doc相关推荐

  1. MATLAB rolcus函数,自动控制原理实验报告 .doc

    <自动控制原理实验报告 .doc>由会员分享,可在线阅读,更多相关<自动控制原理实验报告 .doc(32页珍藏版)>请在装配图网上搜索. 1. 实验报告课程名称 自动控制原理 ...

  2. 离散信号内插matlab,离散信号和系统实验报告.doc

    离散信号和系统实验报告 三.实验效果分析(包括仪器设备等使用效果) 实验中注意中英文的切换是应注意,特别是标点符号,括号等需要注意.需要仔细键入程序. 教 师 评 语 指导老师 年 月 日 江西师范大 ...

  3. 西北工业大学matlab安装,西北工业大学Matlab实验报告.doc

    PAGE PAGE 21 西北工业大学 <基于MATLAB的数字信号处理>实验报告 学 院: 计算机学院 学 号: 姓 名: 专 业: 计算机科学与技术 西北工业大学 2017年 07 月 ...

  4. matlab+nnf.m,中南大学-信号与系统matlab实验报告.doc

    中南大学-信号与系统matlab实验报告.doc 实验一 基本信号的生成 1 实验目的 学会 使用 MATLAB 产生各种常见的连续时间信号与离散时间信号: 通过 MATLAB 中的绘图工具对产生的信 ...

  5. gramer法则matlab,线性代数-matlab实验报告.doc

    <线性代数-matlab实验报告.doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<线性代数-matlab实验报告.doc>文档请在天天文库搜索. ...

  6. 数值分析matlab实验报告,数值分析第一次作业matlab实验报告.doc

    数值分析第一次作业matlab实验报告.doc 几种线性方程组迭代算法的MATLAB实现和性能比较用有限差分方法(五点差分格式)求解正方形域上的Poisson方程边值问题用MATLAB语言编写算法程序 ...

  7. matlab仿真实验报告,Matlab SIMULINK仿真实验报告.doc

    Matlab SIMULINK仿真实验报告.doc 西安邮电学院 Matlab实验报告(四)2011- 2012 学年第 1 学期专业 自动化班级 自动 0903学号姓名2011 年 11 月 10 ...

  8. 信号与系统实验感想 matlab,信号与系统MATLAB实验报告.doc

    信号与系统MATLAB实验报告.doc 成绩 信号与系统实验报告 课 程 名 信号与系统 学 部 机械与电子信息学部 专 业 电子信息工程 学 号 姓 名 曹 禹 指导教师 吴国平 日 期 2013/ ...

  9. 西安交通大学matlab实验报告,matlab实验报告.doc

    matlab实验报告.doc MATLAB实验报告1MATLAB实验报告MATLAB实验报告2姓名学号0905130129专业班级通信工程1301班学院信息科学与工程学院指导老师陈科文.支国明.张金焕 ...

  10. 电路仿真matlab实验总结,基于matlab的boost电路仿真的实验报告分析.doc

    基于matlab的boost电路仿真的实验报告分析.doc Boost电路 1.实验名称:基于matlab的boost电路仿真的实验报告分析. 2.实验目的:学习matlab的基础知识和操作: 改变占 ...

最新文章

  1. Intellij IDEA 没办法创建java文件
  2. KDE应用如何在GNOME环境下运行?
  3. 字符串多模式精确匹配(脏字/敏感词汇搜索算法)——TTMP算法 之理论(转)...
  4. 采用APACHE POI操作EXCEL文件--计算式调用另一文件
  5. 02.elasticsearch_read_write模型基础
  6. POJ3675 Telescope 圆和多边形的交
  7. Python、C++ lambda 表达式
  8. mybatis返回map键值对_mybatis返回map key怎么指定
  9. python hello world重复_查找数组中重复的数字-python版
  10. EasyUI 的Tab 标签添加右键菜单
  11. Hibernate的单向1-N关联(三)
  12. eclipse搭建springmvc
  13. Jvm面试题及答案(2021年Jvm面试题大全带答案)
  14. php cms后台管理系统,Phpcms v9管理后台首页内容自定义修改
  15. LeetCode : 390. 消除游戏(Elimination Game)分析和解答
  16. 笔记本模拟android,适用于PC的顶级7个免费Android模拟器在计算机PC笔记本电脑上运行Android应用...
  17. MoveIt! RViz Visual Tools设置
  18. jump大乱斗维护服务器,Jump大乱斗常见问题解决方法_Jump大乱斗常见问题解决及按键设置方法_飞翔教程...
  19. 关于皓月GOM登录器配置器批量生成详细说明
  20. qq物联网 android sdk,物联网在腾讯:QQ物联

热门文章

  1. 以前端的角度出发做好SEO需要考虑什么
  2. 怎么把移动硬盘挂载到linux,linux 怎么挂载移动硬盘
  3. homeassistant mysql_二、(可选)安装MariaDB替换homeassistant数据库
  4. 支付宝小程序物联网开发
  5. python - re
  6. C#模拟鼠标操作以及键盘输入
  7. 2C4T与4C4T在计算密集型任务下的效率对比
  8. 华为云Stack在政务云市场,稳!
  9. 飞扬的小鸟java分析_刷题总结——飞扬的小鸟(NOIP2014提高组)
  10. 怎样关闭计算机自动开机,电脑定时开机,教您电脑定时开机怎么取消