专栏名称: 数学爱好者俱乐部
我们是一线教师,我们都热爱数学。本公众号旨在传播数学文化,科普数学知识。你可以走近数学名师,追寻牛娃成长之路,还有烧脑趣题,数学教学经典案例分享等。
目录
相关文章推荐
超级数学建模  ·  限时领 | ... ·  昨天  
超级数学建模  ·  头像是你本人吗?公司招主播,你考虑一下... ·  昨天  
超级数学建模  ·  限时领 | ... ·  2 天前  
51好读  ›  专栏  ›  数学爱好者俱乐部

〖数学算法〗求圆周率的几种算法

数学爱好者俱乐部  · 公众号  · 数学  · 2019-08-08 18:00

正文


文章 来源:算法与数学之美


圆周率大家都不陌生,最早由欧几里德《几何原本》中提到圆周率是常数,第一个用寻求圆周率数值的人是阿基米德,中国数学家刘徽,和后来大名鼎鼎的祖冲之分别对圆周率进行了计算,从古到今对圆周率的计算方法有几十种。

下面就介绍几种求圆周率的方法:

1.随机投点法(蒙特卡洛算法)

这是粗略的求圆周率一种常用算法


在(0,0)和(1,1)范围内随机投test_sum个点,如果落到圆内,hit_sum数量加1,最后用hit_sum/test_sum算出落在圆内的概率,

由得圆周率 PI=hit_sum / test_sum * 4

public class PI {

public static void main(String[] args) {

int test_sum = 1000000;// 投的点数

int hit_sum = 0;// 投中的个数

double x, y;// x和y坐标点

for (int i = 0; i < test_sum; i++) {

// 随机得到一个坐标

x = Math.random();

y = Math.random();

if (x * x + y * y <= 1)// 判断掷入的这个点在不在在圆内

hit_sum++;

}

// 统计得到π的值

double pi = (double) hit_sum / test_sum * 4;

System.out.println("π的结果为:" + pi);

}

}



随机测试的几次结果:

π的结果为:3.140336

π的结果为:3.141012

π的结果为:3.141396


2.公式法

圆周率的公式特别多,介绍其中一个

这是一个迭代过程,code很容易,直接贴代码了

public class PI {

public static void main(String[] args) {

double my_pi = 2;

int _jingdu = 1000;//精度控制

for (int i = _jingdu; i > 0; i--)

my_pi = my_pi * i / (2 * i + 1) + 2;

System.out.println(my_pi);

}

}

输出结果:3.141592653589793


3.蒲丰投针

这一方法的步骤是:

1) 取一张白纸,在上面画上许多条间距为d的平行线。

2) 取一根长度为l(l

3)计算针与直线相交的概率.







请到「今天看啥」查看全文