2021年数学实验报告圆周率的计算mathematica

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

数学试验汇报
试验序号: 2 日期: 月日
试验结果汇报及试验总结:
一、数值积分法计算π
因为单位圆半径为1, 它面积等于π, 所以只要计算出单位圆面积, 就算出了π。

在坐标轴上画出以圆点为圆心, 以1为半径单位圆, 则这个单位圆在第一象限部分是一个扇形, 而且面积是单位圆1/4, 于是, 我们只要算出此扇形面积, 便能够计算出π。

而且单位精度可能会影响计算结果, 下面将给出不一样n计算所得结果并讨论差异。

1.当n=1000时
命令:
n=1000;y[x_]:=4/(1+x*x);
s1=(Sum[y[k/n],{k,1,n-1}]+(y[0]+y[1])/2)/n;
s2=(y[0]+y[1]+2*Sum[y[k/n],{k,1,n-1}]+4*Sum[y[(k-1/2)/n],{k,1,n}])/( 6*n);
Print[{N[s1,20],N[s2,30],N[Pi,30]}];
结果以下:
2.当n=5000时
命令:
n=5000;y[x_]:=4/(1+x*x);
s1=(Sum[y[k/n],{k,1,n-1}]+(y[0]+y[1])/2)/n;
s2=(y[0]+y[1]+2*Sum[y[k/n],{k,1,n-1}]+4*Sum[y[(k-1/2)/n],{k,1,n}]) /(6*n);
Print[{N[s1,20],N[s2,30],N[Pi,30]}];
运行结果:
3.当n=10000时
命令:
n=10000;y[x_]:=4/(1+x*x);
s1=(Sum[y[k/n],{k,1,n-1}]+(y[0]+y[1])/2)/n;
s2=(y[0]+y[1]+2*Sum[y[k/n],{k,1,n-1}]+4*Sum[y[(k-1/2)/n],{k,1,n}])/( 6*n);
Print[{N[s1,20],N[s2,30],N[Pi,30]}];
Plot[{4(1-x*x)},{x,0,1}]
运行结果:
4. 结果分析: 当数值积分法得到 近似值为3.338328,
能够看出, 用这种方法计算所得到 值是相当正确, n 越大, 计算出来扇形面积近似值就越靠近 正确值。

二、 泰勒级数法计算π
利用反正切函数泰勒级数
+--+-+-=--1
2)1(53arctan 1215
3k x x x x x k k 来计算π。

命令:
T[x_,n_]:=Sum[(-1)^k*x^(2k+1)/(2k+1),{k,0,n}];
N[4*T[1,0],20]//Timing
T[x_,n_]:=Sum[(-1)^k*x^(2k+1)/(2k+1),{k,0,n}];
Print[N[4*(T[1/2,260]+T[1/3,170]),150]];
Print[N[16*(T[1/5,110]-4*T[1/239,30]),150]];
Print[N[Pi,150]]
运行结果:
结果分析: 从试验过程能够看出, 这种方法花费时间很长。

原因是当x=1时得到展开式收敛太慢。

要使泰勒级数收敛得快, 轻易想到, 应该使x绝对值小于1, 最好是远比1小。

比如, 因为, 所以我们能够计算出π值, 从而得到π值。

这么, 就使得收敛速度加紧。

改善后能够看出, 泰勒级数法得到结果比数值分析法正确到小数点后更多位。

三、蒙特卡罗法计算
在数值分析法中, 我们利用求单位圆1/4面积来得到, 从而得到。

单位圆1/4是一个扇形, 它是边长为1单位正方形一部分, 单位正方形面积。

只要能够求出扇形面积π在正方形面积中所占百分比, 就能立刻得到, 从而得到π值。

下面问题归结为怎样求π值, 这就用到了一个利用数来处理此种问题蒙特卡罗法, 其原理就是在正方形中投入很多点, 是所投每个点落在正方形中每一个位置机会均等, 看其中有多少个点落在扇形内。

降落在扇形内点个数与所投店总数比能够近似作为π近似值。

命令:
n=10000;p={};
Do[m=0;
Do[x=Random[];y=Random[];
If[x^2+y^2<=1,m++],{k,1,n}];
AppendTo[p,N[4m/n]],{t,1,10}];
Print[p];
Sum[p[[t]],{t,1,10}]/10
运行结果:
结果分析:
从运行结果来看, 蒙特卡罗法计算结果为 3.14668, 即使正确度不太高, 但运行时间短, 在很多场所下, 尤其是在对正确度要求不高情况下很有用。

步骤四、针对步骤三提出疑问: 步骤三中我们发觉当n=10000时, 蒙特卡罗法计算结果为3.14668, 正确度不太高, 那么对n取不一样值, 所得结果正确度会不会有改变?假如有改变,
会有什么改变呢?
猜想: 对n取不一样值, 所得结果正确度应该会有改变, 且当n值越大, 所得结果越正确。

当n=100000时
命令:
n=100000;p={};
Do[m=0;
Do[x=Random[];y=Random[];
If[x^2+y^2<=1,m++],{k,1,n}];
AppendTo[p,N[4m/n]],{t,1,10}];
Print[p];
Sum[p[[t]],{t,1,10}]/10
运行结果:
当n=1000000时
命令:
n=1000000;p={};
Do[m=0;
Do[x=Random[];y=Random[];
If[x^2+y^2<=1,m++],{k,1,n}];
AppendTo[p,N[4m/n]],{t,1,10}];
Print[p];
Sum[p[[t]],{t,1,10}]/10
运行结果以下
结果分析:
从运行结果来看, 伴随n增加, 运行时间显著变长, 用蒙特卡罗算法所求结果越正确, 与猜想一致。

四、试验总结
利用数值方法计算π, 在n不一样取值下精度都很大, 伴随n值增加计算所需时间也在增加; 相比数值方法, Taylor级数收敛法需要花费更多时间用于计算, 所得精度也更高; 而蒙特卡罗方法相比上述两个, 运行速度最快, 但精度不高。

综上, 这三种方法都能够较为正确地计算出π值, 考虑日常生活中实用性, 蒙特卡洛方法含有耗时短效率高特点, 更适合低精度要求下计算。

老师评语:。

相关文档
最新文档