NumPy - 矩阵求逆
什么是矩阵求逆?
矩阵求逆是寻找一个矩阵的过程,该矩阵称为逆矩阵,当与原矩阵相乘时,将生成单位矩阵。单位矩阵是一个方阵,主对角线上为 1,其他位置为 0。
并非所有矩阵都有逆。矩阵必须是方阵(行数和列数相同),并且其行列式必须非零才能有逆。
如果 A 是方阵,则其逆表示为 A-1,并由以下性质定义 -
A . A-1 = A-1 。 A = I
其中 I 是与 A 维度相同的单位矩阵。此属性意味着,当一个矩阵与其逆相乘时,结果为单位矩阵。
NumPy 中的矩阵求逆
NumPy 提供了 numpy.linalg.inv() 函数来计算矩阵的逆。让我们看看这个函数是如何工作的。
示例
在以下示例中,使用 numpy.linalg.inv() 函数计算矩阵 A 的逆。结果是一个满足属性 A 的新矩阵。 A-1 = I −
import numpy as np # 定义一个方阵 A = np.array([[1, 2], [3, 4]]) # 计算矩阵的逆 A_inv = np.linalg.inv(A) print(A_inv)
以下是得到的输出 −
[[-2. 1. ] [ 1.5 -0.5]]
验证逆矩阵
我们可以通过将计算出的矩阵与原始矩阵相乘并检查结果是否为单位矩阵来验证其确实是逆矩阵。
import numpy as np A = np.array([[1, 2], [3, 4]]) A_inv = np.linalg.inv(A) # 验证逆矩阵 identity_matrix = np.dot(A, A_inv) print(identity_matrix)
输出为单位矩阵,确认 A-1 是 A −
的正确逆矩阵。[[1.0000000e+00 0.0000000e+00] [0.0000000e+00 1.0000000e+00]]
矩阵求逆的性质
矩阵求逆有几个重要的性质。它们如下:
- 唯一性:如果一个矩阵有逆,那么它就是唯一的。
- 逆的乘积:两个矩阵乘积的逆是它们逆的乘积:(AB)-1 = B-1A-1。
- 转置的逆:矩阵转置的逆是逆的转置:(AT)-1 = (A-1)T。
矩阵求逆的条件
并非所有矩阵都能必须求逆。矩阵要有逆,必须满足以下条件:
- 方阵:矩阵的行数和列数必须相同。
- 非零行列式:矩阵的行列式必须非零。行列式为零的矩阵称为奇异矩阵,没有逆。
线性方程中的矩阵求逆
矩阵求逆常用于求解线性方程组。假设我们有一个方程组,表示为 AX = B,其中 A 是系数矩阵,X 是未知数向量,B 是常数向量,我们可以通过将方程两边乘以 A-1 −
来求解 X
X = A-1 . B
以下是实现相同功能的示例 -
import numpy as np # 系数矩阵 A = np.array([[1, 2], [3, 4]]) # 常量向量 B = np.array([[5], [6]]) # 计算 A 的逆 A_inv = np.linalg.inv(A) # 求解 X X = np.dot(A_inv, B) print(X)
这将产生以下结果 -
[[-4. ] [ 4.5]]
处理不可逆矩阵
有时,我们可能会遇到不可逆的矩阵。在这种情况下,尝试计算逆矩阵会导致错误。以下是使用 NumPy 处理此类情况的方法 -
import numpy as np def invert_matrix(matrix): try: return np.linalg.inv(matrix) except np.linalg.LinAlgError: return "矩阵不可逆。" # 不可逆矩阵 A = np.array([[1, 2], [2, 4]]) # 尝试计算逆 result = invert_matrix(A) print(result)
以下是得到的输出 −
矩阵不可逆。
矩阵求逆的实际应用
矩阵求逆有许多实际应用,它们是 −
- 求解线性方程组:如前所述,矩阵求逆可用于求解线性方程组。
- 计算机图形学:在计算机图形学中,旋转、缩放和平移等变换通常用矩阵表示。对这些矩阵求逆有助于恢复变换。
- 控制理论:在控制理论中,矩阵求逆用于求解动态系统的状态空间表示。