发布网友 发布时间:2022-04-24 09:36
共4个回答
热心网友 时间:2022-06-18 13:32
我们知道,当正多边形的边数无限增多时,它的极限是圆。所以“圆”这种图形可以代表弯曲得最厉害的小针。现在假定圆形小针的直径恰好与纸上两条相邻的平行线间的距离相等,那末这个圆形小针投掷下来时,不是和一条直线相交两次,就是和两条相邻的平行线相切。不管怎样,它的相交次数是2。因此,当投掷的次数为n时,碰线的次数便是2n。
现在小针的长度只有两条相邻平行线间距离的一半,所以针的长度只有上述圆形小针长度(即圆周长)的。但是可能碰线的次数是与针的长度成正比的,因此小针的可能碰线的次数k就必须满足下面的比例式:
1:(1/2π) =2n: k
于是就得到π=n/k,也就是
π=投掷总次数/碰线次数
这就是上面“投针实验”的理论根据。它又叫莆丰氏实验,在概率论中是很出名的,也可以说是近代的“统计试验法”(又叫“蒙特卡罗法”)的滥觞。
热心网友 时间:2022-06-18 13:32
因为计算π值, 而这个公式是计算π/2的, 我们把它变形:
π = 2 + 2/3 + 2/3*2/5 + 2/3*2/5*3/7 + ...
--------------------------------------------------------------------------------
对于级数, 我们先做个简单测试, 暂时不要求精度:
用 C++ Builder 新建一个工程, 在 Form 上放一个 Memo1 和 一个 Button1, 在 Button1 的 OnClick 事件写:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double x=2, z=2;
int a=1, b=3;
while(z>1e-15)
{
z = z*a/b;
x += z;
a++;
b+=2;
}
Memo1->Text = AnsiString().sprintf("Pi=%.13f", x);
}
按Button1在Memo1显示出执行结果:
Pi=3.14159265358
这个程序太简单了, 而且 double 的精度很低, 只能计算到小数点后 10 几位。
把上面的程序改造一下, 让它精确到小数点后面 1000 位再测试一下:
在 Form 上再放一个按钮 Button2, 在这个按钮的 OnClick 事件写:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
const ARRSIZE=1010, DISPCNT=1000; //定义数组大小,显示位数
char x[ARRSIZE], z[ARRSIZE]; //x[0] x[1] . x[2] x[3] x[4] .... x[ARRSIZE-1]
int a=1, b=3, c, d, Run=1, Cnt=0;
memset(x,0,ARRSIZE);
memset(z,0,ARRSIZE);
x[1] = 2;
z[1] = 2;
while(Run && (++Cnt< 200000000))
{
//z*=a;
d = 0;
for(int i=ARRSIZE-1; i>0; i--)
{
c = z[i]*a + d;
z[i] = c % 10;
d = c / 10;
}
//z/=b;
d = 0;
for(int i=0; i< ARRSIZE; i++)
{
c = z[i]+d*10;
z[i] = c / b;
d = c % b;
}
//x+=z;
Run = 0;
for(int i=ARRSIZE-1; i>0; i--)
{
c = x[i] + z[i];
x[i] = c%10;
x[i-1] += c/10;
Run |= z[i];
}
a++;
b+=2;
}
Memo1->Text = AnsiString().sprintf("计算了 %d 次\r\n",Cnt);
Memo1->Text = Memo1->Text + AnsiString().sprintf("Pi=%d%d.\r\n", x[0],x[1]);
for(int i=0; i< DISPCNT; i++)
{
if(i && ((i%100)==0))
Memo1->Text = Memo1->Text + "\r\n";
Memo1->Text = Memo1->Text + (int)x[i+2];
}
}
按 Button2 执行结果:
Pi=03.
14159265357932384623383279502884197169399375105820974944592307810628620986280348253421170679
8214808651328230670938446095505822317253594081284811174502841027019385211055594622945493038196
4428810975665933446128475823378678316527120190914585669234603486104543268213393607260249141273
724587006606315588174881520920962829254091715336725903600113305305488204665213841469519415116094
33057270365759591953092186117381932611793105118548074462379962749567351885752724122793818301194912
983367336244065630860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577609173637178721468440901224953430146549585371050792279625235
42019956112129021960803441815981362977477130996051870721134999999837297804995105973173281609631859
50244594553469083022522308253344685035261931188171010003137838752886587533208381420617177669147303
598253490428755468731159562863882353787593751957781857780532171226806613001927876611195909212019
const ARRSIZE=10100, DISPCNT=10000; //定义数组大小,显示位数
执行结果精度可达 10000 位:
Pi=03.
14159265357932384623383279502884197169399375105820974944592307810628620986280348253421170679
8214808651328230670938446095505822317253594081284811174502841027019385211055594622945493038196
4428810975665933446128475823378678316527120190914585669234603486104543268213393607260249141273
72458700660631558817488152092096282925409171533672590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724122793818301194912
98336733624406563086021394946395224737190702179860943702770539217176293176752384674818467669405132
0005681271452635608277857713427577609173637178721468440901224953430146549585371050792279625235
42019956112129021960803441815981362977477130996051870721134999999837297804995105973173281609631859
50244594553469083022522308253344685035261931188171010003137838752886587533208381420617177669147303
598253490428755468731159562863882353787593751957781857780532171226806613001927876611195909212019
380952572010654858632788659361533818279682303019520353018529695773622599413124972177528347913151
... 50201410206723585020072452256326513410559240190274216248439140359953539459094407046912091409387001
25600162374288021092757931065792295524988727584610128369992256959688159205600101655256375678
热心网友 时间:2022-06-18 13:33
楼上~~对的,初中3年级的内容吧~~记得书上有的
热心网友 时间:2022-06-18 13:33
百科全书上有,和楼上的楼上的说的一样