Počítání s maticemi¶

Nekomutativita součinu

Pro libovolnou nesymetrickou čtvercovu matici $\boldsymbol A$ zkonstruujte matici $\boldsymbol B$ tak, že jejich součin nekomutuje, t.j. $\boldsymbol{AB}\ne\boldsymbol{BA}$.

Najděte takovou symetrickou $\boldsymbol B$.

Nápověda:

Součin (nejen matic) je třeba zapisovat pomocí *.

Náhodnou matici řádu $n$ vrací konstruktor random_matrix(ZZ, n, n), zde pro jednoduchost ZZ značí celočíselnou.

In [ ]:
 

Nekomutativita součinu symetrických matic

Komutuje součin matic pokud jsou obě matice symetrické? Své zjištění ověřte na několika náhodných symetrických maticích.

Nápověda:

Z náhodné matice lze odvodit symetrickou matici pomocí součinu a transpozice .T, což je zkratka pro metodu .transpose().

In [ ]:
 

Inverze matic

Invertujte následující matice a proveďte zkoušku.

Alespoň jednu spočítejte sami ručně, pro výpočet redukovaného odstupňovaného tvaru u ostatních můžete použít počítač.

Nápověda:

Jenotkovou matici $\mathbf I_n$ řádu $n$ vrací funkce identity_matrix(n).

Metodu A.augment(B) lze použít i pro rozšíření matice $\boldsymbol A$ o matici $\boldsymbol B$ (t.j. nejenom o vektory, jak už víme z řešení soustav).

In [2]:
A = matrix(QQ,[
    [ 1, 0, 1, 1],
    [ 2, 0, 1, 1],
    [ 2, 1, 0, 0],
    [ 1, 2, 1, 0]])

matrix(QQ,[
    [ 0, 2, 2, 1],
    [ 1, 0, 2, 0],
    [ 2, 1, 0, 2],
    [ 2, 2, 1, 1]])

matrix(QQ,[
    [ 2, 0, 1, 0],
    [ 1, 2, 0, 1],
    [ 2, 1, 1, 0],
    [ 1, 0, 1, 1]])

matrix(QQ,[
    [ 1, 1, 0, 0],
    [ 1, 2, 1, 1],
    [ 1, 1, 2, 0],
    [ 0, 1, 2, 1]])

matrix(QQ,[
    [ 1, 1, 2, 0],
    [ 1, 2, 1, 1],
    [ 0, 1, 2, 1],
    [ 1, 2, 0, 0]]);

Maticové rovnice

Vyřešte následující maticové rovnice nejprve symbolicky a pak i numericky. Proveďte zkoušku.

a) $(\boldsymbol A-\boldsymbol D)\boldsymbol X_1=\boldsymbol A$,

b) $\boldsymbol X_2\boldsymbol B=\boldsymbol C+\boldsymbol D$,

c) $\boldsymbol A\boldsymbol X^{-1}_3=\boldsymbol E^\mathrm{T}$

d) $(\boldsymbol X^{-1}_4-\boldsymbol C)^\mathrm{T}=\boldsymbol D$

e) $(\boldsymbol A\boldsymbol X_5)^{-1}+\boldsymbol C=\boldsymbol E$

f) $\boldsymbol D^\mathrm{T}\boldsymbol X^{-1}_6=\boldsymbol B+2\mathbf I$

Nápověda:

Pro inverzi matice použijte metodu .inverse().

Připomeňme, že ověření rovnosti $L=P$ lze provést např. vyhodnocením podmínky L == P.

In [ ]:
A = matrix(QQ,[
    [ 1, 0, 1, 1],
    [ 2, 0, 1, 1],
    [ 2, 1, 0, 0],
    [ 1, 2, 1, 0]])

B = matrix(QQ,[
    [ 0, 2, 2, 1],
    [ 1, 0, 2, 0],
    [ 2, 1, 0, 2],
    [ 2, 2, 1, 1]])

C = matrix(QQ,[
    [ 2, 0, 1, 0],
    [ 1, 2, 0, 1],
    [ 2, 1, 1, 0],
    [ 1, 0, 1, 1]])

D = matrix(QQ,[
    [ 1, 1, 0, 0],
    [ 1, 2, 1, 1],
    [ 1, 1, 2, 0],
    [ 0, 1, 2, 1]])

E = matrix(QQ,[
    [ 1, 1, 2, 0],
    [ 1, 2, 1, 1],
    [ 0, 1, 2, 1],
    [ 1, 2, 0, 0]])

Řešení¶

Pokud si nevíte rady, můžete zde kliknout a ukáže se vám řešení (nebo alespoň jeho podstatná část):

Nekomutativita součinu

Je možné začít s náhodnou matici

A = random_matrix(ZZ,4,4)


a prozkoumat efekt součinů $\boldsymbol{AB}$ a $\boldsymbol{BA}$, kde $\boldsymbol B$ má všechny složky nulové až na jednu, např.

B = matrix([
    [ 0, 1, 0, 0],
    [ 0, 0, 0, 0],
    [ 0, 0, 0, 0],
    [ 0, 0, 0, 0]])


Pro odvození obecného postupu stačí vzít matici $\boldsymbol A$, která se od své transpozice liší jen na dvou pozicích, např.

A = matrix([
    [ 1, 1, 1, 1],
    [ 1, 1, 1, 3],
    [ 1, 1, 1, 1],
    [ 1, 5, 1, 1]])


nebo dokonce

A = matrix([
    [ 0, 0, 0, 0],
    [ 0, 0, 0, 3],
    [ 0, 0, 0, 0],
    [ 0, 0, 0, 0]])


Odpozorovaný princip je však třeba popsat obecně. To už není úkol pro sage.


Nekomutativita součinu symetrických matic

Vyzkoušejte následující.

C = random_matrix(ZZ,3,3)
D = random_matrix(ZZ,3,3)

A = C * C.T     
B = D * D.T

A, B, A * B, B * A    


I zde je možné sestavit $\boldsymbol B$ obecně v závislosti na $\boldsymbol A$, podobně jako v předchozí úloze.


Inverze matic

Vyzkoušejte postupně následující příkazy:

identity_matrix(4)
A.augment(identity_matrix(4))
A.augment(identity_matrix(4)).rref()
A.augment(identity_matrix(4)).rref()[:,4:]
B = A.augment(identity_matrix(4)).rref()[:,4:]
A, B, A * B, B * A, B == A.inverse()


Pro provedení zkoušky, čili že nalezená $\boldsymbol B$ je hledaná $\boldsymbol A^{-1}$, stačí ve skutečnosti ověřit, že jen jeden ze součinů $\boldsymbol{AB}$ a $\boldsymbol{BA}$ dává jednotkovou matici.


Maticové rovnice

Ekvivalentními úpravami rovnice získáme vyjádření: $\boldsymbol X_1=(\boldsymbol A-\boldsymbol D)^{-1}\boldsymbol A$. To pak lze numericky vyhodnotit např. výrazem:

( A - D ).inverse() * A


Zkoušku lze pak provést např. následovně:

X = ( A - D ).inverse() * A
( A - D ) * X == A


Podobně pro zbývající rovnice.