📅  最后修改于: 2023-12-03 14:56:40.614000             🧑  作者: Mango
本书是《RD Sharma》第12类的第7章,共有42个练习题。本篇代码主要是通过Python实现矩阵的伴随和逆。
本篇代码实现了如下函数:
get_matrix_minor(matrix, i, j)
: 获取矩阵原矩阵的第 i 行,第 j 列去掉后的矩阵。calculate_determinant(matrix)
: 计算矩阵的行列式。get_matrix_of_cofactors(matrix)
: 获取矩阵的代数余子式矩阵。calculate_transpose(matrix)
: 计算矩阵的转置矩阵。calculate_adjoint(matrix)
: 计算矩阵的伴随矩阵。calculate_inverse(matrix)
: 计算矩阵的逆矩阵。首先,需要将代码中的矩阵替换成自己的矩阵。例如:
matrix = [[1,2,3],
[4,5,6],
[7,8,9]]
然后,依次调用各个函数即可得到伴随矩阵和逆矩阵。例如:
minor_matrix = get_matrix_minor(matrix, 1, 1)
print(minor_matrix)
determinant = calculate_determinant(matrix)
print(determinant)
cofactors_matrix = get_matrix_of_cofactors(matrix)
print(cofactors_matrix)
transpose_matrix = calculate_transpose(matrix)
print(transpose_matrix)
adjoint_matrix = calculate_adjoint(matrix)
print(adjoint_matrix)
inverse_matrix = calculate_inverse(matrix)
print(inverse_matrix)
def get_matrix_minor(matrix, i, j):
return [row[:j] + row[j+1:] for row in (matrix[:i]+matrix[i+1:])]
def calculate_determinant(matrix):
n = len(matrix)
if n == 1:
return matrix[0][0]
if n == 2:
return matrix[0][0]*matrix[1][1] - matrix[0][1]*matrix[1][0]
determinant = 0
for j in range(n):
determinant += ((-1)**j)*matrix[0][j]*calculate_determinant(get_matrix_minor(matrix,0,j))
return determinant
def get_matrix_of_cofactors(matrix):
n = len(matrix)
cofactors = []
for i in range(n):
row = []
for j in range(n):
minor = get_matrix_minor(matrix,i,j)
row.append(((-1)**(i+j)) * calculate_determinant(minor))
cofactors.append(row)
return cofactors
def calculate_transpose(matrix):
return [[matrix[j][i] for j in range(len(matrix))] for i in range(len(matrix[0]))]
def calculate_adjoint(matrix):
cofactors = get_matrix_of_cofactors(matrix)
adjoint = calculate_transpose(cofactors)
return adjoint
def calculate_inverse(matrix):
determinant = calculate_determinant(matrix)
if determinant == 0:
raise ValueError("Matrix has no inverse")
adjoint = calculate_adjoint(matrix)
inverse = [[adjoint[i][j]/determinant for j in range(len(adjoint))] for i in range(len(adjoint))]
return inverse
以上就是本篇代码的完整介绍及代码片段。