Алгоритм вычисления суммы главных миноров порядка n матрицы
matrix - исходная матрица
new_matrix - копия матрица
dim - размер матрицы
determinant - функция для вычисления определителя матрицы
думал реализовать функцию через рекурсию, но мозгов не хватило. сейчас функция работает только для миноров порядка n - 1 и 1
import copy
def sum_of_minors(n):
result = 0
if n == 1:
for i in range(dim):
result += matrix[i][i]
return result
if n == dim - 1:
for i in range(dim):
new_matrix = copy.deepcopy(matrix) # Создаем копию исходной матрицы
for j in range(dim):
del new_matrix[j][i]
del new_matrix[i]
result += determinant(new_matrix)
return result
Ответы (1 шт):
Автор решения: kojo tort
→ Ссылка
import copy
def determinant(matrix):
if len(matrix) == 1:
return matrix[0][0]
if len(matrix) == 2:
return matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0]
det = 0
for i in range(len(matrix)):
minor = [row[:i] + row[i+1:] for row in matrix[1:]]
det += ((-1) ** i) * matrix[0][i] * determinant(minor)
return det
def sum_of_minors(n, matrix, dim):
result = 0
for i in range(dim):
for j in range(dim):
new_matrix = [row[:] for row in matrix] # Создаем копию исходной матрицы
del new_matrix[i]
for k in range(len(new_matrix)):
del new_matrix[k][j]
result += ((-1) ** (i + j)) * determinant(new_matrix)
return result
# Пример использования
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
dim = len(matrix)
n = 2 # Порядок минора
result = sum_of_minors(n, matrix, dim)
print(result)