python - 通过泰勒展开估计 pi 的错误
问题描述
我正在尝试计算 pi 的值,但我的逻辑中有一些我无法弄清楚的语义错误。
def taylor(precision):
iter = 1
sum = 0
fx = 100
sign = 1
while (abs(fx) > precision):
if not iter % 2 == 0:
print(sign)
sum += ((1 / (iter)) * sign)
my_pi = 4 * (sum)
fx = math.pi - my_pi
iter += 1
sign *= -1
return my_pi
这会导致无限循环。
我应该使用这个系列并找到my_pi
一个特定的精度:
π/4 = (1/1) - (1/3) + (1/5) - (1/7) + (1/9) - ...
对编程很陌生,任何帮助都会很棒!
解决方案
这部分在这里
if not iter % 2 == 0:
意味着您仅在迭代不是偶数时求和,即 1, 3, 5, ...。但是,您在每次迭代时交替使用符号,包括偶数迭代的符号。
结果,你得到1/1 + 1/3 + 1/5 + ...
.
相反,尝试
if not iter % 2 == 0:
print(sign)
sum += ((1 / (iter)) * sign)
sign *= -1 # move the sign assignment here
推荐阅读
- folium - 使用 osmnx 绘制多条路线
- javascript - 我应该使用本地存储来存储用户数据吗
- java - 错误您是否在 AndroidManifest.xml 中声明了此活动?
- excel - 在列表中查找值并增加国家/地区计数
- php - 如何访问行内容类型
- java - 如何从 Rxjava 返回一个列表而不是多个发出的单曲?
- python - Django如何自定义upload_to函数
- android - 创建 buildSrc 和 build.gradle.kts 时出现此错误的新 Android Studio 4.2 Preview
- deep-learning - 不是图像到图像转换的任务如何与 Pix2pix 一起工作?
- talend - Fiddler 未捕获 Talend tRestClient 调用