0
odeintを使って状態空間形式で動的システムをシミュレートしようとしています。 私のA行列は12 * 12で、B行列は12 * 4(行* cols)なので、私の初期状態ベクトルは12 * 1です。私は状態ベクトルを定義すると考えることができPython odeint-初期条件y0は1次元でなければならない
Traceback (most recent call last):
File "sim.py", line 17, in <module>
state = odeint(aircraft, state0, t)
File "/home/aluminium/anaconda2/lib/python2.7/site-packages/scipy/integrate/odepack.py", line 215, in odeint
ixpr, mxstep, mxhnil, mxordn, mxords)
ValueError: Initial condition y0 must be one-dimensional.
唯一の方法は、列ベクトルとしてあり、このエラーを取得しています
import numpy as np
from scipy.integrate import odeint
tmp = np.loadtxt("system.txt", skiprows =2)
A=np.matrix(tmp)[0:12,0:12]
B=np.matrix(tmp)[0:12,12:]
control = np.matrix([[0.0],[0.0],[-0.6310],[0.0]])
def aircraft(state, t):
return A*state + B*control
state0 = np.array([[6.809827628],[0.439572153],[0.0],[0.0],[0.0],[0.0],[0.0],[0.0],[0.0],[0.0],[0.0],[0.0]])
t = np.arange(0.0, 10.0, 0.1)
state = odeint(aircraft, state0, t)
を次のように
私のコードです。 この問題を解決するために初期状態ベクトルを定義する方法を教えてください。
ありがとうございます。