【发布时间】:2021-04-10 10:21:04
【问题描述】:
我将用泰勒序列近似正弦,并绘制不同的迭代以与真正的正弦进行比较。有谁知道我哪里出错了?
%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))
【问题讨论】:
-
总是将完整的错误消息(从单词“Traceback”开始)作为文本(不是屏幕截图)放在有问题的(不是评论)中。那里有有用的信息。
-
你可能有错误的缩进并且
return(sinx)在else里面——所以对于n==1它返回None——这使得显示它有问题并且你得到你的错误消息。跨度>
标签: python numpy matplotlib math taylor-series