Poszczególne linie macierzy stanowią jej wiersze.import numpy as np from itertools import combinations
def minory_glowne(A): """ Funkcja zwraca wszystkie minory główne macierzy A. Minor główny: wybieramy te same indeksy wierszy i kolumn. """ n = A.shape minory = {} for k in range(1, n+1): for idx in combinations(range(n), k): submatrix = A[np.ix_(idx, idx)] det = round(np.linalg.det(submatrix), 5) # zaokrąglamy dla czytelności # Dodajemy 1 do każdego indeksu, aby indeksowanie zaczynało się od 1 minory[(k, tuple(i + 1 for i in idx))] = det return minory
def minory_glowne_wiodace(A): """ Funkcja zwraca minory główne wiodące macierzy A. Minor główny wiodący: lewy górny narożnik macierzy o wymiarach k x k. """ n = A.shape minory_wiodace = {} for k in range(1, n+1): submatrix = A[:k, :k] det = round(np.linalg.det(submatrix), 5) # Dodajemy 1 do każdego indeksu, aby indeksowanie zaczynało się od 1 minory_wiodace[k] = det return minory_wiodace
# ------------------ PRZYKŁAD ------------------ A = np.array([ [2, -1, 0, 3], [1, 3, 4, 4], [0, 2, 5, 5], [3, 4, 5, 5], ])
print("Macierz A:") print(A)
print("\nMinory główne:") for key, val in minory_glowne(A).items(): print(f"Stopień {key}, indeksy {key} → {val}")