首页 > 解决方案 > 矩阵形式的 ODE 系统

问题描述

我试图弄清楚如何为 2x2 矩阵 A 求解和绘制系统 dx/dt = Ax。我真的不知道该怎么做。我目前拥有的代码如下:

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint

def sys(x, t, A):
    x1, x2 = x    
    return [A @ x]

A = np.array([[1, 2], [3, 4]])


x0 = np.array([[1], [2]])

t = np.linspace(0, 100, 10000)

sol = odeint(sys, x0, t, A)

ax = plt.axes()
ax.plot(t, sol)
plt.show()

错误信息是:

output = _odepack.odeint(func, y0, t, args, Dfun, col_deriv, ml, mu,
odepack.error: Extra arguments must be in a tuple.

非常感谢有关如何使此代码正常工作的帮助。请注意,我对编码很陌生,更不用说编码微分方程了。多谢了。

标签: numpyodedifferential-equations

解决方案


您必须在元组中传递其他参数。像这样的东西:

sol = odeint(sys, x0, t, args=(A,))

请参阅scipy.integrate.odeint 上的文档


推荐阅读