2

我在python中编写了这个函数:

import math

def radical(a, b, k): 
    return (1-((a**2-b**2)/a**2)*(math.sin(math.pi*(2*k-1)/180))**2)**.5

def f(a, b): 
 sigma = 0 
 for k in range(1,180/4):
    sigma = sigma + radical(a, b, k)
 return 8*a*math.sin(math.pi/180)*sigma

print f(25.,35.)

当我在 Wolphramapha 和 Maple 中计算这个函数时,我会得到 189.797,但使用 python我会得到 184.91089913 我的程序有什么问题?

4

2 回答 2

6

你差了一个。该range方法不包括终点。尝试添加一个:

for k in range(1,180/4 + 1):

结果:189.797208409

于 2012-11-30T17:36:31.087 回答
2

嗯,首先,python 假设整数除法,所以这段代码有一些严重的舍入。我相信这有一个重要的部门。此外,以下是有关 python 的浮点算术问题/问题的一些信息:

http://docs.python.org/2/tutorial/floatingpoint.html

于 2012-11-30T17:35:52.060 回答