怎样计算圆周率的方法,包括matlab方法

怎样计算圆周率的方法,包括matlab方法,第1张

在Matlab软件环境下可运行的程序。

1、用积分函数int()求解。在命令窗口中输入

>>fun=4/(1+xx);

>>p=int(fun,0,1)

运行结果

p =

pi

2、复化梯形法计算圆周率π。在命令窗口中输入

>> PI_Calculation

运行结果

复化梯形法解

n=1,p=3100000,r=0100000

n=2,p=3131176,r=0031176

n=3,p=3138988,r=0007812

n=4,p=3140942,r=0001953

n=5,p=3141430,r=0000488

n=6,p=3141552,r=0000122

n=7,p=3141582,r=0000031

n=8,p=3141590,r=0000008

#include<stdioh>

int main()

{

    double pi=20;

    double i=10;

    double a= i;

    double b= 2i+1;

    double t=2a/b;

    while(t>=1e-100)

    {

        pi = pi + t;

        i=i+1;

        a=ai;

        b=b(2i+1);

        t=2a/b;

    }

    printf("%g\n",pi);

    getchar();

}

自己计算圆周率方法/步骤

1通过做圆的外切和内接正多边形,来计算圆周率的上下限,因为边数越多的正多边形越接近于圆。

2用正多边形的面积来逼近圆的面积。分割越多,内接正多边形和圆之间的面积越来越小,两者越来接近。无限分割之后,内接正多边形和圆将会合二为一。如下图所示,在一个半径为r的圆中做正3×2^n(n为正整数)边形,假设其边长为a_n,即AB=a_n。AB的中点为P,连接OP交圆于C。那么,AC和BC就是正3×2^(n+1)边形的边长,可以表示为a_(n+1)。

3在直角三角形AOP中,根据勾股定理:

OA^2=AP^2+OP^2

令OP=b_n,由此可得下图公式

4令PC=c_n,c_n=PC=OC-OP=r-b_n

在直角三角形APC中,根据勾股定理:

AC^2=AP^2+PC^2

由此可得下图公式

5

知道正3×2^n边形的边长之后,再根据刘徽多边形面积公式,可以算出正6×2^n边形的面积。根据上述正多边形边长的迭代公式,不断的把圆分割下去,圆面积的计算精度会越来越高。在刘徽的方法中,引入了极限和无穷小分割的思想。刘徽的方法更为巧妙,也更为简洁。刘徽算到了正3072边形,结果得到的圆周率为31416。

圆周率π,在vb

编程中,你用健盘是输入不到这个值的,你得用一个常数来定义它的值,如计算圆的体积v=4/3πrrr,且设r为2,可以用下面的程序代码来编写:

(方法一):let

p=3141592

let

r=2

let

v=4/3prrr

print

v

end

(方法二):const

p=3141592

let

r=2

let

v=4/3pr^3

print

v

end

说明:第二个是利用符号常量来代表∏,也就是用函数const定义了p的值,p的值变成了常量,此时在程序中不允许再赋新值

代码如下:

//圆周率 π = 4∑(k=0,∞)(-1)^k/(2k+1)

//π = 314159265358979323846

public class yzq {

public static void main(String[] args) {

// TODO Auto-generated method

stub

int n=0;

double a=0;

for (n=0;n<=10000000;n++ )

{

a = a + 4Mathpow(-1,n)/(2n+1);

Systemoutprintln("第 "+n+"

"+a);

}

Systemoutprintln("最后一位

"+a);

}

}

//程序运行结果

//第10

次计算

3232315809405594

//第100

次计算

31514934010709914

//第1000

次计算

31425916543395442

//第10,000

次计算

31416926435905346

//第100,000

次计算

31416026534897203

//第1000,000

次计算

31415936535887745

//第10,000,000次计算

31415927535897814

//第100,000,000次计算

3141592643589326

//第999,999,990次计算

31415926545880506

//第999,999,991次计算

31415926525880504

//第999,999,992次计算

31415926545880506

//第999,999,993次计算

31415926525880504

//第999,999,994次计算

31415926545880506

//第999,999,995次计算

31415926525880504

//第999,999,996次计算

31415926545880506

//第999,999,997次计算

31415926525880504

//第999,999,998次计算

31415926545880506

//第999,999,999次计算

31415926525880504

//第1,000,000,000次计算

31415926545880506

sub form_load()

dim a,x as integer

dim pi as single

pi=0

for i=1 to 30000

x=((-1)^(i+1))(2i-1)

pi=1/x+pi

next i

print 4pi

end sub

“一定要能算到上千万位!”

你疯了吗?你学过计算机吗?怎么也不可能吧,一个32位pc机,用vb算? 用这个公式?

用牛顿迭代,vb仅能算到精确14位,速度还行,你这算法算6位电脑就卡爆了。c语言能好些,但也好不到哪去。

#include <iostream>

using namespace std;

double pi(double eps){

double p=0,t=1;

int i=1,f=1;

while(t>eps){

p+=(ft);

i+=2;

f=-f;

t=10/i;

}

return 4p;

}

int main(){

double eps, p;

cout <<"计算精度:";

cin >>eps;

p=pi(eps);

cout <<"PI=" <<p <<endl;

return 0;

}

以上就是关于怎样计算圆周率的方法,包括matlab方法全部的内容,包括:怎样计算圆周率的方法,包括matlab方法、C语言程序设计,用级数计算圆周率π、如何自己计算圆周率等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zz/9511793.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存