由于某种原因,我在这个code...and上得到了一个模块对象不可调用的错误,我真的不明白为什么?
def func (t,a,x):
return
`plt.plot(t,(exp(a*t))*x(), label="lalala")` ....and回溯
plt.plot(t,(exp(a*t))*x(), label="lalala") TypeError: 'numpy.ndarray' object is not callable
将x()更改为x之后
x=np.array([1,100])
t=np.linspace(1,10,400)
def func (t,a,x):
return plt.plot(t,(exp(a*t))*x, label="lalala")现在我明白了:
ValueError:操作数无法与形状一起广播(400,) (2,)
目标是使用函数绘制图形:
随时间变化的exp(a*t)*x t...=>y= exp(a*t)*x
Y轴上,t是x轴。
a是孔时间常数,t(1,10,400)和x(1,100)会发生变化。
发布于 2015-03-19 22:12:11
很难确定你想要的是什么,但从你的编辑来看,你似乎有两个x的值,你想要在时间范围t=np.linspace(1,10,400)上绘制y= x.exp(a.t)的图形。在这种情况下:
import numpy as np
import matplotlib.pyplot as plt
a = 2
x = np.array([1,100])
t=np.linspace(1,10,400)
def func(t, a, z):
return z * np.exp(a * t)
plt.plot(t,func(t, a, x[0]))
plt.plot(t,func(t, a, x[1]))出现这个错误是因为x是一个包含两个值的数组,而NumPy (在没有帮助的情况下)不知道如何根据时间数组“广播”这两个值。如果希望func生成一个形状为(2,400)的数组来响应输入x,请使用np.newaxis在x数组中创建缺少的第二个轴:
func(t, a, x[:,np.newaxis])https://stackoverflow.com/questions/29144973
复制相似问题