#yyds干货盘点#代码解释圆周率
Posted 俺想吃蜂蜜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#yyds干货盘点#代码解释圆周率相关的知识,希望对你有一定的参考价值。
圆周率(Pi)是圆的周长与直径的比值,一般用希腊字母π表示,是一个在数学及物理学中普遍存在的数学常数。π也等于圆形之面积与半径平方之比。是精确计算圆周长、圆面积、球体积等几何形状的关键值。为了探索圆周率,本文用代码的方式来验算三种计算π的方式
圆周率的计算方法
割圆术
所谓“割圆术”,是用圆内接正多边形的面积去无限逼近圆面积并以此求取圆周率的方法
代码如下
i = 0
n = 15
an = 1
while i < n:
an1Pow = 2 - math.sqrt(4-math. pow( an,2))
an1 = math.sqrt(an1Pow)
an = an1
i += 1
print("由正%d边形求出的PI为%.5Of”% (6*math.pow(2,n),(3*math.pow(2,n)*an)))
莱布尼兹公式
莱布尼茨法则,也称为乘积法则,是数学中关于两个函数的积的导数的一个计算法则。
不同于牛顿-莱布尼茨公式(微积分学),莱布尼茨公式用于对两个函数的乘积求取其高阶导数,一般的,如果函数u = u (x)与函数v= v(x)在点x处都具有n阶导数,那么此时有
代码如下:
s = 0
result = 0
for i in range(0,100):
s += (-1)**i /(2*i+1)
result = s*4
print(’%.2f’ % result)
结果为:3.13
随机投点法(蒙特卡洛算法)
原理:随机模拟是一种随机试验的方法,也称为蒙特卡罗方法这种方法利用随机试验,根据频率与概率、平均值与期望值等之间的关系,推断出预期的结果。
在(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 = o;//投中的个数
double x, y;// x和y坐标点
for (int i = o; i < test_sum; i++) {
//随机得到一个坐标
x = Math.random();
y = Math.random( );
if (x* x +y * y <= 1)//判断掷入的这个点在不在在圆内
hit_sum++;
}
//统计得到rt的值
double pi = (double) hit_sum / test_sum * 4;
System.out.println(“π的结果为:" + pi);
}
}
随机测试的几次结果:
π的结果为:3.140336
π的结果为:3.141012
π的结果为:3.141396
以上是关于#yyds干货盘点#代码解释圆周率的主要内容,如果未能解决你的问题,请参考以下文章
# yyds干货盘点 # 请问大佬们Python代码中的这个...是啥呀?
#yyds干货盘点# LeetCode 热题 HOT 100:最长有效括号
#yyds干货盘点# Java | 关于synchronized相关理解