python 编写函数计算圆周率
问题描述:
习题四 编写函数,计算圆周率。存在圆心在直角坐标系原点且半径为 1 的圆及其外切正方形。为计算方便,仅考虑位于第一象限的四分之一正方形和四分之一圆。随机生成该四分之一正方形中一系列点,散布于四分之一圆内比例即为圆周率四分之一。散步点越多,结果越精确,耗时也越长。
答
from random import random
from math import sqrt
N=eval(input("请输入次数:"))
#散在园内部点为0
K=0
#循环撒点的过程看成是遍历循环的过程,用for in range对所有点进行抛洒
for i in range(1,N+1):
# 定义x,y当作两个随机数的坐标值,这个坐标就是圆的抛点
x,y=random(),random()
# 如何判断这个坐标就在圆内呢?判断这个点到圆心的距离是否等于1
dist =sqrt(x**2+y**2)
if dist<=1.0:
K=K+1
#用这个值比上整个区域值
pi=4*(K/N)
print("圆周率值:{}".format(pi))
运行结果
请输入次数:666666
圆周率值:3.1404271404271404
答
# -*- coding: utf-8 -*-
from __future__ import division
####################导入时间模块
import time
###############计算当前时间
time1=time.time()
################算法根据马青公式计算圆周率####################
number = int(raw_input('请输入想要计算到小数点后的位数n:'))
# 多计算10位,防止尾数取舍的影响
number1 = number+10
# 算到小数点后number1位
b = 10**number1
# 求含4/5的首项
x1 = b*4//5
# 求含1/239的首项
x2 = b// -239
# 求第一大项
he = x1+x2
#设置下面循环的终点,即共计算n项
number *= 2
#循环初值=3,末值2n,步长=2
for i in xrange(3,number,2):
# 求每个含1/5的项及符号
x1 //= -25
# 求每个含1/239的项及符号
x2 //= -57121
# 求两项之和
x = (x1+x2) // i
# 求总和
he += x
# 求出π
pai = he*4
#舍掉后十位
pai //= 10**10
############ 输出圆周率π的值
paistring=str(pai)
result=paistring[0]+str('.')+paistring[1:len(paistring)]
print result
time2=time.time()
print u'总共耗时:' + str(time2 - time1) + 's'
https://www.cnblogs.com/it-tsz/p/12344213.html
这个是马青公式
答
import math
def zu(n):
## 假设边长为1
def f(x): ## 由当前边长,求割后边长
h = 1 - math.sqrt(1-(x/2)**2)
return math.sqrt(h**2 + (a/2)**2)
a = 1 ## 初始边长
k = 6 ## 初始边数
for i in range(n):
a = f(a)
k *= 2
return a * k / 2
if __name__ == '__main__':
print(zu(10))
print(math.pi)
https://blog.csdn.net/qq_42680814/article/details/105828836
割圆法。
答
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
答
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y