求解具有矩阵变量的符号方程组

  • 本文关键字:变量 符号 方程组 sympy
  • 更新时间 :
  • 英文 :


我正在寻找一个可以解决复杂方程组的矩阵;也就是说,很难将方程展平为矢量形式。这是一个玩具示例,显示了我收到的错误:

from sympy import nsolve, symbols, Inverse
from sympy.polys.polymatrix import PolyMatrix
import numpy as np
import itertools as itr
nnodes = 2
nodes = list(range(nnodes))
u_mat = PolyMatrix([symbols(f'u{i}{j}') for i, j in itr.product(nodes, nodes)]).reshape(2, 2)
u_mat_inv = Inverse(u_mat)
equations = [
u_mat_inv[0, 0] - 1,
u_mat_inv[0, 1] - 0,
u_mat_inv[1, 0] - 0,
u_mat_inv[1, 1] - 1
]
s = nsolve(equations, u_mat, np.ones(4))

这将引发以下错误:

TypeError: X must be a row or a column matrix

有没有办法解决这个问题而不必以矢量形式编写方程?

我认为nsolve变得混乱u_mat因为它是一个矩阵。传递list(u_mat)将按照nsolve的预期给出输入。下一个问题是你选择的初始猜测是方程组的奇点。

不过,您可以在此处使用普通求解:

In [24]: solve(equations, list(u_mat))
Out[24]: [(1, 0, 0, 1)]

最新更新