“不可下标”问题-Python ODE解决

时间:2019-05-11 10:58:06

标签: python ode

我正在尝试使用scipy.integrate.solve_ivp解决初值问题(ode)。 但是发生了“类型错误:“浮动”对象不可下标”

当我使用odeint时,它可以工作。 我只是用相同的设置更改求解器。

java.lang.String
def f(z, t):

    c1 = z[0]
    c2 = z[1]

    dc1dt = -k1*c1 + k2*c2*(1-c1-c2)
    dc2dt = k1*c1 - k2*c2*(1-c1-c2) - 2*k3*c2*c2
    dcdt = [dc1dt, dc2dt]

    return dcdt

def main():

    k1 = 0.04
    k2 = 10.0
    k3 = 1500.0

    z0 = [0.9, 0.1]

    sol = solve_ivp(f,[0, 3000] , z0, method = 'RK45')
    return sol

main()

有人可以帮助我吗? 有人帮我吧!

1 个答案:

答案 0 :(得分:0)

f中参数的顺序仅对odeint有效,使用选项tfirst=True可以避免。

def f(t,z):

错误是因为数组和标量已切换,您无法访问标量的组件。