2024年4月3日发(作者:忻晨希)
数学实验报告
实验序号: 2 日期:
2016年 月 日
班级
实验
名称
姓名
圆周率π的计算
学号
问题背景描述:
圆周率是指一个圆的周长与其直径的比值。古今中外,许多人致力于圆周率的研究。回
顾历史,人类对π的认识过程,反映了数学和计算技术发展情形的一个侧面。π的研究,在
一定程度上反映着这个地区或时代的数学水平。德国数学家康托说:“历史上一个国家所算得
的圆周率的准确程度,可以作为衡量这个国家当时数学发展水平的指标。”
实验环境:
学校机房、Mathematica4.0软件、PrintScreen软件
实验目的:
首先在Mathematica环境中用多种方法计算圆周率
的值,通过实验来体会各种方法的区
别,比较各种方法的优劣,接着尝试自己提出新的方法来计算圆周率
的值。
实验理论基础和方法:
1.用Mathematica绘图函数Plot绘制圆周率
;
2.运用数值积分法计算圆周率:
利用半径为1的单位圆的面积等于
来求解圆周率;
3.利用泰勒级数法计算
:
2k1
x
3
x
5
k1
x
(1)
利用反正切函数的泰勒级数
arctanxx
352k1
4. 蒙特卡罗法计算
实验结果报告及实验总结:
一、数值积分法计算
因为单位圆的半径为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]}];
运行结果:
2024年4月3日发(作者:忻晨希)
数学实验报告
实验序号: 2 日期:
2016年 月 日
班级
实验
名称
姓名
圆周率π的计算
学号
问题背景描述:
圆周率是指一个圆的周长与其直径的比值。古今中外,许多人致力于圆周率的研究。回
顾历史,人类对π的认识过程,反映了数学和计算技术发展情形的一个侧面。π的研究,在
一定程度上反映着这个地区或时代的数学水平。德国数学家康托说:“历史上一个国家所算得
的圆周率的准确程度,可以作为衡量这个国家当时数学发展水平的指标。”
实验环境:
学校机房、Mathematica4.0软件、PrintScreen软件
实验目的:
首先在Mathematica环境中用多种方法计算圆周率
的值,通过实验来体会各种方法的区
别,比较各种方法的优劣,接着尝试自己提出新的方法来计算圆周率
的值。
实验理论基础和方法:
1.用Mathematica绘图函数Plot绘制圆周率
;
2.运用数值积分法计算圆周率:
利用半径为1的单位圆的面积等于
来求解圆周率;
3.利用泰勒级数法计算
:
2k1
x
3
x
5
k1
x
(1)
利用反正切函数的泰勒级数
arctanxx
352k1
4. 蒙特卡罗法计算
实验结果报告及实验总结:
一、数值积分法计算
因为单位圆的半径为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]}];
运行结果: