python中正弦的幂级数函数

时间:2014-02-01 17:50:56

标签: python

#power series of sine function
def main():
    M=float(input('M: ')) #angle in degree
    X=pi_value()*M/180 #angle in radian
    print(sine(X))    
#factorial function
def fac(N):
    if N==0:
        Num=1
    else:
        Num=1
        for i in range(1,N+1):
            Num*=(i)
            i+=1
    return Num
#pi function
def pi_value():
    pivalue=3.141592653589793
    return pivalue
def sine(X):
    k=0
    sine=0
    term=((-1)**k*X**(2*k+1))/fac(2*k+1)
    while abs(sine)<1*10**(-8):
        sine+=term
        k+=1
        term=((-1)**k*X**(2*k+1))/fac(2*k+1)
    return sine
main()

我一直在研究python上正弦函数的幂级数扩展。出于某种原因,这段代码无效。我真的很感激,如果有人可以给我一些指示。谢谢(p.s。我不应该使用任何数学库函数)

当我输入角度M = 30度时,这就是我得到的输出。

M: 30
0.5235987755982988

当我应该得到一些东西.5

M: 60
1.0471975511965976

并且角度为60度,输出完全错误。

1 个答案:

答案 0 :(得分:1)

这是你的问题:

while abs(sine)<1*10**(-8):

只要sine达到1e-8以上的值,就退出循环。您使用了错误的终止条件。

更好的循环终止条件是

while abs(term)>1e-8

最后一点说明:您应该在返回之前将最后一个省略的术语添加到sine