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

あなたは1人ずつ離れています。このrangeメソッドはエンドポイントを除外します。1つ追加してみてください:

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 に答える