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 "Matrix is not invertible."
# Non-invertible matrix
A = np.array([[1, 2], [2, 4]])
# Attempt to compute the inverse
result = invert_matrix(A)
print(result)
以下是得到的结果 −
Matrix is not invertible.
矩阵求逆的实际应用
矩阵求逆有许多实际应用,它们包括 −
- 求解线性方程组:如前所述,矩阵求逆可用于求解线性方程组。
- 计算机图形学:在计算机图形学中,旋转、缩放和平移等变换通常由矩阵表示。求逆这些矩阵可以帮助还原变换。
- 控制理论:在控制理论中,矩阵求逆用于求解动态系统的状态空间表示。