Python ODEINT无法调用函数
因此,我试图解决一个由三个ODE组成的系统,并开发了以下代码来使用ODEint解决它们。但是当我运行时,ODEint在调用方程组的函数时遇到了一个问题Python ODEINT无法调用函数,python,odeint,Python,Odeint,因此,我试图解决一个由三个ODE组成的系统,并开发了以下代码来使用ODEint解决它们。但是当我运行时,ODEint在调用方程组的函数时遇到了一个问题 from scipy.integrate import odeint #initial parameters X0 = 75. M0 = 150. G0 = 105. N0 = 80. T0 = 7. u10 = 0.0301231859 u20 = 0.0078947020 u30 = 0.0010708464 Rxg = 1.92 Rx
from scipy.integrate import odeint
#initial parameters
X0 = 75.
M0 = 150.
G0 = 105.
N0 = 80.
T0 = 7.
u10 = 0.0301231859
u20 = 0.0078947020
u30 = 0.0010708464
Rxg = 1.92
Rxm = 3.84
Rxma = 5.76
#define system of equations
def sugar(t,y,u10,u20,u30,Rxg,Rxm,Rxma):
ddt = [-u10*(X0+(Rxg*(G0-y[0]))+(Rxm*(M0-y[1]))+(Rxma*(N0-y[2]))),
-u20*(X0+(Rxg*(G0-y[0]))+(Rxm*(M0-y[1]))+(Rxma*(N0-y[2]))),
-u30*(X0+(Rxg*(G0-y[0]))+(Rxm*(M0-y[1]))+(Rxma*(N0-y[2])))]
return(ddt)
#time parameter
tinit = 0.
tend = 10.
h = 2.
t = arange(tinit,tend+h,h)
#initial guess
y0 = [G0,M0,N0]
#run odeint
y = odeint(sugar,y0,t,args = (u10,u20,u30,Rxg,Rxm,Rxma))
print 't =',t
print 'y =',y
在我的输出中,我得到:
t = [ 0. 2. 4. 6. 8. 10.]
y = [[ 105. 150. 80.]
[ 105. 150. 80.]
[ 105. 150. 80.]
[ 105. 150. 80.]
[ 105. 150. 80.]
[ 105. 150. 80.]]
error: Error occurred while calling the Python function named sugar
更改y0和t的顺序仍然会导致相同的错误。我不理解这个错误,也不知道它能引导我解决这个问题。任何帮助都将不胜感激。根据,糖的签名应为
func(y, t, ...)
而不是
func(t, y ...)
屈服
t = [ 0. 2. 4. 6. 8. 10.]
y = [[ 105. 150. 80. ]
[ 100.02722703 148.69673278 79.82322335]
[ 94.02207128 147.12289808 79.60974661]
[ 86.77020667 145.22232521 79.35195073]
[ 78.01280485 142.92718027 79.04063465]
[ 67.43730555 140.15554729 78.66468719]]
更改
y0
和t
的顺序仍然会导致相同的错误。
t = [ 0. 2. 4. 6. 8. 10.]
y = [[ 105. 150. 80. ]
[ 100.02722703 148.69673278 79.82322335]
[ 94.02207128 147.12289808 79.60974661]
[ 86.77020667 145.22232521 79.35195073]
[ 78.01280485 142.92718027 79.04063465]
[ 67.43730555 140.15554729 78.66468719]]