pai(10000)_B,pai(10000)_C系列的基本算法与评价
pai(10000)_B (Euler's Fomula)
参考书目: 计算机程序设计经典题解/杨克昌.——北京:清华大学出版社,2007.12
公式原理: pai/2 = 1 + 1/(1*3) + (1*2)/(1*3*5) + (1*2*3)/(1*3*5*7) + …… +(n!)/(1*3*5*……*(2*n+1))
= 1 + (1/3)(1 + (2/5)(1 + …… +((n-1)/(2*n-1))(1 + (n/(2*n+1)))……))
误差分析: 第n项后Rn<an,an<10^(-x-1)
只要x+1 < lg3+lg(5/2)+……+lg((2*n+1)/n)
无限位计算: 每位数存一个int。
评价: 较好,依据位数控制精确度。原书示例输出500位毫无问题,但是当要输出的位数再增大,要计算的位数飞速上升,如我编制输出10000位的程序,如果计算30000 位,则输出中后200位左右就开始出错了。总之,收敛较快,但是还不是最理想。
pai(10000)_C (Machin's Fomula)
参考书目: 程序算法与技巧精选/郭继展,郭勇,苏辉.——北京:机械工业出版社,2008.4
公式及原理: arctg(x)=x-(x^3)/3+(x^5)/5-(x^7)/7+……
pai=16*arctg(1/5)-4*arctg(1/239)
(5*5=25,2