#yyds干货盘点#代码解释圆周率

Posted 俺想吃蜂蜜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#yyds干货盘点#代码解释圆周率相关的知识,希望对你有一定的参考价值。

圆周率(Pi)是圆的周长与直径的比值,一般用希腊字母π表示,是一个在数学及物理学中普遍存在的数学常数。π也等于圆形之面积与半径平方之比。是精确计算圆周长、圆面积、球体积等几何形状的关键值。为了探索圆周率,本文用代码的方式来验算三种计算π的方式

圆周率的计算方法

割圆术

所谓“割圆术”,是用圆内接​​正多边形​​的面积去无限逼近圆面积并以此求取圆周率的方法

#yyds干货盘点#代码解释圆周率_精确计算

代码如下

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)))

莱布尼兹公式

莱布尼茨法则,也称为乘积法则,是​数学​​中关于两个函数的​​​的​导数​的一个计算法则。

#yyds干货盘点#代码解释圆周率_i++_02

不同于​​牛顿-莱布尼茨公式​​(微积分学),莱布尼茨公式用于对两个函数的乘积求取其高阶导数,一般的,如果函数u = u (x)与函数v= v(x)在点x处都具有n阶导数,那么此时有

#yyds干货盘点#代码解释圆周率_随机测试_03

代码如下:

s = 0
result = 0
for i in range(0,100):
s += (-1)**i /(2*i+1)
result = s*4
print(%.2f % result)

结果为:3.13

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

原理:随机模拟是一种随机试验的方法,也称为蒙特卡罗方法这种方法利用随机试验,根据频率与概率、平均值与期望值等之间的关系,推断出预期的结果。

#yyds干货盘点#代码解释圆周率_希腊字母_04

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

#yyds干货盘点#代码解释圆周率_随机测试_05得圆周率 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相关理解

#yyds干货盘点# LeetCode 腾讯精选练习 50 题:爬楼梯

#yyds干货盘点# leetcode算法题:最长公共前缀

#yyds干货盘点#愚公系列2023年02月 .NET/C#知识点-程序运行计时的总结