проблема "не подлежит подписке" - Python Ode решить - PullRequest
0 голосов
/ 11 мая 2019

Я пытаюсь решить проблему начальных значений (ode), используя scipy.integrate.solve_ivp.Но «ошибка типа:« объект с плавающей точкой »не является подписным» произошла

, когда я использую odeint, он работает.я просто меняю солвер с той же настройкой.

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()
TypeError: 'float' object is not subscriptable

Кто-нибудь может мне помочь?Кто-нибудь, помогите мне, плз!

1 Ответ

0 голосов
/ 11 мая 2019

Порядок аргументов в f действителен только для odeint, и даже этого можно избежать, используя опцию tfirst=True.

def f(t,z):

Ошибка в том, что переключаются массив и скаляр, поэтому вы не можете получить доступ к компонентам скаляра.

...