圆周率

用python计算圆周率

拥有回忆 提交于 2019-11-26 08:52:40
CalPiV1.py 公式法 pi = 0 N = 100 for k in range(N): pi += 1 /pow( 16 ,k) * ( 4 /( 8 *k + 1 ) - 2 /( 8 *k + 4 ) - 1 /( 8 *k + 5 ) - 1 /( 8 *k + 6 )) print ( "圆周率值是:{}" . format (pi)) CalPiV2.py 蒙特卡罗法 from random import random from time import perf_counter DARTS = 1000 * 1000 hits = 0.0 start = perf_counter() for i in range( 1 ,DARTS+ 1 ): x,y = random (), random () dist = pow(x ** 2 + y ** 2 , 0.5 ) if dist <= 1.0 : hits = hits + 1 pi = 4 * (hits / DARTS) print( "圆周率值是:{}" . format ( pi )) print( "运行时间是:{:.5f}s" . format (perf_counter() - start)) 从不同角度看问题就会有不同发现。数学思维和计算思维各有千秋啊! 来源: CSDN 作者:

Python-圆周率的计算实例

拜拜、爱过 提交于 2019-11-26 08:52:13
1.近似公式计算 #CalPi.py pi = 0; N = 100; for k in range(N): pi += 1/pow(16,k)*(4/(8*k+1)-2/(8*k+4)-1/(8*k+5)-1/(8*k+6)); print("圆周率的值是:{}".format(pi)); #运行结果 #圆周率的值是:3.141592653589793 2.蒙特卡罗方法 蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用 随机数 (或更常见的伪随机数)来解决很多计算问题的方法。与它对应的是确定性算法。蒙特·卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、 空气动力学 计算)等领域应用广泛。 数学应用: 通常蒙特·卡罗方法通过构造符合一定规则的随机数来解决数学上的各种问题。对于那些由于计算过于复杂而难以得到 解析解 或者根本没有解析解的问题,蒙特·卡罗方法是一种有效的求出 数值解 的方法。一般蒙特·卡罗方法在数学中最常见的应用就是蒙特·卡罗积分。 -- 百度百科 #CalPi.py from random import random from time import perf_counter

计算圆周率

无人久伴 提交于 2019-11-26 08:51:57
中国古代数学家研究计算圆周率的方法:PI=4/1-4/3+4/5-4/7+4/9-4/11+4/13-4/15+4/17... 要计算出圆周率在3.1415926~3.1415927之间,经过了多少次加减运算?此时的PI的值是? /** * * @author LLJ * 中国古代数学家研究计算圆周率的方法: * PI=4/1-4/3+4/5-4/7+4/9-4/11+4/13-4/15+4/17... * 要计算出圆周率在3.1415926~3.1415927之间,经过了多少次加减运算 */ public class YuanZhouLv2 { public static void main(String[] args) { double pi = 0;//累计统计pi的值 double base = 1;//分母 int prefix = 1;//用来计算是加还是减 int i = 0;//统计进行了多少次加减运算 while(pi < 3.1415926 || pi > 3.1415927){ pi += prefix * 4/base; i++; prefix *= -1; base += 2; } System.out.println("要计算出圆周率在3.1415926~3.1415927之间,经过加减运算的次数是: "+i); System.out.println(

Python 圆周率计算

拟墨画扇 提交于 2019-11-26 08:51:38
公式计算(粗略): pi = 0 N = 100 for k in range(N): pi += 1/pow(16, k)*( \ 4/(8*k+1) - 2/(8*k+4) - \ 1/(8*k+5) - 1/(8*k+6)) print("圆周率值是:{}".format(pi)) 输出: 圆周率值是:3.141592653589793 蒙特卡洛方法: from random import random from time import perf_counter DARTS = 1000*1000 hits = 0.0 start = perf_counter() for i in range(1, DARTS+1): x, y = random(), random() dist = pow(x ** 2 + y ** 2, 0.5) if dist <= 1.0: hits += 1 pi = 4 * (hits/DARTS) print("圆周率值是:{}".format(pi)) print("运行时间是:{:.5f}s".format(perf_counter()-start)) 输出: 圆周率值是:3.14362 运行时间是:1.02206s 来源: CSDN 作者: 乌云的暮年下着雪 链接: https://blog.csdn.net/qq_40390825

圆周率

三世轮回 提交于 2019-11-26 08:51:24
圆周率 Problem Description 输入n值,并利用下列格里高里公式计算并输出圆周率: Input 输入公式中的n值。 Output 输出圆周率,保留5位小数。 Sample Input 1 Sample Output 2.66667 # include <stdio.h> int main ( ) { double f = 1.0 ; double n , sum = 0 , p ; int i ; scanf ( "%lf" , & n ) ; n = n * 2 ; for ( i = 1 ; i <= n ; i ++ ) { sum + = f / ( 2 * i - 1 ) ; f = - f ; } p = sum * 4 ; printf ( "%.5lf\n" , p ) ; return 0 ; } 来源: CSDN 作者: 咕咕咕咕咕~ 链接: https://blog.csdn.net/qq_45666654/article/details/102989231