Python求解线性矩阵方程:numpy.linalg.solve与matrix类解析

Theo
Theo
发布时间:2026-10-13| 6人浏览过
原创

本文介绍如何使用Python的numpy库求解线性矩阵方程Ax=b。重点讲解np.linalg.solve函数的参数与返回值,以及numpy中已废弃的matrix类的构造与常用属性。通过对比ndarray与matrix,帮助读者理解线性代数运算在Python中的实现方式及注意事项。

使用numpy求解线性矩阵方程

本学期运筹学课程涵盖线性优化与非线性优化两大核心内容。在处理非线性优化问题时,常需运用拉格朗日乘子法,这往往涉及复杂线性方程组的求解。为此,笔者尝试利用Python进行计算,并在查阅资料后发现了一种简洁高效的解决方案,同时也收获了不少技术细节。以下先展示核心代码实现。


import numpy as np
# A = np.mat('1 2 3;2 -1 1;3 0 -1')
A = np.array([[1, 2, 3], [2, -1, 1], [3, 0, -1]])
b = np.array([9, 8, 3])
x = np.linalg.solve(A, b)
print(x)

代码实现是否足够简洁?这主要得益于numpy库的强大功能。我们的目标是求解矩阵方程Ax=b。具体操作中,调用numpy的线性代数模块np.linalg,并使用其中的solve(A, b)函数。仅需几行代码即可完成任务。该函数接收两个参数:第一个为矩阵A,可以是numpy的matrix数据类型或更常用的ndarray数组类型;第二个为右端项b,需为一维numpy数组。函数返回方程的解,其形状与b保持一致。需注意的是,若矩阵A为奇异矩阵或非方阵,函数将抛出错误。

至此,问题已得到妥善解决。在实际应用中,完全可以将Python作为计算工具直接使用。

numpy中matrix类的特性与用法

以下为补充知识:深入解析numpy中的matrix类。

matrix类是numpy中一个已过时的类,未来版本可能会将其移除。鉴于目前大多数开发者倾向于使用更灵活且通用的ndarray类型,移除该类的决定是可以理解的。


>>> a = np.matrix('1 2; 3 4')
>>> a
matrix([[1, 2],
    [3, 4]])
 
>>> np.matrix([[1, 2], [3, 4]])
matrix([[1, 2],
    [3, 4]])

matrix类支持两种构造方式。从第二种构造方法可以看出,其语法与常规数组类型完全一致。由此可知,matrix类实际上继承自ndarray,并基于ndarray构建。之所以使用matrix进行线性代数运算,是因为它提供了许多便捷的函数接口。


matrix.T   transpose:返回矩阵的转置矩阵
matrix.H   hermitian (conjugate) transpose:返回复数矩阵的共轭元素矩阵
matrix.I   inverse:返回矩阵a逆矩阵
matrix.A   base array:返回矩阵基于的数组<br data-filtered="filtered">matrix.AI   flattened ndarray: 返回展平的数组

其他类方法此处不再赘述,上述四个属性是最基础且类似语法糖的功能。

值得注意的是,ndarray类型同样能够方便地执行转置和求逆操作。


A = np.array([[1, 2], [3, 4]])
print(A.T)
A_I = np.linalg.inv(A)

以上内容为本文全部要点,希望能对读者的学习有所帮助,也欢迎大家继续支持本站。

相关标签:

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

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 算法库。