我尝试根据维基百科的近似值计算 pi,但输出不是 pi [已关闭]

问题描述 投票:0回答:2

下面我的代码的输出不是 pi。怎么解决?

import math

a_one = (23 + 4 * math.sqrt(34))
a = 1 / 2 * a_one

b_one = (19 * math.sqrt(2) + 7 * math.sqrt(17))
b = 1 / 2 * b_one

c = (429 + 304 * math.sqrt(2))

d_one = (627 + 442 * math.sqrt(2))
d = 1 / 2 * d_one


u = (a + (math.sqrt(a**2 - 1))**2) * (b + (math.sqrt(b**2 - 1))**2) * (c + (math.sqrt(c**2 - 1))**2) * (d + (math.sqrt(d**2 - 1)))


pi = (math.log((2 * u)**6 + 24) / math.sqrt(3502))

print(pi)

输出=3.4829888487915346

来自维基百科的数学内容

python math
2个回答
2
投票

你的

u
有一些错误。

u = (a + (math.sqrt(a**2 - 1))**2) * (b + (math.sqrt(b**2 - 1))**2) * (c + (math.sqrt(c**2 - 1))**2) * (d + (math.sqrt(d**2 - 1)))

应该是

u = ((a + math.sqrt(a**2 - 1))**2) * ((b + (math.sqrt(b**2 - 1)))**2) * (c + (math.sqrt(c**2 - 1))) * (d + (math.sqrt(d**2 - 1)))

问题是您对

a
b
方程的平方根而不是括号之间的整个部分进行了平方。另外,你在
c
处有一个正方形,它不应该在那里。

我测试了它并使用新的

u
运行它给出了
3.141592653589793
作为答案。


-1
投票

您计算的 u 值需要通过正确使用大括号来固定

这是正确的版本:

u = ((a + math.sqrt(a**2 - 1))**2) * ((b + (math.sqrt(b**2 - 1)))**2) * (c + (math.sqrt(c**2 - 1))) * (d + (math.sqrt(d**2 - 1)))
© www.soinside.com 2019 - 2024. All rights reserved.