在 线性系统函数类 LinearSystem.py 中添加 计算矩阵的逆功能
def inv(A):
if A.row_num() != A.col_num():
return None
n = A.row_num()
ls = LinearSystem(A, Matrix.identity(n))
if not ls.gauss_jordan_elimination():
return None
invA = [[row[i] for i in range(n, 2*n)] for row in ls.Ab]
return Matrix(invA)
验证功能
A = Matrix([[1,2],[3,4]])
invA = inv(A)
print(invA)
print(A.dot(invA))
print(invA.dot(A))
# 输出结果
Matrix([[-1.9999999999999996, 0.9999999999999998], [1.4999999999999998, -0.4999999999999999]])
Matrix([[1.0, 0.0], [8.881784197001252e-16, 0.9999999999999996]])
Matrix([[0.9999999999999996, 0.0], [2.220446049250313e-16, 1.0]])
在playLA包下创建新的文件 LU.py 去实现矩阵的LU分解功能
from .Matrix import Matrix
from .Vector import Vector
from ._global import is_zero
def lu(matrix):
assert matrix.row_num() == matrix.col_num(), 'matrix must be a squa