我想找到一个积分((sin x(^8,{x,0,2*Pi}(,并尝试编写一个简单的程序,没有任何外部模块作为"数学",它计算泰勒级数并将其总结为区间(0,2 * Pi(,但错误
Traceback (most recent call last):
File "E:pythonShADsin.py", line 27, in <module>
sum+=(ser(i*2*3.1415926/k))**8
File "E:pythonShADsin.py", line 21, in ser
sin_part+=((-1)**(j-1))*(a**(2j-1))/(fact(2*j-1))
ZeroDivisionError: 0.0 to a negative or complex power
突然发生。而且我只是看不出某物在哪里被零除或具有复数的幂,所有变量都只有真正的正值。"k"是序列数量和间隔(0,2*Pi(除法的值。
sum=0
k=20
res=0
def fact(t):
if t==0 or t==1:
res=1
else:
res=1
for l in range(2,t+1):
res=res*l
return res
def ser(a):
sin_part=a
for j in range(2,k):
print fact(2*j-1)
sin_part+=((-1)**(j-1))*(a**(2j-1))/(fact(2*j-1))
print 'yay'
return sin_part
for i in range(0,k-1):
sum+=(ser(i*2*3.1415926/k))**8
print sum
而且我只是看不出某物在哪里被零除或有权力 对于复数,所有变量只有实正值。
不对。 在第一次迭代中
for i in range(0,k-1):
sum+=(ser(i*2*3.1415926/k))**8
你有i=0
,所以ser
的参数是0,所以a == 0
,你有(a**(2j-1))
,它取0到复幂。
也许你的意思是a**(2*j-1)
? Python使用j
作为单位虚数,因此2j-1
是一个复数。