Motivace.

Varianty zápisu soustavy lineárních rovnic

Uvažujme následující tři problémy:

  1. Najděte všechna reálná čísla \(x_1\), \(x_2\), splňující dvojici rovnic \[ \begin{aligned} 4x_1&+5x_2=7\\ \phantom{4}x_1&-2x_2=4 \end{aligned} \]
  2. Najděte všechna reálná čísla \(x_1\), \(x_2\), splňující vektorovou rovnici \[ \begin{aligned} \begin{pmatrix} 4\\1 \end{pmatrix} x_1 + \begin{pmatrix} 5\\-2 \end{pmatrix} x_2 = \begin{pmatrix} 7\\4 \end{pmatrix} \end{aligned}\]
  3. Najděte všechna reálná čísla \(x_1\), \(x_2\), splňující maticovou rovnici \[\begin{aligned} \begin{pmatrix} 4&5\\1&-2 \end{pmatrix} \begin{pmatrix} x_1\\x_2 \end{pmatrix} = \begin{pmatrix} 7\\4 \end{pmatrix} \end{aligned} \]

Všechny problémy jsou ekvivalentní a jedná se o jiný zápis téhož. Jednou však používáme soustavu rovnic, vektory a jejich lineární kombinaci a jednou matice a maticový součin!

Soustava lineárních rovnic

Definice (soustava lineárních rovnic).

Soustavou \(m\) lineárních rovnic o \(n\) neznámých nazýváme soustavu rovnic \[ \tag{1} \begin{gathered} a_{11}x_1+a_{12}x_2+a_{13}x_3+\cdots+a_{1n}x_n=b_1 \\ a_{21}x_1+a_{22}x_2+a_{23}x_3+\cdots+a_{2n}x_n=b_2 \\ a_{31}x_1+a_{32}x_2+a_{33}x_3+\cdots+a_{3n}x_n=b_3 \\ \vdots \\ a_{m1}x_1+a_{m2}x_2+a_{m3}x_3+\cdots+a_{mn}x_n=b_m \end{gathered} \] Proměnné \(x_1\), \(x_2\), , \(x_n\) nazýváme neznámé. Reálná čísla \(a_{ij}\) nazýváme koeficienty levých stran, reálná čísla \(b_j\) koeficienty pravých stran soustavy rovnic. Řešením soustavy rovnic rozumíme uspořádanou \(n\)-tici reálných čísel \([t_1, t_2, \ldots, t_n]\) po jejichž dosazení za neznámé (v tomto pořadí) do soustavy dostaneme ve všech rovnicích identity.

Definice (matice soustavy).

Matici \[ A=\left( \begin{matrix} a_{11}& a_{12}& a_{13}& \cdots{}& a_{1n}\\ a_{21}& a_{22}& a_{23}& \cdots{}& a_{2n}\\ \vdots{} &\vdots{}& {} &\ddots{}& \vdots{}\\ a_{m1}& a_{m2}& a_{m3}& \cdots{}& a_{mn}\\ \end{matrix}\right) \] nazýváme maticí soustavy (1). Matici \[ A_r=\left( \begin{array}{ccccc|c} a_{11}& a_{12}& a_{13}& \cdots{}& a_{1n}&b_1\\ a_{21}& a_{22}& a_{23}& \cdots{}& a_{2n}&b_2\\ \vdots{} &\vdots{}& {} &\ddots{}& \vdots{}&\vdots\\ a_{m1}& a_{m2}& a_{m3}& \cdots{}& a_{mn}&b_m\\ \end{array} \right) \] nazýváme rozšířenou maticí soustavy (1).

Vektorový zápis soustavy lineárních rovnic

Soustavu (1) lze ekvivalentně přepsat do vektorového tvaru \[ \begin{pmatrix} a_{11}\\a_{21}\\\vdots\\a_{m1} \end{pmatrix} x_1+ \begin{pmatrix} a_{12}\\a_{22}\\\vdots\\a_{m2} \end{pmatrix} x_2+ \begin{pmatrix} a_{13}\\a_{23}\\\vdots\\a_{m3} \end{pmatrix} x_3+\cdots+ \begin{pmatrix} a_{1n}\\a_{2n}\\\vdots\\a_{mn} \end{pmatrix} x_n= \begin{pmatrix} b_{1}\\b_{2}\\\vdots\\b_{m} \end{pmatrix}. \] Vidíme tedy, že se vlastně jedná o problém, vyjádřit vektor složený z čísel na pravé straně soustavy rovnic jako lineární kombinaci vektorů, které tvoří sloupce matice soustavy.

