【发布时间】:2018-02-08 15:48:05
【问题描述】:
我要解一个矩阵微分方程,like this one:
import numpy as np
from scipy.integrate import odeint
def deriv(A, t, Ab):
return np.dot(Ab, A)
Ab = np.array([[-0.25, 0, 0],
[ 0.25, -0.2, 0],
[ 0, 0.2, -0.1]])
time = np.linspace(0, 25, 101)
A0 = np.array([10, 20, 30])
MA = odeint(deriv, A0, time, args=(Ab,))
但是,这不适用于具有复杂矩阵元素的情况。我正在寻找类似于scipy.integrate.complex_ode 的东西,但寻找的是odeint。如果这是不可能的,我应该使用什么其他库来执行集成?感谢您的帮助!
【问题讨论】:
-
几个相关问题:stackoverflow.com/questions/26742818/…、stackoverflow.com/questions/26580854/…、stackoverflow.com/questions/19910189/…(还有更多)。在这些问题中,我建议使用我编写的名为
odeintw的包装器。 -
@WarrenWeckesser 这种方法需要将矩阵写成函数,对吧?我的问题是我有 150x150 矩阵并且将它们写成 python 函数太耗时了。计算雅可比也需要大量时间。有没有一种方法可以使用类似于我在我提到的那个问题中提出的包装器?即喜欢
MA = odeint(deriv, A0, time, args=(Ab,))谢谢 -
“这种方法需要将矩阵写成一个函数,对吗?” 不,做你已经在做的事情,但是在数组
Ab中有复数系数。然后还要让A0复杂,odeintw应该可以正常工作。 -
“计算雅可比也需要很多时间。”您不必提供雅可比函数。
-
@WarrenWeckesser 谢谢,起初我没有让 A0 变得复杂。这解决了问题。