私はPythonを学び始めています(これはPythonスクリプトでの私の最初の試みです)。私は次の方程式h2o + co2 < - > o2 + ch2oの化合物の濃度がどのように結びついているかを示す一連の微分方程式を解いてグラフ化しようとしています。私は、スクリプト実行時に普通微分方程式インデックスエラー
は、しかし:
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
import math
y=[3.0,1.0,3.0,1.0]
g=15
i=25
tspan= np.linspace(0,5,100)
# h2o+co2 <-> o2+ch2o
def chemanalysis(y,t):
x =i*math.sin(math.pi*t/12)**2
dydt= -x*(y[0]*y[1]) + g*(y[2]*y[3]) #co2
dydt= -x*(y[0]*y[1]) + g*(y[2]*y[3]) #h2o
dydt= x*(y[0]*y[1]) - g*(y[2]*y[3]) #o2
dydt= x*(y[0]*y[1]) - g*(y[2]*y[3]) #ch2o
return dydt
y=odeint(chemanalysis,1,tspan)
print(y)
を私は次のエラーを取得する:
Traceback (most recent call last):
File "first.py", line 25, in <module>
y=odeint(chemanalysis,1,tspan)
ixpr, mxstep, mxhnil, mxordn, mxords)
File "first.py", line 16, in chemanalysis
dydt= -x*(y[0]*y[1]) + g*(y[2]*y[3]) #co2
IndexError: index 1 is out of bounds for axis 0 with size 1
私は、これはおそらくのpythonでの経験の私の不足によってもたらされた非常に単純な問題である知っています/一般的なプログラミング。私が間違っている箇所やこのコードを改善できる箇所については、本当に助けていただきたいと思います。私はいくつかの他の同様の問題を読んだ/他のスレッドでエラーメッセージが、私は自分自身で問題を解決することができませんでした。私はグラフのコンポーネントがこのスクリプトに現在添付されていないことを知っています、私はこの問題を最初に解決するまで待つことになりました。
よろしく
'y = odeint(chemanalysis、1、tspan)'で引数に '1'を指定すると、' chemanalysis '関数に実際に入りたいので、リストと見なされる整数を与えます'。このエラーが発生しました。 – Kanak