如何用Numpy查找矩阵的辅助因子
在这篇文章中,我们将看到如何使用NumPy找到一个给定矩阵的辅助因子。没有直接的方法可以用Numpy找到一个给定矩阵的辅助因子。
在Numpy中使用矩阵的逆运算,推导出寻找辅助因子的公式
寻找矩阵的逆的公式:
A-1 = ( 1 / det(A) )* Adj(A) ----(1)
Adj(A)是A的邻接矩阵,可以通过对A的共因子矩阵进行转置来找到:。
Adj(A) = (cofactor(A))T ----(2)
将方程2代入方程1,得到如下结果:
A-1 = ( 1/det(A) ) * (cofactor(A))T
将det(A)送到方程的另一边:
det(A) * A-1 = (cofactor(A))T
去掉方程右边的转置将导致在方程左边应用转置。我们可以在A-1乘以det(A)后应用转置,但为了简单起见,我们将对A-1应用转置,然后再乘以det(A),然而,两个结果都是一样的。
det(A) * (A-1)T = cofactor(A)
最后,我们得出了寻找矩阵的辅助因子的公式:。
cofactor(A) = (A-1)T * det(A)
用Numpy实现。
需要的步骤:
- 寻找一个给定矩阵的行列式。
- 寻找矩阵的逆值,并对其进行转置。
例子1:在二维矩阵中寻找辅助因子
import numpy as np
def matrix_cofactor(matrix):
try:
determinant = np.linalg.det(matrix)
if(determinant!=0):
cofactor = None
cofactor = np.linalg.inv(matrix).T * determinant
# return cofactor matrix of the given matrix
return cofactor
else:
raise Exception("singular matrix")
except Exception as e:
print("could not find cofactor matrix due to",e)
print(matrix_cofactor([[1, 2], [3, 4]]))
输出:
[[ 4. -3.]
[-2. 1.]]
例子2。寻找辅助因子三维矩阵
import numpy as np
def matrix_cofactor(matrix):
try:
determinant = np.linalg.det(matrix)
if(determinant!=0):
cofactor = None
cofactor = np.linalg.inv(matrix).T * determinant
# return cofactor matrix of the given matrix
return cofactor
else:
raise Exception("singular matrix")
except Exception as e:
print("could not find cofactor matrix due to",e)
print(matrix_cofactor([[1, 9, 3],
[2, 5, 4],
[3, 7, 8]]))
输出:
[[ 12. -4. -1.]
[-51. -1. 20.]
[ 21. 2. -13.]]