Maticový zápis soustavy lineárních rovnic

Soustavu (1) lze ekvivalentně přepsat do maticového tvaru pomocí maticového součinu \[ \left( \begin{matrix} a_{11}& a_{12}& \cdots{}& a_{1n}\\ a_{21}& a_{22}& \cdots{}& a_{2n}\\ \vdots{} &\vdots{} &\ddots{}& \vdots{}\\ a_{m1}& a_{m2}& \cdots{}& a_{mn}\\ \end{matrix}\right) \left( \begin{matrix} x_1\\x_2\\ \vdots \\x_n \end{matrix} \right) = \left( \begin{matrix} b_1\\b_2\\ \vdots \\b_m \end{matrix} \right). \] Tento tvar se používá často v inženýrských výpočtech pro úspornost. Symbolicky zpravidla píšeme soustavu lineárních rovnic ve tvaru \[ A\vec x=\vec b, \] nebo \[AX=B\] kde \(A\) je matice soustavy a \(\vec b\) resp. \(B\) je vektor pravých stran.

Využití inverzní matice pro řešení soustavy lineárních rovnic

Inverzní matice umožní zapsat elegantně řešení i neuvěřitelně komplexní a složité soustavy rovnic. Pro praktické počítání se však tato metoda moc nehodí a budeme ji muset ještě o něco vylepšit na iterační metodu. Zdroj: pixabay.com.

Z úvodní přednášky o lineární algebře víme, že pomocí maticového násobení je možné soustavu lineárních rovnic zapsat ve tvaru \[AX=B,\] kde \(A\) je matice soustavy, \(X\) je sloupcový vektor neznámých a \(B\) je vektor pravých stran. Pokud má matice \(A\) inverzní matici, můžeme pomocí této matice soustavu vyřešit. Po vynásobení rovnice inverzní maticí zleva dostáváme \[A^{-1}(AX)=A^{-1}B\] a po uplatnění asociativního zákona \[(A^{-1}A)X=A^{-1}B.\] Protože výraz v závorce je součinem matice s maticí inverzní, je tento součin roven jednotkové matici, která je neutrálním prvkem při násobení a proto okamžitě dostáváme řešení soustavy ve tvaru \[X=A^{-1}B.\] Jako přirozený důsledek vidíme, že řešení je určeno jednoznačně. Známe-li inverzní matici, můžeme řešení dokonce vypočítat pro libovolnou pravou stranu velmi pohodlně a rychle pomocí maticového násobení. Bohužel, výpočet inverzní matice je zpravidla velmi drahý (vyžaduje velké množství operací) a numericky málo stabilní. Proto je tento postup užitečným teoretickým nástrojem, ale v praxi postupujeme poněkud odlišně.

Inverzní matice k diagonální matici

Diagonální matice (tj. matice, které mají nenulové prvky jenom na hlavní diagonále) se vzhledem k násobení chovají velice hezky: součinem je taková matice, která je diagonální a na hlavní diagonále má prvky vytvořené jako součin odpovídajících prvků násobených matic.

\[ \begin{pmatrix} 2&0&0 \\ 0&3&0 \\ 0&0&12 \end{pmatrix} \begin{pmatrix} 5&0&0 \\ 0&7&0 \\ 0&0&1 \end{pmatrix} = \begin{pmatrix} 10&0&0 \\ 0&21&0 \\ 0&0&12 \end{pmatrix} \]

Proto je snadné zařídit, aby v hlavní diagonále vyšly jedničky. Stačí uvažovat podobně jako v následujícím příkladě. \[ \begin{pmatrix} 2&0&0 \\ 0&3&0 \\ 0&0&12 \end{pmatrix} \begin{pmatrix} \frac 12&0&0 \\ 0&\frac 13&0 \\ 0&0&\frac1{12} \end{pmatrix} = \begin{pmatrix} 1&0&0 \\ 0&1&0 \\ 0&0&1 \end{pmatrix} \] a tedy \[ \begin{pmatrix} 2&0&0 \\ 0&3&0 \\ 0&0&12 \end{pmatrix}^{-1} = \begin{pmatrix} \frac 12&0&0 \\ 0&\frac 13&0 \\ 0&0&\frac1{12} \end{pmatrix}. \]

