|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
import sympy as sp
from matplotlib import pyplot as plt
x = sp.symbols('x')
y = sp.exp(x)
expantion = y.series(x,0,5).removeO()
plt.plot(x,expantion)
plt.plot(x,z)
这是代码,然后会报错:TypeError: Cannot convert expression to float
我试了将sp.exp修改为math.e**x或者修改为numpy.power(math.e,x),还是一样报错
请问应该如何解决,非常感谢
还有有一个问题,如果用x = numpy.linspace(-10,4,100)的话也是会报错:AttributeError: 'numpy.ndarray' object has no attribute 'series',
是不是因为此时y已经不是一个函数了不能展开,如果是这样应该怎么限制x的范围呢?
非常感谢
matplotlib的plot函数需要的数据类型和的expantion的类型不一样,并且如报错所说
Cannot convert expression to float
所以错误在这里:
解决方法
1.建议使用sympy的画图函数:
- from sympy.plotting import plot #引入画图函数
- plot(expantion, (x, 0, 100)) # 绘制图像,x的范围限制为【0,100】
复制代码
2.想办法把expantion转换为matplotlib的pyplot能用的类型,再使用它画图:
- import numpy #引入需要的模块
- f = sp.lambdify(x, expantion, "numpy") #转换为 NumPy 可以使用的函数
- x1 = numpy.arange(0, 10)# 设置自变量范围
- plt.plot(x1, f(x1)) #画出图像
- plt.show() #显示
复制代码
|
|