我通过 Mark Newmans 的书 Computational Physics 自学 Python 和计算物理学,练习是计算物理学的 2.9 我必须计算马德隆常数。
.
我有两个不同的解决方案我想知道哪个代码是正确的,有没有办法在我的范围内排除0,所以我不必编写两个单独的 for 循环。我认为我的第二个答案是正确的,有人可以验证。
我的第一个答案:
M = 0
for i in range(-200,0):
for j in range(-200,0):
for k in range(-200,0):
M += ((-1)**(i+j+k))/((i**2 + j**2 + k**2)**(1/2))
print(M)
for i in range(1,200):
for j in range(1,200):
for k in range(1,200):
M += ((-1)**(i+j+k))/((i**2 + j**2 + k**2)**(1/2))
print(M)
我的第二个回答:
M = 0
i = 0
j = 0
k = 0
for l in range(-200,0):
i = l
j = l
k = l
M += ((-1)**(i+j+k))/((i**2 + j**2 + k**2)**(1/2))
print(M)
for l in range(1,200):
i = l
j = l
k = l
M += ((-1)**(i+j+k))/((i**2 + j**2 + k**2)**(1/2))
print(M)