Iterační metoda řešení soustav lineárních rovnic

Na předchozím slidu jsme viděli, že je jednoduché najít inverzní matici k matici diagonální. Toho využijeme pro řešení soustavy lineárních rovnic iterační metodou. Představíme si nejednodušší, přesto však velmi mocnou metodu, Jacobiho metodu.

V úvodní přednášce z lineární algebry jsme modelovali rozložení teploty ve dvourozměrné desce pomocí soustavy rovnic \[ \begin{pmatrix} \phantom{-}4&-1& \phantom{-}0&-1\\ -1& \phantom{-}4&-1& \phantom{-}0\\ \phantom{-}0 &-1& \phantom{-}4&-1\\ -1& \phantom{-}0&-1& \phantom{-}4 \end{pmatrix} \begin{pmatrix} x_1\\x_2\\x_3\\x_4 \end{pmatrix} = \begin{pmatrix} 30\\60\\70\\40 \end{pmatrix}. \] Pro \[A=\begin{pmatrix} \phantom{-}4&-1& \phantom{-}0&-1\\ -1& \phantom{-}4&-1& \phantom{-}0\\ \phantom{-}0 &-1& \phantom{-}4&-1\\ -1& \phantom{-}0&-1& \phantom{-}4 \end{pmatrix}, \quad X=\begin{pmatrix} x_1\\x_2\\x_3\\x_4 \end{pmatrix} ,\quad B=\begin{pmatrix} 30\\60\\70\\40 \end{pmatrix} \] tedy \[AX=B.\tag{1}\]

Rozdělíme matici \(A\) na součet diagonální matice a matice s nulami v hlavní diagonále, tj. na součet matic \[D= \begin{pmatrix} 4&0&0&0\\ 0& 4&0&0\\ 0 &0& 4&0\\ 0&0&0& 4 \end{pmatrix} \quad \text{a}\quad T= \begin{pmatrix} \phantom{-}0&-1& \phantom{-}0&-1\\ -1& \phantom{-}0&-1& \phantom{-}0\\ \phantom{-}0 &-1& \phantom{-}0&-1\\ -1& \phantom{-}0&-1& \phantom{-}0 \end{pmatrix} \] Potom můžeme psát rovnici ve tvaru \[(D+T)X=B\] a odsud \[\begin{aligned}DX+TX&=B\\ DX&=B-TX \end{aligned}\] a využitím inverzní matice \[X=D^{-1}(B-TX).\tag{2}\] Definujme nyní iterační vzorec \[X_{k+1}=D^{-1}(B-TX_k).\tag{3}\] Podobně jako u Markovových řetězců můžeme najít postupnými iteracemi z vhodného (nebo libovolného) počátečního stavu stacionární stav, kdy se \(X_k\) dalšími iteracemi nemění a tím dostaneme řešení rovnice (2), která je ekvivalentní rovnici (1). Protože inverzní matici počítáme pro matici diagonální, je tento výpočet velice rychlý a levný. Vlastně není vůbec nutné mít k dispozici maticový počet. Iterace dostaneme tak, že z první rovnice osamostatníme \(x_1\), z druhé rovnice \(x_2\) atd. Výchozí odhad dosadíme do pravých stran a obdržíme zpřesněný odhad. Postup opakujeme, dokud nejsou dvě následující iterae dostatečně blízké.

