Python SymPy求解矩阵方程:左乘与右乘的陷阱

七月
七月
发布时间:2026-10-13| 2人浏览过
原创

本文介绍如何使用Python SymPy库求解矩阵方程。重点解析AX=A+2X与XA=A+2X两种情形下,因矩阵乘法不可交换性导致的左乘与右乘求逆差异。通过具体代码示例展示如何定义矩阵、计算逆矩阵并验证解的正确性,帮助开发者避免常见的运算顺序错误。

本文使用的SymPy版本为1.2。

假设我们需要求解如下矩阵方程:

AX = A + 2X

其中:

在求解之前,首先对矩阵方程进行化简处理:

(A - 2E)X = A

令:

B = (A - 2E)

在qtconsole中输入以下程序进行求解:

In [26]: from sympy import *

In [27]: from sympy.abc import *

In [28]: A=Matrix([[4,2,3],[1,1,0],[-1,2,3]])

In [29]: A
Out[29]: 
Matrix([
[ 4, 2, 3],
[ 1, 1, 0],
[-1, 2, 3]])

In [30]: B=A-2*diag(1,1,1)

In [31]: B
Out[31]: 
Matrix([
[ 2, 2, 3],
[ 1, -1, 0],
[-1, 2, 1]])

In [32]: B.inv()*A
Out[32]: 
Matrix([
[ 3, -8, -6],
[ 2, -9, -6],
[-2, 12, 9]])

对求解结果进行验证:

In [38]: X=B.inv()*A

In [39]: X
Out[39]: 
Matrix([
[ 3, -8, -6],
[ 2, -9, -6],
[-2, 12, 9]])

In [40]: A*X-A-2*X
Out[40]: 
Matrix([
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])

在求解矩阵方程时,需特别注意左乘与右乘的区别。在此例中,解的形式为 B.inv() * A。如果矩阵方程变为:

XA = A + 2X

那么求解结果应为:

In [35]: X=A*B.inv()

In [36]: X
Out[36]: 
Matrix([
[ 3, -8, -6],
[ 2, -9, -6],
[-2, 12, 9]])

对结果进行验证:

X=A*B.inv()

X
Out[36]: 
Matrix([
[ 3, -8, -6],
[ 2, -9, -6],
[-2, 12, 9]])

X*A-A-2*X
Out[37]: 
Matrix([
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])

以上关于Python SymPy求解矩阵方程的方法分享完毕,希望能对大家有所帮助。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。