ValueError: операнды не могут быть переданы вместе с формами (400,) (2,)
По какой-то причине я получаю объект модуля не вызываемой ошибкой в этом коде... и я действительно не понимаю, почему?
def func (t,a,x):
return
`plt.plot(t,(exp(a*t))*x(), label="lalala")`
.... и обратная связь
plt.plot(t,(exp(a*t))*x(), label="lalala")
TypeError: 'numpy.ndarray' object is not callable
после изменения х () на х
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
на оси у, а т является осью х.
a
постоянная времени отверстия, t(1,10,400)
а также x(1,100)
изменения.
1 ответ
Немного трудно знать наверняка, что вы ищете, но из ваших правок видно, что у вас есть два значения: x
Вы хотите построить график y = x.exp(в) для временного диапазона t=np.linspace(1,10,400)
, В таком случае:
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])