我试图用odeint函数求解一个简单的微分方程。它给出了匹配数组大小的错误。我认为我的 initial_condi 与等式功能不匹配。我无法弄清楚错误究竟在哪里。 Blow是错误和代码。任何帮助将不胜感激。
RuntimeError:func(1)返回的数组大小与y0(3)
的大小不匹配from scipy import *
from scipy.integrate import odeint
from operator import itemgetter
import matplotlib as plt
from matplotlib.ticker import FormatStrFormatter
from pylab import *
from itertools import product
import itertools
from numpy import zeros_like
import operator
initial_condi = [1, 1, 1]
t_range = arange(0.0,60.0,1.0)
def equation(w, t):
T,I,V = w
dT= V*I*10.24-T*1.64
return dT
result_init = odeint(equation, initial_condi, t_range)
plt.plot(t, result_init[:, 0])
plt.show()
答案 0 :(得分:0)
由于你的状态向量有3个组件,ODE函数的返回值也需要有3个组件,即T,I,V
的导数。您只提供了dT
,但应return [dT, dI, dV ]
。