1. ホーム
  2. python

[解決済み] IndexError: Index 2 is out of bounds for axis 0 with size 2

2022-02-17 22:44:46

質問

3つの微分方程式を解こうとしているのですが、次のようなエラーが出てしまいます。

これは私のコードです。

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint
T=np.arange(0, 7, 1e-4)

k1=0.92
k2=0.47
k3=0.25
m = 50
def SistemaEqDif(Y,t):
    s=Y[0]
    b=Y[1]
    l=Y[2]
    dEdt = -k1*s
    dCdt = (k1/(0.05*m))-k2*b
    dldt = k2*b-k3*l
    return [dEdt, dCdt,dldt]
C0 = 0
E0 = 1 
Y0 = [E0, C0]
Y = odeint(SistemaEqDif,Y0,T)
plt.plot(T,Y[:,0],'g')
plt.plot(T,Y[:,1],'r')
plt.plot(T,Y[:,2],'b')

そして、これがエラーです。

File "/Users/arihalpern/untitled29.py", line 21, in SistemaEqDif
    l=Y[2]
IndexError: index 2 is out of bounds for axis 0 with size 2

解決方法は?

(回答はWarren Weckesser氏によるものです。 質問に対するコメント .)

あなたが持っているのは Y0 = [E0, C0] . システムが3次元である場合 Y0 は3つの値を持たなければならないので、次のような Y0 = [E0, C0, l0] ここで l0 の初期条件です。 l(t) .