计算机推算π
来源:广州中睿信息技术有限公司官网
发布时间:2012/10/21 23:25:16 编辑:editor 阅读 353
中国数学家刘徽在注释《九章算术》(263年)时只用圆内接正多边形就求得&pi的近似值,也得出精确到两位小数的&pi值,他的方法被后人称为割圆术。他用割圆术一直算到圆内接正192边形。南北朝时代数学家

     中国数学家刘徽在注释《九章算术》(263年)时只用圆内接正多边形就求得π的近似值,也得出精确到两位小数的π值,他的方法被后人称为割圆术。他用割圆术一直算到圆内接正192边形。 
  南北朝时代数学家祖冲之进一步得出精确到小数点后7位的π值(约5世纪下半叶),给出不足近似值3.1415926和过剩近似值3.1415927,还得到两个近似分数值,密率355/113和约率22/7。其中的密率在西方直到1573才由德国人奥托得到,1625年发表于荷兰工程师安托尼斯的著作中,欧洲称之为安托尼斯率。 

计算机的快速发展使π的精度越来越高,那么怎么通过计算机器计算π呢?

 

使用公式:   π=C/d

 

在支持html5的浏览器里运行下面代码。

 

<!DOCTYPE HTML>
<html>
<body>
    <canvas id="myCanvas" width="480" height="300" style="border: 1px solid #c3c3c3;">
Your browser does not support the canvas element.
</canvas>
    <script type="text/javascript">
        var c = document.getElementById("myCanvas");
        
var cxt = c.getContext("2d");
        
var x = 150;
        
var y = 150;
        var r = 100;
        var perimeter = 0;
        
for (var i = x - r; i < x + r + 1; i += 1) {
            
var tempY = Math.pow(r * r - (x - i) * (x - i), 1 / 2);
            cxt.lineTo(i, y 
+ tempY);
            
var xx = r * r - (x - i + 1* (x - i + 1);
            
var tempY2 = Math.pow(r * r - (x - i + 1* (x - i + 1), 1 / 2);
            
var temp = getLengthOfTwoPoint({ x: i - 1, y: tempY2 }, { x: i, y: tempY });
            
if (xx >= 0) {
                perimeter 
+= temp;
            }
        }
        alert(
"π的是值为:" + perimeter / r)
        
function getLengthOfTwoPoint(startPoint, endPoint) {
            
var calX = Math.abs(startPoint.x - endPoint.x);
            
var calY = Math.abs(startPoint.y - endPoint.y);
            
return Math.pow((calX * calX + calY * calY), 0.5);
        }
    
</script>
</body>
</html>

 

 

上面的计算方法是把半圆上的每段相邻两点之间的距离求和,然后除以r得出π的值。

运行之后发现π的是值为:3.1412985671602183      和标准的3.1415926535897932384626433832795028841971693993751058209749 相差甚远!

怎么稍微修改上面代码,提高精确度呢?或者你有更精确的算法?数学家祖冲之得出精确到小数点后7位,你能超过他吗?不管你信不信,反正我信了。

联系我们CONTACT 扫一扫
愿景:成为最专业的软件研发服务领航者
中睿信息技术有限公司 广州•深圳 Tel:020-38931912 务实 Pragmatic
广州:广州市天河区翰景路1号金星大厦18层中睿信息 Fax:020-38931912 专业 Professional
深圳:深圳市福田区车公庙有色金属大厦509~510 Tel:0755-25855012 诚信 Integrity
所有权声明:PMI, PMP, Project Management Professional, PMI-ACP, PMI-PBA和PMBOK是项目管理协会(Project Management Institute, Inc.)的注册标志。
版权所有:广州中睿信息技术有限公司 粤ICP备13082838号-2