Алгоритм вычисления суммы главных миноров порядка 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)
→ Ссылка