python - ValueError:x、y 和格式字符串不得为 None 泰勒正弦
问题描述
我即将用 taylorseries 近似正弦,并绘制不同的迭代以与真正的正弦进行比较。有人知道我在哪里做错了吗?
%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)
return(sinx)
或添加n==1
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)
推荐阅读
- java - 如何使用方言“Mvel”检查流口水中的 if 语句值?
- reactjs - 无法将日期和时间传递到下一个屏幕反应原生
- mysql - 以毫秒为单位的 Mysql 插入
- django-models - 如何在 django 中合并两个模型
- python - scipy.interpolate.Rbf() 的插值不准确
- php - 提交后的 URL 重写问题
- android - RecyclerView 滚动混乱(在大位图存在的情况下)
- r - 两个具有缺失值的矩阵的叉积
- cs-cart - 如何将邮政编码查找到我的 cs-cart 地址表单以制作附加组件?
- javascript - 混合字符串和数字(地址)的Lodash排序