
在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
v
end
(方法二):const
p=3141592
let
r=2
let
v=4/3pr^3
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语言程序设计,用级数计算圆周率π、如何自己计算圆周率等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)