#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度,输出完全错误。
答案 0 :(得分:1)
这是你的问题:
while abs(sine)<1*10**(-8):
只要sine
达到1e-8以上的值,就退出循环。您使用了错误的终止条件。
更好的循环终止条件是
while abs(term)>1e-8
最后一点说明:您应该在返回之前将最后一个省略的术语添加到sine
。