Determinanty
Ověření vztahů o součinu
Ověřte vztah o determinantu součinu $\det(\boldsymbol A\boldsymbol B)=\det \boldsymbol A \cdot \det \boldsymbol B$ a determinantu inverzní matice $\det(\boldsymbol A^{-1}) = (\det \boldsymbol A)^{-1}$ pro náhodné regulární čtvercové matice řádu 4.
Nápověda:
Pro výpočet hodnoty determinantu použijte funkci det(A) nebo metodu A.determinant().
Součin matic je jednoduše A*B, podobně i součet a rozdíl.
Inverzní matice je A^(-1) nebo A.inverse().
Matici $\boldsymbol B$ můžete zadat ručně nebo použít metodu random_matrix(ZZ,4,4). Tato náhodná matice ovšem nemusí být regulární.
A = matrix([
[1, 2, 3, 4],
[5, 6, 7, 8],
[4, 3, 3, 1],
[0, 1, 2, -5]])
Generování matice
Sestrojte celočíselnou matici řádu 5 se všemi prvky kladnými a determinantem 7.
Cramerovo pravidlo
Pomocí Cramerova pravidla vyřešte následující soustavu $\boldsymbol A\boldsymbol x=\boldsymbol b$.
Nápověda:
Pro náhradu sloupce v matici si nejprve vytvořte její kopii A1 = copy(A).
Teprve pak proveďte dosazení vektoru $\boldsymbol b$ do příslušného sloupce A1[:,0] = b.
Pozor, indexování v Sage (stejně jako v Pythonu) začíná od 0, nikoli od 1.
A = matrix(QQ, [
[3, 4, 1, 2, 1, 1, 4],
[1, 6, 0, 1, 1, 6, 3],
[0, 1, 5, 2, 6, 2, 1],
[0, 1, 5, 4, 0, 1, 3],
[0, 4, 5, 3, 2, 6, 3],
[4, 5, 3, 2, 3, 2, 2],
[2, 3, 5, 0, 1, 3, 0]])
b = vector(QQ, [35, 92, 7, 18, 78, 36, 41])
Počet koster
Pomocí determinantu Laplaceovy podmatice určete počet koster Petersenova grafu a grafů krychle, osmistěnu, dvanáctistěnu a dvacetistěnu.
Nápověda:
Graf lze převzít z databáze grafů G = graphs.PetersenGraph() nebo graphs.DodecahedralGraph() apod., podle tohoto seznamu.
Graf lze znázornit pomocí G.show().
Laplaceovu matici lze spočítat z matice sousednosti G.adjacency_matrix() nebo použít přímo metodu laplacian_matrix().
Výběr podmatice lze provést pomocí podseznamů, zde např.: L[1:,1:].
Řešení
Pokud si nevíte rady, můžete zde kliknout a ukáže se vám řešení (nebo alespoň jeho podstatná část):
Ověření vztahů o součinu
Matici lze nastavit ručně nebo náhodně
B=random_matrix(ZZ,4,4).
Poté stačí porovnat hodnoty determinantů A*B a B*A.
Například:
B = matrix([
[1, 0, 3, 2],
[9, 3, 4, 6],
[0, 2, 3, 1],
[0, 7, 5,-3]])
nebo
B = random_matrix(ZZ,4,4)
a poté
det(A*B)
det(B*A)
det(A)
det(A.inverse())
det(B)
det(B.inverse())
Generování matice
Takovou matici lze získat například úpravami horní trojúhelníkové matice s deteminanetem 7. Výpočet lze zjednodušit, pokud si uvědomíme, že úpravy lze interpretvat jako dolní trojúhelníkovou matici determinantu 1.
Například:
A = matrix([
[7, 1, 1, 1, 1],
[0, 1, 1, 1, 1],
[0, 0, 1, 1, 1],
[0, 0, 0, 1, 1],
[0, 0, 0, 0, 1]])
B = matrix([
[1, 0, 0, 0, 0],
[1, 1, 0, 0, 0],
[1, 1, 1, 0, 0],
[1, 1, 1, 1, 0],
[1, 1, 1, 1, 1]])
B*A
det(B*A)
Protože prvky nad, resp. pod diagonálou jsou kladná celá čísla, budou ve výsledném součinu všechny prvky také kladná celá čísla.
Cramerovo pravidlo
Například s použitím cyklu:
x = zero_vector(QQ, 7)
det_A = det(A)
for i in range(7) :
A_copy = copy(A)
A_copy[:,i] = b
x[i] = det(A_copy) / det_A
print(x)
Výsledek lze srovnat s řešením A.solve_right(b) nebo provést zkoušku výpočtem A*x.
Počet koster
Výběrem $G$ lze provést výpočty pro různé grafy:
G = graphs.PetersenGraph()
graphs.TetrahedralGraph()
graphs.HexahedralGraph()
graphs.OctahedralGraph()
graphs.IcosahedralGraph()
graphs.DodecahedralGraph()
G.show()
L = G.laplacian_matrix()
nebo s použitím jednotkové matice a matice sousednosti (pro ostatní grafy třeba upravit řád a stupeň)
L = ( 3 * identity_matrix(10) - G.adjacency_matrix() )
det(L[1:,1:])