• 求圆周率的各种方法


    求圆周率π!你能想到的有多少种方法呢?
    今天对圆周率的求解方法作个整理、总结,因为感觉它挺好玩的。
    (对于π的演算历史,可见百度π。最新的记录是2011年10月日本职员将小数点算到了10万亿位!!这得闲的有多蛋疼啊。。)


    方法一:等积代换

    这应该是最原始的解法了,把圆切成一个多边形,然后求出多边形的面积S。当这个多边形足够多边的时候,它的面积就近似等于圆面积了,然后由面积等式 π·r² = S 就可以得到 π 的近似解。我去百度盗了个图,show一下怎么切圆:
    这里写图片描述
    这个很容易理解,中学课本上也有很多介绍,叫割圆法。我们几个中华老祖就是用这种方法求的,只是当时没有计算机,分割的三角形有限,如今用计算机模拟的话会快得多,精确的多。


    方法二:概率试验

    概率统计中有个著名的蒲丰投针试验大家可记得?
    投针的步骤如下:
    1)、取一张白纸,在上面画上许多条间距为a的平行线。
    2)、取一根长度为l(l=a/2) 的针,随机地向画有平行直线的纸上掷n次,观察针与直线相交的次数,记为m。
    3)、计算针与直线相交的概率.
    可以通过数学推导,得出这个概率为p=2l/(πa),其中π是圆周率。我们可以由此求出π的值!具体的推导见此


    方法三:莱布尼茨级数

    这里写图片描述


    外篇

    其实这篇博客的主要目的是和大家分享一下网上某神级代码,区区几行代码,瞬间求出八百位 π 值:

    #include<stdio.h>
    long a=10000,b,c=2800,d,e,f[2801],g;
    main(){for(;b-c;)   f[b++]=a/5;
        for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)
            for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);}

    这里写图片描述

  • 相关阅读:
    linux ——process
    linux ipc—msgqueue
    JDEclipse源码查看
    用 AXIOM 促进 XML 处理
    使jets3t支持https
    正版太贵了……
    Axis2学习笔记 (Axiom 篇 )
    基于Hadoop的海量文本处理系统介绍
    详解ASP.NET MVC的请求生命周期
    .Net相关的资源连接
  • 原文地址:https://www.cnblogs.com/Bone-ACE/p/4531296.html
Copyright © 2020-2023  润新知