Poznámka. Předchozí postup je možné použít jenom v případě, že iterační proces (3) konverguje. Pokud by nekonvergoval, není možné o řešení rovnice nic říct, pouze to, že Jacobiho metoda nefunguje. Postačující podmínka, kdy Jacobiho metoda konverguje, je aby každý řádek měl v hlavní diagonále číslo, které je v absolutní hodnotě větší než je součet absolutních hodnot zbylých čísel v tomto řádku. Matice, která splňuje tuto podmínku se nazývá řádkově ostře diagonálně dominantní matice a pro takovou matici Jacobiho metoda konverguje. Podobně je možné uvažovat sloupcově ostře diagonálně dominantní matice porovnáním absolutních hodnot diagonálních prvků se součty absolutních hodnot ostatních prvků v daných sloupcích a i pro sloupcově ostře diagonální matice metoda konverguje. I přes jednoduchost tohoto kriteria se s diagonálně dominantními maticemi setkáváme v aplikacích poměrně často. Podíváme-li se, jak byla odvozena soustava popisující rozložení teploty na tepelně vodivé desce (poslední slajd minulé přednášky), není to až takové překvapení.

Online výpočet.

Podobnými iteračními metodami je možné efektivně řešit soustavy o tisících rovnic a neznámých. Výpočty probíhají rychle a nejsou náročné na paměť jako u přímých metod, známých například ze střední školy. Tímto způsobem se řeší soustavy rovnic při modelování namáhání konstrukcí, vedení tepla, proudění vody apod.

Hodnost matice

Iterační metoda funguje pro soustavy s jediným řešením. Pokud však hledáme vlastní vektory, musíme být schopni umět řešit i soustavy s nekonečně mnoha řešeními.

Matice řádu \(m\times n\) obsahuje celkem \(m\cdot n\) čísel. Jedná se tedy o relativně komplikovaný objekt. V matematice se často snažíme složitější objekty nějakým způsobem charakterizovat pomocí objektů jednodušších, např. pomocí čísel. Jedno už známe, determinant. Dalším z těchto čísel je hodnost matice, kterou si nadefinujeme nyní.

Definice (hodnost matice).

Buď \(A\) matice. Hodností matice rozumíme maximální počet lineárně nezávislých řádků matice. Hodnost matice \(A\) označujeme \({h(A)}\).

Poznámka: Hodnost je v anglické literatuře označována jako rank.

Schodovitý tvar jsme si představili u determinantu. U matice ve schodovitém tvaru je určení determinantu velmi jednoduché. Podobný efekt vidíme i u hodnosti.

Definice (schodovitý tvar).

Řekneme, že matice \(A\) je ve schodovitém tvaru, jestliže případné nulové řádky jsou uspořádány na konci matice a nenulové jsou uspořádány tak, že každý následující řádek začíná větším počtem nul než řádek předchozí.

Věta (hodnost matice ve schodovitém tvaru).

Hodnost matice, která je ve schodovitém tvaru je rovna počtu jejích nenulových řádků.

Příklad. Matice \(A= \begin{pmatrix} 2&2&2&3&-1&5\\ 0&0&1&0&0&3\\ 0&0&0&-1&2&1\\ 0&0&0&0&0&0 \end{pmatrix}\) je ve schodovitém tvaru a \(h(A)=3\). Matice \(B= \begin{pmatrix} 2&2&2&3&-1&5\\ 0&0&1&0&0&3\\ 0&0&3&-1&2&1 \end{pmatrix}\) není ve schodovitém tvaru a její hodnost na první pohled nepoznáme.

Výpočet hodnosti

Výpočet hodnosti se provádí postupným nahrazením zadané matice maticí, která má stejnou hodnost, ale postupně se přibližuje schodovitému tvaru. Uvedeme si jenom základní postup. Tento se sice dá vylepšit, pro nás je však důležité, že i bez jakýchkoliv vylepšení vždy vede k cíli. (Alespoň teoreticky.)

Věta (řádkové operace zachovávající hodnost matice).

Následující operace nemění hodnost matice:

  1. vynechání řádku složeného ze samých nul, nebo vynechání řádku, který je totožný s jiným řádkem, nebo vynechání řádku, který je násobkem jiného řádku,
  2. vynásobení nebo vydělení libovolného řádku nenulovým číslem,
  3. záměna pořadí řádků,
  4. ponechání jednoho řádku beze změny a opakované přičtení libovolných násobků tohoto řádku k nenulovým násobkům ostatních řádků matice.

Libovolnou matici lze konečným počtem těchto úprav převést do schodovitého tvaru.

Následující věta udává, že veškerá tvrzení, uvedená v souvislosti s hodností pro řádky matice, se dají přeformulovat i pro sloupce matice.

