圆周率计算方法公式


马青公式(梅钦公式、Machin)计算圆周率昰这样的:
用这公式每增加计算一项就可以增加约1.39位圆周率准确值,计算百万以下级别精度的圆周率速度还算满意。
马青公式级数展開后可以看做两大项,编程可以开两个线程分别同时对这两大项进行计算为了精简,在这里采用单线程编程
级数中的分数,分母增長很快一下子就超出int、long甚至__int64或long long的数值范围,看似要用数组来表示分母才行其实不必,因为规律性很强我们对一个分式,不断除以同┅个低精度数(25、57121)就可以得到所有分数的值。
我们采用在程序运行中读入计算位数的形式编程这样的好处是编译好的程序,可以很方便計算各种不同精度圆周率
用马青公式编程计算圆周率,相对于网上流传的“四行代码计算圆周率”会复杂些不过也没复杂多少。看到┅些网友用马青公式编程洋洋洒洒上百行,看都看晕了
下面是笔者用马青公式计算圆周率最精简的C++代码(万进制):
{ //本程序每四位数输出結果,如果请求计算的位数不是4的整数倍最后输出可能会少1~3位
上面代码计算一万位耗时0.1秒(CPU:Core(i5- GHz 内存:DDR3 1333MHz),速度还算过得去想要更快就得借助运算库、多线程编程或汇编了。



 

  • 数学思维:找到公式利用公式求解
  • 计算思维:抽象一种过程,用计算机自动化求解
  • 谁更准确 (不好说…)

3.2 程序运行时间分析

  • 使用time库的计时方法获得程序运行时间
  • 改变撒点数量,理解程序运行时间的分布
  • 初步掌握简单的程序性能分析方法

3.3 计算问题的扩展

  • 不求解圆周率而是某个特定图形的面积
  • 在工程计算中寻找蒙特卡罗方法的应用场景

我要回帖

 

随机推荐