上次给出的各种计算公式均收敛太慢, 虽然美妙, 但是不够实用,
现在再给出一种效率极高的方法: 高斯-勒让德方法
这是一种迭代方法, 每次计算都能使精度成倍提高,
曾经在1989年创造了10亿多位的世界纪录. 下面给
出其计算程序, 迭代4次, 就可以得到30多位正确的
小数位数. 19次就可以超过100万位, 同上次介绍的
那些方法简直不可同日而语, 真是太好了!
Varible:
A, B, C, X, Y: real
{ * }
N: Integer;
Begin
X := 1;
A := 1;
B := sqrt(2);
C := 1/4;
For N:=0 to 3 Do Begin
Y := A;
A := (A+B)/2;
B := sqrt(B*Y);
C := C - X*(A-Y)*(A-Y);
X := X + X;
End;
Writeln('Pi is:', (A+B)*(A+B)/4/C);
End.
如果需要更高的精度, 必须把例子程序中的Real类型改为
用户自定义的数据类型, 并相应提供加减乘除计算过程.
(呵呵, Delphi还不支持C++中的运算符重载)