【发布时间】:2019-01-31 10:38:56
【问题描述】:
如何使用 Sympy 求解矩阵微分方程?
我有一个形式为 y'(t) = A*y(t) + B 的方程,其中 A 是 3x3 矩阵,y(t) 是 1x3 向量,B 是 1x3 向量。
更具体地说,我正在研究一个使用微分方程移动 3D 点的计算机图形问题。我在 3D 空间 y(t) 中有一个点、一个 3x3 旋转矩阵和一个平移向量。 y'=Ay+B 方程是我正在研究的实际问题的简化,但我无法使用 Sympy 来解决甚至 y'=Ay+B。我正在 Sympy 中寻找封闭形式的解决方案(不是数字答案)。
我知道如何解方程 y'=Ay+B,但我想使用 Sympy 找到相同的解,然后调整代码以解决我要解决的更复杂的问题。
我当前的代码是这样的:
from sympy import *
y0 = Function('y0')
y1 = Function('y1')
y2 = Function('y2')
t = symbols(('t'))
b0,b1,b2 = symbols(('b0:3'))
y = Matrix([y0(t), y1(t), y2(t)])
B = Matrix([b0,b1,b2])
ode = Eq(y.diff(t), y)
soln = dsolve(ode, y0(t),y1(t),y2(t))
但这会导致 Python 错误
TypeError: cannot add <class 'sympy.matrices.immutable.ImmutableDenseMatrix'> and <class 'sympy.core.symbol.Dummy'>
在上面的示例中,它使用了更简化的 y'=y+B 示例,但即使这样也不行。
在 Sympy 中设置此类问题的最佳方法是什么?
【问题讨论】:
标签: python sympy symbolic-math