NumPy では、次の形式の微分方程式を表現しようとしていますy' = p(t)y + g(t)
。ここp(t)
で、 は nxn 行列、 およびg(t)
は nx1 行列です。何かのようなもの:
y' = [[1,5], [2,1]] + [[e^t], [1]]
NumPy で行列を表す方法は知っていますが、変数 (2t
または などe^t
) を含む行列はどのように表すのでしょうか?
この意味での「変数」(y
の関数であるなどt
) は、おそらくその変数のドメインの 1 次元配列で表されるはずです。これにより、配列の次元が増加し(n, n, m)
ますm
(ドメインのサイズ(長さ)になりますt
)。
scipy ode ソルバーを使用する予定がある場合は、それを関数として記述します。
t = np.arange(0, 10, .1)
y' = [[1,5]*len(t), [2,1]*len(t)] + [[np.exp(t)], [1]*len(t)]
次のようなことをする必要があります:
def yderiv(t):
return [[1,5], [2,1]] + [[np.exp(t)], [1]]