【问题标题】:Solving system of equations in sympy with matrix variables用矩阵变量求解 sympy 方程组
【发布时间】:2020-06-28 03:55:40
【问题描述】:

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

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

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

【问题讨论】:

    标签: sympy


    【解决方案1】:

    我认为nsolve 会感到困惑,因为u_mat 是一个矩阵。传递list(u_mat) 会得到nsolve 所期望的输入。下一个问题是你选择的初始猜测是方程组的奇异性。

    你可以在这里使用普通解决方案:

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

    【讨论】:

      猜你喜欢
      • 2020-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-11
      • 1970-01-01
      相关资源
      最近更新 更多