ValueError:x、y和格式字符串不能为None-taylor正弦



我将用泰勒级数近似正弦,并绘制与实际正弦比较的不同迭代。有人知道我哪里搞错了吗?

%pylab inline
from math import factorial as fak
def taylor_sinus(n,x):
if n==1:
sinx=x
elif n < 1:
print('ERROR 302: approximation not found')
else:
sinx=0
for i in range(1,n):
sinx=sinx-((-1)**i*((x**(2*i-1))/fak(2*i-1)))
return(sinx)

x=np.linspace((-2*pi), (2*pi), 100)
iterations=(1,3,8,11,)
for iteration in (iterations):
plt.plot(x, taylor_sinus(iteration,x), label='Iterationen: {0}'.format(iteration))
plt.plot(x, sin(x), ':', lw=4, label='The one and only Sinus')
plt.legend(bbox_to_anchor=(1, 1))
plt.xlabel('x')
plt.ylabel('f(x)')
plt.ylim(-2,2)
plt.grid()
plt.figure(figsize=(20,10))

您有错误的缩进,return(sinx)else内,对于n==1,它返回None

因此更改缩进

def taylor_sinus(n,x):
if n==1:
sinx=x
elif n < 1:
print('ERROR 302: approximation not found')
else:
sinx=0
for i in range(1,n):
sinx=sinx-((-1)**i*((x**(2*i-1))/fak(2*i-1)))
return(sinx)

或为n==1添加return(sinx)

def taylor_sinus(n,x):
if n==1:
sinx=x
return(sinx)
elif n < 1:
print('ERROR 302: approximation not found')
else:
sinx=0
for i in range(1,n):
sinx=sinx-((-1)**i*((x**(2*i-1))/fak(2*i-1)))
return(sinx)

最新更新