sympy - 在 sympy 中求解多项式矩阵方程组
问题描述
我想使用 sympy 来求解满足一组二次和线性方程的向量,例如x.T @ A @ x = x.T @ B @ x = 1
和x.T @ C = 0
。这是我的尝试:
import numpy as np
from sympy.polys.polymatrix import PolyMatrix
from sympy import symbols
from sympy.solvers import solve_poly_system
x = PolyMatrix([symbols(f'x{k}') for k in range(2)])
A = np.eye(2)
B = np.array([1, 0]).reshape([2, 1])
one = PolyMatrix([1])
solve_poly_system([x.T @ A @ x - one, x.T @ B], [symbols(f'x{k}') for k in range(2)])
但是,这会产生以下错误:
PolynomialError: non-commutative expressions are not supported
有什么建议么?
解决方案
只需使用solve
而不是solve_poly_system
:
>>> solve([x.T @ A @ x - one, x.T @ B], [symbols(f'x{k}') for k in range(2)])
[(0.0, -1.0), (0.0, 1.0)]
推荐阅读
- python-3.x - 如何根据参考列表在数据框中的列中重命名输入错误的学生姓名
- python-3.x - Python(Windows)中父子进程之间的持续通信?
- android - 使用来自 json 源的数组适配器填充可搜索微调器
- hasura - hasura 是否生成索引?
- java - 如何调用存在于一个类中的参数化构造函数,该类中用@Component注释的另一个类注释@Service
- python - 关于属性对象如何为这个私有变量提供接口的问题
- java - Reactor Flux 和 Java Fiber 的区别
- r - 如何在 Rmarkdown 中整齐地显示数百个图?
- javascript - 从 json 字符串转换为 json 对象后,如何从 Typescript 中的对象数组中获取结果,我的编码有什么问题
- java - 这两种并发实现中哪一种更好更快