Věta.

Transponování nemění hodnost matice.

Existence a jednoznačnost řešení soustavy lineárních rovnic

V případě, že matice soustavy je čtvercová již víme, že řešení je určeno jednoznačně právě tehdy, když má matice soustavy matici inverzní. O počtu řešení v obecném případě obdélníkové matice, kdy matici inverzní nemá smysl uvažovat, nám dávají informaci dvě následující věty. První se týká existence řešení a druhá identifikuje případ, kdy řešení je určeno jednoznačně.

Věta (Frobeniova věta, Kronecker-Capelliho věta).

Soustava lineárních rovnic je řešitelná právě tehdy, když její matice soustavy a rozšířená matice soustavy mají stejnou hodnost.

Věta (jednoznačnost řešení).

Nechť soustava lineárních rovnic má řešení. Toto řešení je právě jedno, pokud je společná hodnost matice soustavy a rozšířené matice soustavy rovna počtu neznámých. V opačném případě je společná hodnost matice a rozšířené matice soustavy menší než počet neznámých.

Gaussova eliminace

Spočívá v reprezentaci soustavy pomocí rozšířené matice soustavy a převodu této matice na schodovitý tvar pomocí řádkových operací zachovávajících hodnost. Tyto operace zachovávají i množinu řešení soustavy. Jakmile je matice ve schodovitém tvaru, zpětnou substitucí postupně dopočítáváme jednotlivé proměnné. (Formálně to u čtvercových regulárních matic odpovídá použití inverzní matice k matici, která má pod hlavní diagonálou nuly. Ale postup funguje i pro obecnější matice a dá se realizovat jednoduchými prostředky a postupným dosazováním.)

Gaussova eliminace je velice flexibilní a univerzální, umožní nám řešit i soustavy mající nekonečně mnoho řešení. V tomto případě dokážeme zapsat řešení pomocí parametrů.

Příklad.

\[ \begin{aligned} x_1+2x_2+2x_3+x_4&=0\\ x_1-x_2+x_3-2x_4&=1\\ x_2-2x_3+x_4&=2 \end{aligned} \]

Rozšířená matice soustavy je \[\left( \begin{array}{cccc|c} 1& 2& 2& 1& 0\\ 1& -1& 1& -2& 1\\ 0& 1& -2& 1& 2 \end{array}\right) \]

V prvním kroku převedeme na tvar, kdy jednom jeden řádek začíná nenulovým prvkem. První řádek už nijak neupravujeme a opíšeme jej. Místo druhého řádku napíšeme jeho součet s \((-1)\)-násobkem prvního řádku. \[ \left( \begin{array}{cccc|c} 1& 2& 2& 1& 0\\ 0& -3& -1& -3& 1\\ 0& 1& -2& 1& 2 \end{array}\right) \]

V dalším kroku převedeme na tvar, kdy z řádků začínajících jednou nulou ponecháme jenom jeden a ostatní upravíme tak, aby začínaly alespoň dvěma nulami. K tomu je vhodné nejprve přehodit poslední dva řádky, abychom mohli použít k vytváření nul jedničku. \[ \left( \begin{array}{cccc|c} 1& 2& 2& 1& 0\\ 0& 1& -2& 1& 2\\ 0& -3& -1& -3& 1 \end{array}\right) \]

Nyní provedeme potřebnou úpravu. První dva řádky opíšeme. Místo třetího řádku napíšeme jeho součet s trojnásobkem druhého řádku. \[ \left( \begin{array}{cccc|c} 1& 2& 2& 1& 0\\ 0& 1& -2& 1& 2\\ 0& 0& -7& 0& 7 \end{array}\right) \]

Nyní přepíšme do tvaru soustavy rovnic

\[ \begin{aligned} x_1+2x_2+2x_3+x_4&=0\\ x_2-2x_3+x_4&=2\\ -7x_3\phantom{+x_4}&=7 \end{aligned} \]

