matlab 圆周率的近似计算 实验报告

合集下载

实验名称 圆周率的计算

实验名称  圆周率的计算

400000 315925 VC++ 3.159250
500000 395497 VC++ 3.163976
第四部分 级数方法
所用级数 计算项数 精确位数 所用工具 圆周率值 10000 3 MATLAB 3.14149265
第五部分 蒙特卡洛方法的应用
(填写所计算 的积分) (填写该积分 积分结果 的准确结果) (填写总的循 循环次数 环次数) (填写满足条 满足的次数 件次数) (填使用的软 所用工具 件) (用蒙特卡洛 积分的估计 方法估计的 值 值) 计算积分 (
第二部分 数值积分
所用函数
1/ 1 x2 1/ 1 x2 1/ 1 x2 1/ 1 x2 1/ 1 x2
积分方法 矩形公式 分割程度 100 所用工具 VC++ 圆周率值 3.131576
矩形方式 1000 VC++
3.140592
矩形方式 矩形方式 10000 100000 VC++ VC++
3.141494 3.141523
矩形方式 100000 VC++
3.141348
第三部分 蒙特卡洛方法
实验报告 ----计算科学实验室
所用函数 循环次数 满足的次数 所用工具 圆周率值
100000 79037 VC++ 3.141680
200000 158411 VC++ 3.168220
300000 237748 VC++ 3.169973
实验报告 ----计算科学实验室
实验名称: 圆周率的计算
姓名 实验类型 所用知识 魏萱 综合 设计 11112228 实验地点 学号 实验要求 选修 学时量 数学建模 数学软 运筹学 T5-207 6

数学实验(计算圆周率)

数学实验(计算圆周率)

数学实验报告一、 实验问题人们很早就发现圆的周长和直径的比是个常数,也就是我们都熟悉的圆周率π,那么这个常数的值究竟是多少哪?我国的伟大数学家祖冲之将π精确到3.1415926-3.1415927之间,西方的数学研究者也从来没有停止过对π的计算,那么在今天计算机技术如此发达的情况下,我们如何将π的近似值精确到更多位数哪?二、问题的分析π的精确度问题困扰大家已久,所以我们不妨在MATLAB 中采用循环来实现对π的更高位数的精确。

不妨以精确到小数点后9位为例。

我们知道 31arctan 21arctan 1arctan 4+==π 因此可以利用)(π)(321-1-2n 1-2n 1n 1-n 111-2n 431arctan 21arctan 4+=⎪⎭⎫ ⎝⎛+=∑∞=三、实验内容在MATLAB 中键入以下程序clear;n=0;r=1;p=0;k=-1;a=1;b=1;while r>=1.0e-9n=n+1;k=k*(-1);a=4*a;b=9*b;pl=p+k/(2*n-1)*(2/a+3/b);r=abs(4*(pl-p));fprintf('n=%.0f,p=%.10f\n',n,4*pl);p=pl;end四、问题求解结果和结论n=1,p=3.3333333333n=2,p=3.1172839506n=3,p=3.1455761317n=4,p=3.1408505618n=5,p=3.1417411974n=6,p=3.1415615879n=7,p=3.1415993410n=8,p=3.1415911844n=9,p=3.1415929813n=10,p=3.1415925796n=11,p=3.1415926705n=12,p=3.1415926497n=13,p=3.1415926545n=14,p=3.1415926534n=15,p=3.1415926536对泰勒级数,当|x |越小时级数收敛速度越快,这启示我们另外构造相关级数来逼近π。

拉格朗日插值多项式积分求圆周率近似Matlab实现

拉格朗日插值多项式积分求圆周率近似Matlab实现

Lagrange 插值多项式积分求圆周率近似摘要:公式1:y1=4/(1+x^2) 公式2:y2=4*sqrt(1-x^2) 分别对公式1、公式2求其拉格朗日插值多项式,再对其求0-1上的定积分来求圆周率π的近似值,并在Matlab 中通过画图来比较两个所求得的值与真实值π的偏差。

Lagrange 插值多项式:)()(l )(L 0i n i ni x f x x ∑==其中 )())(())(()())(())(()(l 11101110i n i i i i i i i n i i x x x x x x x x x x x x x x x x x x x x x -⋯⋯--⋯⋯---⋯⋯--⋯⋯--=+-+-)(i x f 为函数在i x 处的函数值,)(x L n 为Lagrange 插值多项式。

Matlab 实现:clc;clear;a=0;b=1;n=input('Enter a number n:'); %将0-1分割成n 节点,即n-1段 X=zeros(1,n); %用来放置节点x 的值P=zeros(1,n); %用来放置节点x 对应的函数值y1 Q=zeros(1,n); %用来放置节点x 对应的函数值y2 x=0;h=(b-a)/(n-1); %h 为步长for i=1:ny1=4/(1+x^2);y2=4*sqrt(1-x^2);X(i)=x;P(i)=y1;Q(i)=y2;x=x+h;endX;P;Q; %通过循环对X、P、Q进行赋值syms s;l=1;z1=0;z2=0;for j=1:1for k=2:nl=l*(s-X(k))/(X(j)-X(k));endz1=z1+l*P(j);z2=z2+l*Q(j);endfor j=2:nl=1;for k=1:j-1l=l*(s-X(k))/(X(j)-X(k));endfor k=j+1:nl=l*(s-X(k))/(X(j)-X(k));endz1=z1+l*P(j); %通过循环求的函数y1的Lagrange插值多项式z1 z2=z2+l*Q(j); %通过循环求的函数y2的Lagrange插值多项式z2 endI1=int(z1,s,0,1); % z1对s在0-1上求定积分I1=eval(I1) %用小数形式表示I1I2=int(z2,s,0,1); % z2对s在0-1上求定积分I2=eval(I2) %用小数形式表示I2x=3.10:0.0001:3.20;y0=pi;y1=I1;y2=I2;plot(x,y0,'r') %红线为圆周率π的真实值hold onplot(x,y1,'g') %绿线为公式1所求值hold onplot(x,y2,'b') %蓝线为公式2所求值运行结果:从图中可以看出,当n=6时绿线很接近红线即圆周率π的真实值,而蓝线则偏离较远,当n=11时,绿线基本与红线重叠,而蓝线相对之前来说也减小偏差。

圆周率的近似计算

圆周率的近似计算

西安交通大学数学实验报告实验题目:圆周率的近似计算填写报告日期:2013年6月3日一、实验目的1.学会用MATLAB 软件对圆周率进行数值积分计算,求出近似值;2.学会用蒙特卡罗法求解几何体体积;二、实验任务1.对P89页示例4,利用矩形、和抛物线形方法求近似值,并与书上的方法进行比较,看哪种方法收敛速度快?2.完成P92页练习5第2题.三、问题分析与求解分析:(1)梯形公式:依次取每个极小区间中点为i ξ,利用积分式∑⎰=→=+ni i f dx x xi 10max102)(11lim ξ i x ∆计算圆周率π的近似值 (2)矩形公式:依次取每个区间某一端点i x ,利用计算圆周率π的近似值。

(3)抛物线公式:利用计算圆周率π的近似值。

1()d ()Δ,nbi i ai f x x f x x =≈∑⎰2221()d ()d i i nbx ax i f x x f x x-==∑⎰⎰2. 蒙特卡罗法求解冰淇淋体积:在区域{(x,y,z)|x 2 + y 2 ≤ 1,0 ≤x,0≤y, 0≤ z ≤2}内随机取点,对落在冰淇淋体第一卦限内的点进行计数,则落在冰淇淋内的点数m 与落在长方体区域内的点数n 的比值等于体积的比值.故V (冰淇淋)= nm8。

(1)圆周率的数值积分计算矩形方法程序: n=5000 i=0:1/n:1; s=0;for k=1:length(i)s=s+(1/(1+i(k)^2))*1/n; end 4*s 运行结果:抛物线方法程序:n=5000;i=0:1/n:1;s=0;for k=2:length(i)/2s=s+((1/(1+i(2*k-2)^2))+(4/(1+i(2*k-1)^2))+(1/(1+i(2*k)^2))); end8/(6*n)*s运行结果:与书中方法对比,易得抛物线形公式收敛速度最快。

(2)蒙特卡罗法求冰淇淋体积程序:cs=0n=500000for i=1:na=rand(1,3);if a(1)^2+a(2)^2<=4*a(3)-(2*a(3))^2&a(1)^2+a(2)^2<=(2*a(3))^2;cs=cs+1;endendV=8*cs/n运行结果:评论:使用蒙特卡罗法计算冰淇淋的体积,存在较大的随机性,实验结果与理论值相差较大。

MATLAB数学实验

MATLAB数学实验

实验三 圆周率的计算学号: 姓名:XX一、 实验目的1. 本实验涉及概率论、定积分、三角函数等有关知识,要求掌握计算π的三种方法及其原理。

2. 学习和掌握数学软件MATLAB 的使用方法。

二、 实验内容圆周率是一个极其驰名的数。

从有文字记载的历史开始,这个数就引起了外行人和学者们的兴趣。

作为一个非常重要的常数,圆周率最早是出于解决有关圆的计算问题。

仅凭这一点,求出它的尽量准确的近似值,就是一个极其迫切的问题了。

事实也是如此,几千年来作为数学家们的奋斗目标,古今中外一代又一代数学家为此献出了自己的智慧和劳动。

回顾历史,人们对π的认识过程,反映了数学和计算技术发展情形的一个侧面。

π的研究,在一定程度上反映这个地区或时代的数学水平。

德国数学家康托说:“历史上一个国家所算的圆周率的准确程度,可以作为衡量这个国家当时数学发展水平的指标。

”直到19世纪初,求圆周率的值还是数学中的头号难题。

1. 圆周率的计算方法古人计算圆周率,一般是用割圆法。

即用圆的内接或外切多边形来逼近圆的周长。

Archomedes 用正96边形得到35位精度;刘徽用正3072边形得到5位精度;Ludolph V an Ceulen 用正2^62边形得到了35位精度。

这种基于几何的算法计算量大,速度慢,吃力不讨好。

随着数学的发展,数学家们在进行数学研究时有意无意得发现了许多计算圆周率的公式。

下面挑选一些经典的常用公式加以介绍。

除了这些经典公式外,还有很多其他公式和由这些经典公式衍生出来的公式,就不一一列举了。

1) Machin 公式2391a r c t a n451a r c t a n 16-=π ()121...753arctan 121753--++-+-=--n x x x x x x n n 这个公式由英国天文学教授John Machin 于1706年发现。

他利用这个公式计算到100位的圆周率。

Machin 公式每计算一项可以得到1.4位的十进制精度。

圆周率的近似计算

圆周率的近似计算

实验二π 的近似计算一.实验目的1.了解π 的计算历程2.理解和掌握近似计算π的数值积分法、蒙特卡罗(Monte Carlo )法、韦达公式、级数法、拉马努金公式、迭代法等方法的原理和过程。

3.学习、掌握Mathematica 和MATLAB 的应用环境及其基本功能,通过一些练习掌握其基本的操作及相关命令。

二.实验内容1.运用数值积分法来近似计算π的值。

2.利用蒙特卡罗(Monte Carlo )法来近似计算π的值。

3.利用韦达(VieTa )公式近似计算π4.利用级数来近似计算π:(1) 莱布尼茨级数 ∑∞=+-=1212)1(4n nn π (2) 欧拉级数∑∞==12216n n π 和∑∞=+=022)12(18n n π 5.利用拉玛努金(Ranmaunujan )公式来近似逼近计算π值n n n n n 396263901103)!()!4(980122104+=∑∞=π 三.实验准备及过程π 是人们经常使用的数字常数,对π的研究已经持续了2500多年,同时今天人们还在不断的探索研究进行中。

一般有以下几种近似计算方法。

1.数值积分法 半径为1的圆称为单位圆,它的面积等于π,只要计算出它的面积,计算出了π。

以单位圆的圆心为原点建立直角坐标系,则单位圆在第一象限内的部分是一个扇形,由曲线y= (x ∈[0,1])及两条坐标轴围成,它的面积S=π/4。

算出了S 的近似值,它的4倍就是π的近似值。

(1)梯形公式设分点x 1,…,x n-1将积分区间[a,b]分成n 等份,即x i =a+i(b-a)/n,0≤i ≤n 所有的曲边梯形的宽度都是h=(b-a)/n 。

记y i =f(x i )。

则第i 个曲边梯形的面积S i 近似地等于梯形面积(y i-1+y i )h/2,将所有这些梯形的面积加起来就得到S ≈(b-a)[y 1+y 2+…+y n-1+(y 0+y n )/2]/n这就是梯形公式。

matlab实验九 π的近似计算

matlab实验九  π的近似计算

实验九π的近似计算【实验目的】1.了解圆周率π的计算历程。

2.了解计算π的割圆术、韦达公式、级数法、拉马努金公式、迭代法。

3.学习、掌握MATLAB软件有关的命令。

【实验内容】利用韦达(VieTa)公式2=π计算π的近似值。

【实验准备】1.割圆术2.韦达(VieTa)公式3.利用级数计算π4.拉马努金(Ranmaunujan)公式5.迭代方法6.π的两百位近似值【实验重点】1. 圆周率的计算历程【实验难点】1. 圆周率的各种计算公式【实验方法与步骤】练习1 用刘徽的迭代公式1162062626224,32,1n n n n x x s x x ++=--== 计算π的近似值。

相应的MATLAB 代码为>>clear;>>x=1;>>for i=1:30>>x=vpa (sqrt(2-sqrt(4-x^2)),15)%计算精度为15位有效数字 >>S=vpa(3*2^i*x,10)>>end计算可得x = .517638********* S = 3.105828541x = .261052384440103 S = 3.132628613x = .130806258460286 S = 3.139350203x = .654381656435522e-1 S = 3.141031951x = .327234632529735e-1 S = 3.141452472x = .163622792078742e-1 S = 3.141557608x = .818120805246955e-2 S = 3.141583892x = .409061258232818e-2 S = 3.141590463x = .204530736067660e-2 S = 3.141592106x = .102265381402739e-2 S = 3.141592517x = .511326923724832e-3 S = 3.141592619x = .255663463951308e-3 S = 3.141592645x = .127831732236766e-3 S = 3.141592651 x = .639158661510219e-4 S = 3.141592653 x = .319579330795908e-4 S = 3.141592653 x = .159789665403054e-4 S = 3.141592654 x = .798948327021645e-5 S = 3.141592654 x = .399474163511619e-5 S = 3.141592654 x = .199737081755909e-5 S = 3.141592654 x = .998685408779670e-6 S = 3.141592654 x = .499342704389851e-6 S = 3.141592654 x = .249671352194927e-6 S = 3.141592654 x = .124835676097464e-6 S = 3.141592654 x = .624178380487320e-7 S = 3.141592654 x = .312089190243660e-7 S = 3.141592654 x = .156044595121830e-7 S = 3.141592654 x = .780222975609150e-8 S = 3.141592654 x = .390111487804575e-8 S = 3.141592654 x = .195055743902288e-8 S = 3.141592654 x = .975278719511453e-9 S = 3.141592654练习2 用韦达公式2=π计算π的近似值。

用MATLAB编程求π值

用MATLAB编程求π值

上海电力学院高级程序设计(C)课程设计报告题目:用MATLAB编程求π院系:计算机科学与技术学院专业年级:信息安全2012级学生姓名:涂桂花学号:20123333指导教师:魏为民2015年3月14日目录一、实验目的 (1)二、实验内容和步骤 (1)1. 操作环境 (1)2. 系统配置 (1)3. 操作步骤 (1)4. 程序源代码 (3)三、实验结果 (3)四.实验小结 (4)上 海 电 力 学 院实 验 报 告课程名称 实验项目 姓名 学号 班级 专业 同组人姓名 指导教师 魏为民 实验日期注意:报告文件名格式:学号_姓名_实验项目.doc ,电子版发邮件到afoe@ ,打印版按要求黑白打印。

一、实验目的1.了解MATLAB 编译器的功能并学会使用;2.学会使用MATLAB 语言编写简单的程序;3.用下列公式 求π值,并了解π的其他公式。

二、实验内容和步骤1.操作环境电脑型号 华硕 X550EP 笔记本电脑操作系统 Windows 7 旗舰版 64位 SP1 ( DirectX 11 ) 2.系统配置处理器 AMD E1-2100 APU with Radeon HD Graphics 双核 主板 华硕 X550EP ( AMD 未知(1536h) ) 内存4 GB ( DDR3 1600MHz )主硬盘 日立 HGST HTS545050A7E680 ( 500 GB / 5400 转/分 )显卡ATI Radeon HD 8210 ( 512 MB / 华硕 )显示器 奇美 CMO15A7 ( 15.7 英寸 ) 光驱 松下 DVD-RAM UJ8C2 S DVD 刻录机 声卡 瑞昱 High Definition Audio @网卡 瑞昱 RTL8168/8111/8112 Gigabit Ethernet Controller / 华硕3.操作步骤3.1打开MATLAB 编辑器,如图1-1所示。

西安交大 数学实验五 matlab计算圆周率pi

西安交大 数学实验五 matlab计算圆周率pi

并在1994年计算到了4044000000位.它的另一 种形式是
426880 10005 . (6n)!(545140134 13591409) n (n! )3 (3n)!(640320)3n n 0
1995 年 , 由 David Bailey,Peter Borwein 和 Simon Plouffe 共同发表了下面的圆周率计算公式 (简称BBP公式)
x5
b x
现对每个子区间再二等分,得到2n个子区间

b a
n 1 n x i 1 x i h f ( x )dx T2 n ( f (a ) 2 f ( x i ) 2 f ( ) f (b)) , 4 2 i 1 i 1 ba h , xk a kh k 0,1,2, , n n n n 1 h x i 1 x i 1 (Tn h f ( )) (Tn h f (a ih )) 2 2 2 2 i 1 i 1
2.圆周率的数值积分计算方法 1 1 1 1 0 1 x 2 dx 4 40 1 x 2 dx
表1给出的是不同等分区间 数计算出的 圆周率的近似值.
等分区间数n 10 20 50 100 500 1000 5000
圆周率的近似值
3.14242598500110 3.14180098689309 3.14162598692300 3.14160098692312 3.14159298692312 3.14159273692313 3.14159265692313

1
0
e
x2
dx
抛物线方法 y=inline('exp(-x.^2)'); quad(y,0,1) ans = 0.746826

matlab 圆周率

matlab 圆周率
nl n 2 , 特别取针的长度 l d / 2 时, md m
本实验涉及的方法
3、蒙特卡罗法——蒲丰(Buffon)掷针法
x表示针的中点与最近的一条平行线间的距离, 为针与平行线 的夹角.则0 x d 2 ,0 , 确定x 平面内一个矩形 .如图:
平面内一个矩形确定的夹角为针与平行线一条平行线间的距离表示针的中点与最近的针与平行线相交本实验涉及的方法3蒙特卡罗法蒲丰buffon掷针法针与平行线相交时针在平行线矩形区域内所组成的区域面积与矩形区域面积比即为针与直线相交的概率
实验三
圆周率的求法


• 设半径为1的圆的周长与圆的直径比为A; • 设半径为2的圆的周长与圆的直径比为B. • 请问A与B哪个大?
计算历程的几个阶段
3.分析方法时期 17世纪出现了数学分析,这锐利的工具 使得许多初等数学束手无策的问题迎刃 而解。 π 的计算历史也随之进入了一 个新的阶段。
计算历程的几个阶段
1593年,韦达给出
1671年,苏格兰数学家詹姆斯.格雷戈里 公开了他发现的公式: 3 5 7
arctan x x x3 x5 x7 (1 x 1)


2 nl md
本实验涉及的方法
3、蒙特卡罗法——蒲丰(Buffon)掷针法
• 随机生成一个针的中点与最近一条平行直线间的 距离x,满足0≤x≤d/2; • 随机生成针与平行线的夹角a,满足0≤a≤ ; • 判断x≤L/2*sin[a],若成立,则针与直线相交, 否则不相交。
本实验涉及的方法
计算历程的几个阶段
圆周长大于内接正四边形而小于外切正四边形
计算历程的几个阶段
在我国,首先是由数学家刘徽得出较精确的 圆周率。他采用割圆术。

MATLAB实验小结论文 数学建模

MATLAB实验小结论文 数学建模

MATLAB数学建模论文
题目求π的近似值的数学建模问题
学院材料科学与工程
专业班级
学生姓名
成绩
2010 年 05 月 20 日
摘要 这个学期,我们开了MATLAB 的课程,因为是一个人做所以作业选择书上一道相关的题目,并参考了一些资料。

任务
求π的近似值
分析 可以用 +-+-=7
1513114π
这个公式求π的近似值,直到某一项的绝对值小于10-6为止。

采用MATLAB 的循环来求
实验程序
x=1;
y=0;
i=1;
while abs(x)>=1e-6
y=y+x;
x=(-1)^i/(2*i+1);
i=i+1;
end
format long,pi=4*y
实验结果
pi =
3.141590653589692
收获
得出的π值已经非常接近真实的值了,学好MATLAB 可以提高我们的效率。

参考文献
数学模型(第三版)姜启源著高等教育出版社MATLAB实验。

西安交大数学实验五matlab计算圆周率pi-精选文档

西安交大数学实验五matlab计算圆周率pi-精选文档

3
5
7
2 n 1
并利用这个公式计算到了圆周率的100位.
1914年,印度数学家Srinivasa Ramanujan 表了下面的公式:
9801 ( 4 n )! ( 1103 26390 n ) 22 4 n 4 4 n 4 ( n ! ) 99 n 0

在1985年,Gosper用这个公式计算到了圆周率 的17500000位.
在中国
• 祖冲之: 在刘徽研究的基础上,进一步地发展, 经过既漫长又烦琐的计算,一直算到圆内接正 24576边形,而得到一个结论: • 3.1415926 < π < 3.1415927 同时得到π 的两个近似分数:约率为22/7; 密率为355/113。
• 他算出的 π 的8位可靠数字,不但在当时是最精 密的圆周率,而且保持世界记录九百多年。以致 于有数学史家提议将这一结果命名为“祖率”。
1 .圆周率 的幂级数计算方法
例1
利用 arctan x 的 Maclaurin 展开式 , 计算 的近似值 .

1 2 4 n 12 n 1 x x (1 ) x . 2 1 x
xx ( 1 )x arctan x x . 35 2 n 1
1989年,David 和 Gregory Chudnovsky 发表 了下面的公式
n 1 ( 1 ) ( 6 n )! 13591409 5451401 n 12 , 3 3 3 n n ( 3 n )! ( n ! ) 2 0 640320
并在1994年计算到了4044000000位.它的另一 种形式是
在中国
• 刘徽:公元263年前后,刘徽提出著名的 “割圆 术”求出了比较精确的圆周率。他发现:当圆内 接正多边形的边数不断增加后,多边形的周长会 越来越逼近圆周长,而多边形的面积也会越来越 逼近圆面积。于是,刘徽利用正多边形面积和圆 面积之间的关系,从正六边形开始,逐步把边数 加倍:正十二边形、正二十四边形,正四十八边 形……,一直到正三○七二边形,算出圆周率等 于三点一四一六,将圆周率的精度提高到小数点 后第四位。

matlab 圆周率的近似计算 实验报告

matlab 圆周率的近似计算 实验报告

开放性数学实验报告(2016 / 2017学年第 2学期)题目:基于MATLAB的圆周率近似计算专业通信工程学生姓名杨坤冯著豪周李鑫班级学号 B******** B******** B********指导教师赵礼峰指导单位南京邮电大学理学院日期 2017/5/20MATLAB圆周率的近似计算B16011115 杨坤 B16011110 冯著豪 B16011124周李鑫摘要:圆周率(Pi)是圆的周长与直径的比值,一般用希腊字母π表示,是一个在数学及物理学中普遍存在的数学常数。

π也等于圆形之面积与半径平方之比。

是精确计算圆周长、圆面积、球体积等几何形状的关键值。

在分析学里,π可以严格地定义为满足sin x = 0的最小正实数x。

计算圆周率一直是很多人的追求。

在电子计算机还没有发明的时候就有很多先贤用各种方法计算了圆周率的近似值最著名的应该是祖冲之,他计算出了圆周率的位数达到了小数点后七位。

该记录在世界范围内保持了八百年。

之后圆周率的计算进入了分析法时期,这一时期人们开始利用无穷级数或无穷连乘积求π,摆脱可割圆术的繁复计算。

无穷乘积式、无穷连分数、无穷级数等各种π值表达式纷纷出现,使得π值计算精度迅速增加。

在分析法的基础上,电子计算机的出现使得圆周率的计算精度大幅提高。

计算圆周率已经成为评判超级计算机的性能指标的项目之一。

如今个人计算机的性能也达到了一个极高的程度。

学习使用计算机计算圆周率可以帮助我们更好地学习matlab同时对数学也会有更深的理解。

关键词:圆周率计算;投点法;定积分计分法;幂级数;韦达公式一、问题分析计算圆周率有很多方法,不同方法之间自然也有好坏之分。

在强大的计算机性能的支持下,我们能使用不同的方法计算圆周率并且感受不同方法孰优孰劣。

首先我们需要了解不同的计算方法是怎么计算圆周率的,然后使用matlab编写代码帮助我们实现算法,计算出圆周率。

二、实验方法1.投点法:投点法,顾名思义就是通过投点计算圆周率。

MATLAB数学实验报告

MATLAB数学实验报告

数学实验报告一、实验目的1.学会用软件对矩阵进行一些数值运算。

2.学会用软件解线性方程组。

3.掌握逆矩阵的一种应用:整数逆矩阵加密、解密方法。

4.熟悉三维空间中的线性变换,加深对正交变换保持距离不变性的理解。

5.掌握泰勒级数在近似计算中的应用,从而理解数值逼近思想。

6.了解无理数e和欧拉常数C的由来历史。

7.了解圆周率π的计算历史,掌握计算圆周率π近似值的多种方法。

8.利用幂级数展开式计算无理数e和欧拉常数C的近似值。

9.学会根据实际问题建立线性规划模型。

10.掌握用软件求解线性函数极值问题。

11.学会建立0-1规划模型,掌握用软件求解0-1规划问题。

二、实验内容1.实验五:练习1:1.(1)程序代码[2,11,1;32,13;1,43,5][1;42][]()结果显示特解:(0.8571,-0.7143,0,0)基础解系:ξ1=(0.1429,-1.2857,1,0),ξ2=(0.1429,0.7143,0,1)通解:0.1429 0.1429 0.8571-1.2857 0.7143 -0.7143k1 1 + k2 0 + 0 12єR0 10感想与反思:A.通过解这道题,熟练掌握了用软件解线性方程组的方法B.手工解线性方程组非常繁琐,通过这道题,进一步认识到的强大2.实验五.练习2.24*4的加密锁:程序代码[3 7 15 22;2 5 11 17;3 6 13 21;9 18 36 46](q)(q)[68 105 108 105 103 101 110 99 101 32 105 115 116 32 116 104 101 32 109 111 116 104 101 114 32 111 102 32 115 117 99 99 101 115 115 32](w,4,9)(q)*b结果显示6*6的加密锁代码[2 3 4 2 1 6;7 7 11 9 2 17;4 6 9 5 2 12;8 7 12 9 2 17;3 3 4 2 1 6;6 4 6 6 1 2](q)(q)[68 105 108 105 103 101 110 99 101 32 105 115 116 32 116 104 101 32 109 111 116 104 101 114 32 111 102 32 115 117 99 99 101 115 115 32](w,6,6)*a(q)*b感想与反思:A.通过解这道题,熟练掌握了逆矩阵的一种应用:整数逆矩阵加密、解密方法B.用矩阵就可以完成对于信息的加密和解密,体会到了矩阵和的神奇C.在选择密码锁矩阵时可以对于一个单位矩阵进行多次初等变换,便于找到3.实验七,练习2.1程序代码单数阶导数在0处的值为零。

matlab数学实验报告

matlab数学实验报告

MATLAB数学实验报告指导老师:班级:小组成员:时间:201_/_/_Matlab第二次实验报告小组成员:1题目:实验四;MATLAB选择结构与应用实验目的:掌握if选择结构与程序流程控制;重点掌握break;return;pause语句的应用..问题:问题1:验证“哥德巴赫猜想”;即:任何一个正偶数n>=6均可表示为两个质数的和..要求编制一个函数程序;输入一个正偶数;返回两个质数的和..问题分析:由用户输入一个大于6的偶数;由input语句实现..由if判断语句判断是否输入的数据符合条件..再引用质数判断函数来找出两个质数;再向屏幕输出两个质数即可..编程:function z1;z2=geden;n=input'please input n'if n<6disp'data error';returnendif modn;2==0for i=2:n/2k=0;for j=2:sqrtiif modi;j==0k=k+1;endendfor j=2:sqrtn-iif modn-i;j==0k=k+1;endendif k==0fprintf'two numbers are'fprintf'%.0f;%.0f';i;n-ibreakendendend结果分析:如上图;用户输入了大于6的偶数返回两个质数5和31;通过不断试验;即可验证哥德巴赫猜想..纪录:if判断语句与for循环语句联合嵌套使用可使程序结构更加明晰;更快的解决问题..2题目:实验四;MATLAB选择结构与应用实验目的:用matlab联系生活实际;解决一些生活中常见的实际问题..问题:问题四:在一边长为1的四个顶点上各站有一个人;他们同时开始以等速顺时针沿跑道追逐下一人;在追击过程中;每个人时刻对准目标;试模拟追击路线;并讨论.. (1)四个人能否追到一起(2)若能追到一起;每个人跑过多少路程(3)追到一起所需要的时间设速率为1问题分析:由正方形的几何对称性和四个人运动的对称性可知;只需研究2个人的运动即可解决此问题..编程:hold onaxis0 1 0 1;a=0;0;b=0;1;k=0;dt=0.001;v=1;while k<10000d=norma-b;k=k+1;plota1;a2;'r.';'markersize';15;plotb1;b2;'b.';'markersize';15;fprintf'k=%.0f b%.3f;%.3f a%.3f;%.3f d=%.3f\n';k;b1;b2;a1;a2;da=a+b1-a1/d*dt;b2-a2/d*dt;b=b+b2-a2/d*dt;-b1-a1/d*dt;if d<=0.001breakendendfprintf'每个人所走的路程为:%.3f';k*v*dtfprintf'追到一起所需要的时间为%.3f';k*dt结果分析:上图为2人的模拟运动路线;有对称性可解决所提问题..-上图为运算过程和运算结果..四个人可以追到一起;走过的路程为1.003;时间也为1.003.纪录:此题利用正方形和运动的对称性可以简便运算..3题目:实验八;河流流量估计与数据插值目的:由一些测量数据经过计算处理;解决一些生活实际问题..问题:实验八上机练习题第三题:瑞士地图如图所示;为了算出他的国土面积;做以下测量;由西向东为x轴;由南向北为y轴;从西边界点到东边界点划分为若干区域;测出每个分点的南北边界点y1和y2;得到以下数据mm..已知比例尺1:2222;计算瑞士国土面积;精确值为41288平方公里..测量数据如下:x=7.0 10.5 13.0 17.5 34 40.5 44.5 48 56 61 68.5 76.5 80.5 91 96 101 104 106 111.5 118 123.5 136.5 142 146 150 157 158 ;y1=44 45 47 50 50 38 30 30 34 36 34 41 45 46 43 37 33 28 32 65 55 54 52 50 66 66 68;y2=44 59 70 72 93 100 110 110 110 117 118 116 118 118 121 124 121 121 121 122 116 83 81 82 86 85 68;问题分析:先由题目给定的数据作出瑞士地图的草图;再根据梯形法;使用trapz语句;来估算瑞士国土的面积..编程:x=7.0 10.5 13.0 17.5 34 40.5 44.5 48 56 61 68.5 76.5 80.5 91 96 101 104 106 111.5 118 123.5 136.5 142 146 150 157 158;y1=44 45 47 50 50 38 30 30 34 36 34 41 45 46 43 37 33 28 32 65 55 54 52 50 66 66 68;y2=44 59 70 72 93 100 110 110 110 117 118 116 118 118 121 124 121 121 121 122 116 83 81 82 86 85 68;plotx;y1;'r.';'markersize';15;plotx;y2;'r.';'markersize';15;axis0 160 0 135grid;hold ont=7:158;u1=splinex;y1;t;u2=splinex;y2;t;plott;u1plott;u2s1=trapzt;u1;s2=trapzt;u2;s=s2-s1*2222*22222/10000000;fprintf'S=%.0f';s结果分析:上图为由所给数据绘制出的瑞士地图..上图为运算结果;计算出瑞士的国土面积为42472平方公里;与准确值41288较为接近..纪录:使用梯形分割的方法;trapz语句可以方便计算不规则图形面积;但存在一定误差..4题目:实验七:圆周率的计算与数值积分目的:将数值积分最基本的原理应用于matlab之中;解决一些与积分有关的问题..问题:实验七上机练习题第一题:排洪量某河床的横断面如图7.3所示;为了计算最大排洪量;需要计算其断面积;试根据所给数据m用梯形法计算其断面积..问题分析:河床断面可近似分割成若干曲边梯形;近似处理把它们当做梯形来计算面积可使问题得到简化..编程:clc;clear;x=0 4 10 12 15 22 28 34 40;y=0 1 3 6 8 9 5 3 0;y1=10-y;plotx;y1;'k.';'markersize';15;axis0 40 0 10;grid;hold ont=0:40;u=splinex;y1;t;plott;u;s=40*10-trapzt;u;fprintf's=%.2f\n';s结果分析:上图为河床的断面图..上图为计算结果面积约为180.70平方米..纪录:使用梯形法计算不规则图形面积十分简便易行..5题目:实验七:圆周率的计算与数值积分目的:使用matlab计算解决一些有关积分的问题..问题:实验七上机练习题第三题:从地面发射一枚火箭;在最初100秒内记录其加速度如下;试求火箭在100秒时的速度..Ts=0 10 20 30 40 50 60 70 80 90 100;Am/s*s=30.00 31.63 33.44 35.47 37.75 40.33 43.29 46.69 50.67 54.01 57.23;问题分析:加速度为速度的微分;已知微分求积分;类似于面积问题;可使用梯形法来计算..编程:clc;clear;x=0 10 20 30 40 50 60 70 80 90 100;y=30.00 31.63 33.44 35.47 37.75 40.33 43.29 46.69 50.6754.01 57.23;plotx;y;'k.';'markersize';15;axis0 100 20 60;grid;hold ons=0:10:100;z=splinex;y;s;plots;y;v=trapzx;y;fprintf'v=%.2f\n';v结果分析:上图为加速度变化图..上图为计算结果;求得火箭在100秒时速度约为4168.95m/s..纪录:梯形法可以推广解决许多已知微分求积分的其他问题..6题目:实验七:圆周率的计算与数值积分目的:计算曲线弧长闭曲线周长可使用微元法;ds=sqrtdx^2+dy^2;在转化微积分问题;累加即可得到结果..问题:实验七上机练习题第三题:计算椭圆想x^2/4+y^2=1的周长;使结果具有五位有效数字..问题分析:编程:s=0;dx=0.001;for x=0:0.001:1.999dy=1.-x+0.001.^2/4-1.-x.^2/4;ds=sqrtdx.^2+dy.^2;s=s+ds;ends=4*s;fprintf'the length is'fprintf'%.4f';s结果分析:上图为计算结果;给定椭圆的周长约为9.1823五位有效数字纪录:计算不规则曲线弧长;可使用微元法;划分为若干小的看做直角三角形;利用勾股定理解决..7题目:实验九人口预测与数据拟合目的:掌握一些曲线拟合的方法;了解曲线拟合常用函数..问题:用电压U=10v的电池给电容器充电;t时刻的电压Vt=U-U-V0exp-t/τ;其中V0是电容器的初始电压;τ是充电常数;由所给数据确定V0和τ..t=0.5 1 2 3 4 5 7 9;V=3.64 3.52 2.74 1.78 1.34 1.01 0.57 0.37;问题分析:题中已给出函数关系式;为指数函数曲线拟合;将所给函数式整理可得标准的exp形函数曲线;从而便于解决..编程:t=0.5 1 2 3 4 5 7 9;V=3.64 3.52 2.74 1.78 1.34 1.01 0.57 0.37;plott;V;'k.';'markersize';20;axis0 10 0 4;grid;hold onpause0.5n=8;a=sumt1:n;b=sumt1:n.*t1:n;c=sumlogV1:n;d=sumt1:n.*logV1:n;A=n a;a b;B=c;d;p=invA*Bx=0:10;y=expp1+p2*x;plotx;y;'r-';'linewidth';2结果分析:上图为电压与时间关系图..上图为计算结果;即U-V0=1.4766;所以V0=8.5234;-1/τ=-0.2835;所以τ=3.5273纪录:曲线拟合的一个重难点是选择合适的曲线函数;才能提高拟合度..8题目:实验七圆周率的计算与数值积分目的:拓展圆周率的各种计算方法;掌握其他数值的近似计算方法..问题:实验七练习2:计算ln2的近似值精确到10的-5次方(1)利用级数展开的方法来计算(2)利用梯形法计算(3)利用抛物线法问题分析:级数展开;梯形法;抛物线法是常见的近似运算方法..编程:1级数展开的方法clc;clear;n=0;r=1;p=0;k=-1;while r>=0.1e-5n=n+1;k=k*-1;p1=p+k/n;r=absp1-p;fprintf'n=%.0f;p=%.10f\n';n;p1;p=p1;end2梯形法clc;clear;f=inline'1./x';x=1:0.1:2;y=fx;p=trapzx;y;fprintf'p=%.6f\n';p3抛物线法clc;clear;f=inline'1./x';a=1;b=2;n=1;z=quadf;a;b;fprintf'z=%.10f\n';z结果分析:(1)级数展开的方法(2)梯形法3抛物线法纪录:级数展开法;梯形法;抛物线法;计算近似值时应合理利用..梯形法和抛物线法不易提高精确度;级数展开法可以提高精确度..9题目:实验八河流流量估计与数据插值目的:掌握求插值多项式的方法;并利用此计算近似值..问题:已知y=fx的函数表如下x=0.40 0.55 0.65 0.80 0.90 1.05;y=0.41075 0.57815 0.69675 0.88811 1.02652 1.25382;求四次拉格朗日插值多项式;并由此求f0.596问题分析:利用所给函数表可计算拉格朗日插值多项式..编程:function p=lagrangex;yL=lengthx;a=onesL;for j=2:La:;j=a:;j-1.*x';endx=inva*y';for i=1:Lpi=xL-i+1;endx=0.40 0.55 0.65 0.80 0.90 1.05;y=0.41075 0.57815 0.69675 0.88811 1.02652 1.25382; plotx;y;'k.';'markersize';15axis0 2 0 2grid;hold on;p=lagrangex;y;t=0:0.1:1.5;u=polyvalp;t;plott;u;'r-'a=polyvalp;0.596结果分析:上图为所求结果;估算值和插值多项式..纪录:插值多项式是一项十分实用的方法..10题目:求正整数n的阶乘:p=1*2*3*…*n=n;并求出n=20时的结果目的:练习使用循环变量解决数学问题问题:对程序:Clear;clc;n=20;p=1;for i=1:np=p*i;fprintf’i=%.0f;p=%.0f\n’;i;pend进行修改使它:利用input命令对n惊醒赋值问题分析:题中给出程序中“n=20”修改;使用input命令;讲题中的输出命令放出循环之外..编程:clear;clc;n=input'n=';p=1;for i=1:np=p*i;endfprintf'i=%.0f;p=%.0f\n';i;p结果:n=20i=20;p=2432902008176640000>>结果分析:使用input命令可以实现人机对话;使用户自由赋值;输出语句在程序中的位置对输出的结果有很大的影响;在循环内部可以在计算过城中不断输出结果;在循环之外则可以控制只输出最后结果..11题目:对于数列{√2};n=1;2;…;求当其前n项和不超过1000时的n的值及合的大小..目的:运用条件循环解决文帝个项数的循环程序求解;问题:对程序:clear;clc;n=0;s=0;while s<=1000n=n+1;s=s+sqrtn;fprintf’n=%.0f;s=%.4f\n’;n;send问题分析:题中所给程序中的限制变量为上次循环之后的s;导致s超过上限后仍有一次的循环;若把循环变量改为这次的s;则可以避免这种情况的发生..编程:clear;clc;n=0;s=0;while s+sqrtn<=1000n=n+1;s=s+sqrtnfprintf'n=%.0f;s=%.4f\n';n;send结果:……s =970.8891n=128;s=970.8891s =982.2469n=129;s=982.2469s =993.6487n=130;s=993.6487>>结果分析:从结果中可以看出;最后一步为我们需要的答案;从这道题我们可以得出循环变量对一道编程的重要性..。

matlab 蒙特卡罗法 圆周率

matlab 蒙特卡罗法 圆周率

matlab 蒙特卡罗法圆周率蒙特卡罗法是一种通过使用随机数来近似计算数学问题的方法。

它基于蒙特卡罗模拟,其中随机样本被用来估计问题的解。

蒙特卡罗法在各个领域都有广泛的应用,其中一个重要的应用就是计算圆周率。

圆周率(π)是数学中一个非常重要的常数,它的值约等于3.14159。

在传统的方法中,计算π的方法比较复杂,而使用蒙特卡罗法可以得到一个相对精确的近似值。

要使用蒙特卡罗法计算圆周率,我们可以考虑一个单位正方形,并在其中绘制一个半径为1的单位圆。

通过生成大量的点,并判断这些点是否在单位圆内,我们可以估计圆的面积与正方形的面积之间的比例。

由于圆的面积为πr^2,而正方形的面积为边长的平方(即1^2=1),我们可以利用这个比例来估计圆周率。

具体而言,我们可以生成一组随机的点,然后判断每个点是否位于单位圆内。

对于一个给定的点(x,y),如果它满足x^2 + y^2 <=1的条件,则它在单位圆内。

我们可以计算在单位圆内的点的数量,并将其除以总的点的数量,得到一个比例。

由于单位圆半径为1,正方形边长为1,我们可以利用这个比例来估计圆周率。

例如,我们生成1000个点,并发现有800个点位于单位圆内。

那么我们可以估计圆周率为800/1000=0.8。

当我们生成更多的点时,使用相同的方法计算比例并得到更准确的估计值。

为了更好的近似值,我们可以增加生成的点的数量。

当我们生成更多的点时,得到的估计值将越来越接近真实值。

这是因为随着点的数量的增加,我们对单位圆内的点的分布有更好的覆盖,并且减少对随机性的依赖。

使用MATLAB编程语言,我们可以很容易地实现蒙特卡罗法来计算圆周率。

下面是一个简单的MATLAB代码示例:```matlabnumPoints = 10000; %生成的点的数量countPointsInsideCircle = 0; %圆内点的数量for i = 1:numPointsx = rand(); %生成一个随机的x坐标y = rand(); %生成一个随机的y坐标if x^2 + y^2 <= 1countPointsInsideCircle = countPointsInsideCircle + 1;endendestimatedPi = 4 * countPointsInsideCircle / numPoints; %估计的圆周率disp(['估计的圆周率为:', num2str(estimatedPi)]);```在这个例子中,我们生成了10000个点,并统计了有多少个点位于单位圆内。

圆周率10000位matlab调取

圆周率10000位matlab调取

圆周率10000位matlab调取一计算原理一个正方形内部内切一个圆,设圆的半径为r,则正方体的边长为2r。

在该正方体内部,随机投掷n个均匀分布的点,统计投掷点在圆内的与总点数的比例,得出圆的近似面积,就是π的值。

理论上,n越大,实验次数越多,计算得出的π的值就越精准。

二所使用的计算公式圆形参数方程:x = a=r*cosθ;y = b+r*sinθ;两点之间距离公式:三完整代码%蒙特卡洛算法求解pi的值%初始化数据:p为投掷点的个数,(a,b)为圆心,t为在在圆内的投掷点个数p = 10000;r = 1;a = 1;b = 1;t = 0;%绘制圆theta = 0:pi/20:2*pi;x = a+r*cos(theta);y = b+r*sin(theta);plot(x,y);title('蒙特卡洛算法求pi的值');hold on%使图像持续存在%绘制点 t为在圆内的随机点数for i = 1:p%循环p次,生成p个点p_x = rand*2;%随机生成点p在x轴的坐标p_y = rand*2;%随机生成点p在y轴的坐标%如果该点在圆内,则为绿色且t的计量加一,不在则为红色 if (p_x-1)^2 + (p_y-1)^2 < 1plot(p_x,p_y,'.','Colo',[0,0,1]);t = t+1;elseplot(p_x,p_y,'.','Colo',[1,0,0]);endend%计算圆的近似面积,s为圆的近似面积,因为r = 1,则pi = s s = (t/p)*4;pi = s;四实验结果1.随机投掷点数:10000运行结果:π = 3.141600误差:0.00000742.随机投掷点数:200000运行结果:π = 3.142804误差:0.0012473.随机投掷点数:500000运行结果:π = 3.142476误差:0.0008834。

matlab 蒙特卡罗法 圆周率

matlab 蒙特卡罗法 圆周率

Matlab是一种功能强大的数学软件,它可以用于数值计算、数据分析、图形绘制等各种数学和工程应用。

而蒙特卡罗法是一种基于随机抽样的计算方法,适用于各种数值计算问题。

在本文中,我们将探讨如何利用Matlab来使用蒙特卡罗法来计算圆周率。

1. 蒙特卡罗法的原理蒙特卡罗法是一种基于随机抽样的计算方法,其原理是通过大量的随机抽样来逼近一个问题的解。

具体来说,对于一个给定的概率分布函数,我们可以利用随机数生成器来产生服从该分布的随机数,然后利用这些随机数来估计该分布的各种性质。

在计算圆周率的问题中,我们可以利用蒙特卡罗法来估计圆的面积与正方形的面积的比值,从而得到圆周率的近似值。

2. 利用Matlab实现蒙特卡罗法计算圆周率在Matlab中,我们可以利用内置的随机数生成器来产生均匀分布的随机数。

假设我们要计算一个半径为1的单位圆的面积,则我们可以在一个边长为2的正方形内生成大量的均匀分布的随机点,然后统计落在圆内的随机点的个数。

具体的算法如下:```matlab定义随机点的个数N = 1e6;生成均匀分布的随机点x = rand(N,1)*2-1;y = rand(N,1)*2-1;统计落在圆内的随机点的个数count = sum(x.^2 + y.^2 <= 1);计算圆周率的近似值pi_approx = 4 * count / N;```在上述代码中,我们首先定义了随机点的个数N,并利用rand函数生成了N个服从均匀分布的随机点x和y。

然后我们统计了落在单位圆内的随机点的个数count,并利用count和N的比值来估计圆周率的近似值。

3. 结果分析与讨论通过运行上述代码,我们可以得到一个近似值pi_approx。

我们可以通过多次运行这个算法,并取多次结果的平均值来得到一个更加稳定的近似值。

另外,我们也可以通过增加随机点的个数N来提高近似值的精度。

事实上,蒙特卡罗法的收敛速度是随着N的增大而逐渐减小的,因此要想得到一个较高精度的近似值,需要投入更多的计算资源。

Pi的近似计算

Pi的近似计算

2011—2012学年第3学期合肥学院卓越工程师班实验报告课程名称:工程应用数学B实验名称:π的近似计算实验类别:设计性□学号: 1105011006 姓名:赵静专业班级: 11级自动化卓越版实验时间: 2012年10月6日指导教师:王贵霞成 绩:一. 实验目的通过级数、Matlab 等方法计算π的近似值,熟悉级数的应用以及回顾Matlab 的知识。

二. 实验内容使用多种方第一种:利用⎩⎨⎧<≤<≤-=ππx xx x f 00)(的Fourier 级数计算。

第二种:利用Matlab 近似求π,在Matlab 界面中打出代码。

第三种:利用C 语言近似求π。

三. 实验步骤(具体实施过程)1、设⎩⎨⎧<≤<≤-=ππx x x x f 00)( 将)(x f 展成Fourier 级数,利用特殊值近似计算π。

2、通过上网查资料等方式获取Matlab 代码。

3、利用以下公式编写程序近似求π。

)12(53219753432175332153213112+⨯⋯⋯⨯⨯⨯⋯⋯⨯⨯+⋯⋯+⨯⨯⨯⨯⨯⨯+⨯⨯⨯⨯+⨯⨯++=n nπ四.实验程序(经调试后正确的源程序)1、意见)(x f 满足Dirichlet 条件 ππππ21)1(cos )(1n nxdx x f a n n --==⎰-n nxdx x f b n n 1)1(sin )(1+--==⎰πππ4)(10ππππ==⎰-dx x f a故⎩⎨⎧<≤<≤-=-+--+=+++∞=∞=∑∑ππππx x x nx n nx n nx b nx a a n n n n n n 000]sin )1(cos 1)1([4)sin cos (211210当0=x 时,041)1(12=+--∑∞=n n n ππ 即∑∞=-=--12241)1(n n n π将其展开可得 472523222222π-=⋯⋯+-+-+-+-2、利用Matlab 求π近似值代码如下: >> a(1)=sqrt(3);b(1)=3*sqrt(3)/2;for i=2:6a(i)=sqrt(2-sqrt(4-a(i-1)^2));b(i)=3*2^(i-2)*a(i);c(i)=2*b(i)-b(i-1);endn=[3,6,12,24,48,96];size(b)result=[n;a;b;c]3、程序代码如下:五.实验结果(列举2-3个)1、由上知:)7252322(42222⋯⋯++++=π 所以当1=n 时,8284271247.2≈π 当3=n 时,98142397.2≈π 当5=n 时,0346151137.3≈π 当7=n 时,0613974251.3≈π…… ……2、Matlab 运行结果如下: ans =1 6 result =3.0000 6.0000 12.0000 24.0000 48.0000 96.0000 1.7321 1.0000 0.5176 0.2611 0.1308 0.0654 2.5981 3.0000 3.1058 3.1326 3.1394 3.1410 0 3.4019 3.2117 3.1594 3.1461 3.1427六.实验总结(围绕心得体会、创新之处、改进方案等方面)七.教师评语教师签名:2012 年10 月6 日。

用MATLAB近似计算pi的报告

用MATLAB近似计算pi的报告

2012—2013学年第1学期合肥学院卓越工程师班实验报告课程名称:工程应用数学B实验名称:π的近似值计算实验类别:综合性专业班级: 11级自动化卓越计划班实验时间: 2012.10.12 组别:第八组指导教师:王贵霞一. 小组成员(具体分工)姓名学号具体分工陆士明 1105011021 主要程序的编写关俊宏 1105011042 案例分析与解决方案周健 1 1105011034 对实验结果分析及汇总二. 实验目的通过计算π的近似值,熟悉matlab中关于级数的运算。

三. 实验内容1:用级数来求π的近似值;2:在c语言中求出π的近似值;四. 实验步骤(具体实施过程)方案一:用级数来求π的近似值利用基于arctan x的级数来算π的近似数:π=161arctan5—41arctan239=16()()210011142121239k kkk kk k∞∞+==---++∑∑。

方案二:用级数求π的近似值利用高斯公式:π=481arctan18+321arctan57—201arctan239计算π的近似值。

方案三:在c语言中求出π的近似值在visual c++中输入程序,利用拉马努金公式:1π=229801()()444!110326390396!nnn nn∞=+∑ 计算π的近似值。

通过输入不同的n的值得到不同精确度的π的值。

五.实验程序(经调试后正确的源程序)方案一:利用基于arctan x的级数来算 的近似数>> clear;>> digits(160);>> syms x>> x=sym(0);>> for k=1:15kx=x+sym(-1)^sym((k)-sym(1))/(sym(2)*sym(k)-sym(1))*(sym(16)/sym(5)^(sym(2)*sym(k)-sym(1))-sym(4 )/sym(239)^(sym(2)*sym(k)-sym(1)));vpa(x,40)vpa(vpa(pi,60)-x,5)end方案二:利用高斯公式clear;digits(160);syms xx=sym(0);for k=1:20kx=x+sym(-1)^(sym(k)-sym(1))/(sym(2)*sym(k)-sym(1))*(sym(48)/sym(18)^(sym(2)*sym(k)-sym(1))+sym( 32)/sym(57)^(sym(2)*sym(k)-sym(1))-sym(20)/sym(239)^(sym(2)*sym(k)-sym(1)));vpa(x,40)vpa(vpa(pi,60)-x,5)End方案三:在visual C++ 中利用拉马努金公式#include <stdio.h>#include <math.h>double fun(int n){double s1,s2=1.0,s3=1.0,s4,s;s1=(2*sqrt(2))/9801;int i;for(i=1;i<=n;i++){s2=s2*i;}int j;for(j=1;j<=4*n;j++){s3=s3*j;}s4=(1103+26390*n)/pow(396,4*n);s=s1*s3/pow(s2,4)*s4;return s;}double main(){int n;double s;printf("请输入所要计算前多少项的和:n\n");scanf("n=%d",&n);s=fun(n);printf("%lf\n",1.0/s);}六.实验结果(列举2-3个)从方案一中可以知道:当输入不同的k值时可以得到不同精度的π值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

开放性数学实验报告
(2016 / 2017学年第 2学期)
题目:基于MATLAB的圆周率近似计算
专业通信工程
学生姓名杨坤冯著豪周李鑫
班级学号 B******** B******** B********
指导教师赵礼峰
指导单位南京邮电大学理学院
日期 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. 定积分积分法
∫11+x
2
1
dx =π4
π
=4∫11+x 2
dx 10
将区间[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)
相比于投点法,该方法以较高的效率使用了计算机资源达到了更高的精度,当n=100,000,000时,精度达到了小数点后十二位。

3.幂级数
幂级数的方法有很多,我们学习了使用arctan(x)的Maclaurin展开式计算π的近
似值,π=4arctan1=4(1−1
3+1
5
−⋯+(−1)n+1
2n−1
+⋯
代码如下
n=10; %展开次数
s=0;
digits(50) %计算精度
for k=1:n
s=s+4*(-1)^(k+1)/(2*k-1);
end
vpa(s,20)
该计算方法能比较准确地得出较高精度的圆周率的近似值4.韦达公式
根据韦达在1593年给出的公式2
π=√2
2
*
√2+√2
2

代码如下: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=100时所得结果精确到100位的输出值:
3.1415926535 8979323846 2643383279 5028841971 6939937510 5820974944 5923078164 0628620899 8628034825 342117068
三、实验感想
圆周率的近似计算一直是一种挑战,经过这次研究,我们更加深刻地体会到了数学的魅力,同时也对matlab更加熟悉。

在不断的学习中,我们成长了很多。

参考文献:
【1】杨振华,郦志新《数学实验》北京:科学技术出版社,2010.2
【2】赵洪牛《高等数学》北京:高等教育出版社
【3】百度百科:圆周率。

相关文档
最新文档