1、如何计算 的值1、蒙特卡罗(Monte Carlo)法思想:取一正方形 A,以 A 的一个顶点为圆心,A 的边长为半径画圆,取四分之一圆(正方形内的四分之一圆)为扇形 B。已知 A 的面积,只要求出 B 的面积与 A 的面积之比 ,就能得出 ,再由 B 的BASkS面积为圆面积的四分之一,利用公式 即可求出 的值。因此,2=R圆 我们的目的就是要找出 的值。k可以把 A 和 B 看成是由无限多个点组成,而 B 内的所有点都在A 内。随机产生 个点,若落在 B 内的有 个点(假定 A 的边长为nm1,以扇形圆心为坐标系原点。则只要使随机产生横纵坐标 、 满xy足 的点,就是落在 B 内的点) ,
2、则可近似得出 的值,即2xy k,由此就可以求出 的值。mkn程序(1):i=1;m=0;n=1000;for i=1:n a=rand(1,2); if a(1)2+a(2)2=1m=m+1;endendp=vpa(4*m/n,30)程序运行结果:p =3.140000000000000000000000000002、泰勒级数法思想:反正切函数 的泰勒级数展开式为:arctnx3521t ()kx将 代入上式有1x.11arctn()4352n利用这个式子就可以求出 的值了。程序(2):i=1;n=1000;s=0;for i=1:ns=s+(-1)(i-1)/(2*i-1);endp=vp
3、a(4*s,30)程序运行结果:p =3.14059265383979413499559996126当取 的值为 10000 时,就会花费很长时间,而且精度也不是很n高。原因是 时, 的展开式收敛太慢。因此就需要找出一个1xarctn1使得 收敛更快。xarct若取 ,则我们只有找出 与 的关系,才能求出 的值。12x4令 , ,arctn4根据公式 有 ,则有 。tantt()11tan31arctnrta423所以可以用 来计算 的值。1arctnrta423程序( ):2i=1;n=1000;s=0;s1=0;s2=0;for i=1:ns1=s1+(-1)(i-1)*(1/2)(2*i
4、-1)/(2*i-1);s2=s2+(-1)(i-1)*(1/3)(2*i-1)/(2*i-1);ends=s1+s2;p=vpa(4*s,30)程序运行结果:p =3.14159265358979323846264338328显然,级数收敛越快,取同样的 值可以得到更高的精度。以n同样的方法,能得出 ,程序和上面的一样。这14arctrta5239样 的近似值可以精确到几百位。3、数值积分法思想:半径为 1 的圆的面积是 。以圆心为原点建立直角坐标系,则圆在第一象限的扇形是由 与 轴, 轴所围成的图形,扇形的面积21yxy。只要求出扇形的面积,就可得出 的值。而扇形面积可近似等于定积4s分
5、的值。120xd对于定积分 的值,可以看做成曲线与 轴, ,()bafxd xa所围的曲边梯形的面积 。把 分成 等分,既得 个点xbS,abn1n, , , 组成 个小区间,每一个小区间与 轴,a11nxbnx, 所围成的图形是一个小曲边梯形。而梯形的面积计算公x式是 ,对于第 个小曲边梯形有上底为 ,下底(+)2上 底 下 底 高 i 1()ifx为 。所有小梯形的高都为 。所以第 个小曲边梯形的)ifx ()/hbani面积为 。曲边梯形的总面积即定积分 的值1()iifx ()bafxd就是所有小梯形的面积总和。为了避免根号,我们也可以利用积分 1204dx得出 的值。我们可以利用对求
6、曲边梯形的面积来得出定积分 的值,120dx从而得出 的值。程序(3):a=0;b=1;s=0;n=1000;i=0;h=(b-a)/n;for i=0:(n-1)xi=a+i*h;yi=1/(1+(xi)2);xj=a+(i+1)*h;yj=1/(1+(xj)2);s=s+(yi+yj)*h/2; endp=vpa(4*s,30)程序运行结果:p =3.14159248692312775830259852228对于数值积分法求 值,以上程序简洁明了。我们也可以以 做 x循环,用一条语句求出 值。程序(3):s=0;n=1000;for x=0:(1/n):(1-(1/n)s=s+(1/(1+x2)+1/(1+(x+(1/n)2)*(1/n)/2;endp=vpa(4*s,30)程序运行结果:p =3.14159248692312775830259852228用以上三种方法求 , 都取 1000 时,泰勒级数法求 ,得到的n近似值精度最高。