Z poslední rovnice máme snadno \(x_3=-1\). Tuto hodnotu použijeme ve druhé rovnici. \[ \begin{aligned} x_2-2x_3+x_4&=2\\ x_2+2+x_4&=2\\ x_2+x_4&=0\\ \end{aligned} \] Protože však máme pořád dvě neznámé, jednu z nich zvolíme za parametr. Nechť je například \(x_4\) a nechť je parametr označen jako \(t\). \[ x_4=t \] Rovnice má poté tvar \[ x_2+t=0. \] Odsud již snadno dostáváme \[ x_2=-t. \] Vypočtené hodnoty dosadíme do první rovnice a určíme zbývající neznámou \(x_1\). \[ \begin{aligned} x_1+2x_2+2x_3+x_4&=0\\ x_1-2t-2+t&=0\\ x_1&=2+t \end{aligned} \] Řešení je \(x_1=2+t\), \(x_2=-t\), \(x_3=-1\), \(x_4=t\), kde \(t\) je libovolné reálné číslo. Vektorově (maticově) máme řešení ve tvaru \[ \begin{pmatrix} x_1\\x_2\\x_3\\x_4 \end{pmatrix} = \begin{pmatrix} 2+t\\-t\\-1\\t \end{pmatrix} = \begin{pmatrix} 2\\0\\-1\\0 \end{pmatrix} +t \begin{pmatrix} 1\\-1\\0\\1 \end{pmatrix} . \]

Gaussova-Seidelova iterační metoda

Gaussova-Seidelova iterační metoda je jakýsi mezikrok mezi Jacobiho iterační metodou a Gausovou eliminací. Postupujeme jako v Jacobiho metodě, ale všechny zpřesněné hodnoty použijeme okamžitě, když jsou k dispozici. Nikoliv až v další iteraci jako u Jacobiho metody. Metoda konverguje za stejných podmínek jako Jacobiho metoda, ale rychleji a přesto nevznikají vyšší nároky na výpočetní výkon.

Použijeme příklad z Wikipedie. Soustavu \[\begin{array}{rrrrl} 10x_1 &- x_2 &+ 2x_3 & & = 6, \\ -x_1 &+ 11x_2 &- x_3 &+ 3x_4 & = 25, \\ 2x_1 &- x_2 &+ 10x_3 &- x_4 & = -11, \\ & 3x_2 &- x_3 &+ 8x_4 & = 15. \end{array}\] s diagonálně dominantní maticí převedeme na iterační tvar \[ \begin{aligned} x_1 & = x_2/10 - x_3/5 + 3/5, \\ x_2 & = x_1/11 + x_3/11 - 3x_4/11 + 25/11, \\ x_3 & = -x_1/5 + x_2/10 + x_4/10 - 11/10, \\ x_4 & = -3x_2/8 + x_3/8 + 15/8. \end{aligned} \] Poté vyjdeme z počátečního odhadu řešení a dosazujeme do pravých stran.

U Jacobiho metody pro počáteční odhad vypočteme nejprve všechny pravé strany a dosadíme do proměnných na levé straně jako zpřesnění počáteční aproximace. Tento postup opakujeme.

U Gaussovy-Seidlovy metody nejprve pomocí počátečního odhadu vypočteme z první rovnice \(x_1\) a tuto hodnotu ihned použijeme při výpočtu \(x_2\) z další rovnice. Obojí, \(x_1\) i \(x_2\) už využijeme při výpočtu \(x_3\) a tak dále. Po výpočtu \(x_4\) je první iterace dokončena a postup opět opakujeme, dokud dvě po sobě jdoucí iterace nejsou dostatečně blízké.

S nulovou počáteční aproximací dostáváme v prvním průchodu \[ \begin{aligned} x_1 & = 3/5 = 0.6, \\ x_2 & = 0.6/11 + 25/11 = 2.3272, \\ x_3 & = -0.6/5 +(2.3272)/10-11/10 = -0.9873,\\ x_4 & = -3(2.3272)/8 +(-0.9873)/8+15/8 = 0.8789. \end{aligned} \] Jak vidno, vypočtenou hodnotu \(x_1\) ihned použijeme pro výpočet \(x_2\). Obě tyto hodnoty ihned použijeme pro výpočet \(x_3\) a tak dále. V dalších iteracích postup opakujeme. Mimo jiné hodnoty v paměti přímo přepisujeme a nemusíme držet v paměti starou a novou hodnotu.

Shrnutí, hlavní myšlenky

A jaká je hlavní message? Zdroj: pixabay.com