Priame metódy pre riešenie veľkých sústav rovníc: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
 
(7 medziľahlých úprav od jedného ďalšieho používateľa nie je zobrazených)
Riadok 5: Riadok 5:
 
__TOC__
 
__TOC__
 
= =
 
= =
</nowiki>
 
 
'''Priame metódy pre riešenie veľkých sústav rovníc'''
 
 
 
Priame metódy vedú k&nbsp;presnému riešeniu danej sústavy po konečnom počte krokov. Pri priamych metódach sa väčšinou daná matica systému zjednoduší použitím niektorého rozkladu a&nbsp;potom sa ďalej pracuje s&nbsp;týmto zjednodušeným systémom . Pri použití rozkladov pre zjednodušenie veľkých matíc dostávame väčšinou trojuholníkové systémy. V&nbsp;tejto kapitole sú opísané niektoré známe rozklady ako aj riešenie trojuholníkových systémov, ktoré vzniknú pri použití týchto rozkladov.
 
Priame metódy vedú k&nbsp;presnému riešeniu danej sústavy po konečnom počte krokov. Pri priamych metódach sa väčšinou daná matica systému zjednoduší použitím niektorého rozkladu a&nbsp;potom sa ďalej pracuje s&nbsp;týmto zjednodušeným systémom . Pri použití rozkladov pre zjednodušenie veľkých matíc dostávame väčšinou trojuholníkové systémy. V&nbsp;tejto kapitole sú opísané niektoré známe rozklady ako aj riešenie trojuholníkových systémov, ktoré vzniknú pri použití týchto rozkladov.
  
  
 
== LU rozklad  ==
 
== LU rozklad  ==
Táto metóda slúži na rozklad matice A&nbsp;na dve trojuholníkové matice. Kde  
+
Táto metóda slúži na rozklad matice A&nbsp;na dve trojuholníkové matice. Kde L je dolná trojuholníková matica a&nbsp;U&nbsp;je horná trojuholníková matica. Existuje viacero spôsobov určenia LU rozkladu matice.  
 
 
L je dolná trojuholníková matica a&nbsp;U&nbsp;je horná trojuholníková matica. Existuje viacero spôsobov určenia LU rozkladu matice.  
 
  
 
'''LU rozklad (Right-Looking LU Factorization) '''
 
'''LU rozklad (Right-Looking LU Factorization) '''
  
Táto forma LU rozkladu využíva Gaussovu elimináciu opísanú v&nbsp;kapitole 1.3.3.  
+
Táto forma LU rozkladu využíva Gaussovu elimináciu opísanú v&nbsp;kapitole 2.1.3.  
  
 
Odvodenie tejto metódy rozkladu začína nasledovnou maticovou rovnicou:
 
Odvodenie tejto metódy rozkladu začína nasledovnou maticovou rovnicou:
  
[[Image:Untitled%201_html_m2f318df1.png]] = [[Image:Untitled%201_html_75b531c3.png]] (3.1)
+
{{vzorec|<math>\left[ \begin{matrix}
 +
  {{l}_{11}} & 0  \\
 +
  {{l}_{21}} & {{L}_{22}}  \\
 +
\end{matrix} \right]*~\left[ \begin{matrix}
 +
  {{u}_{11}} & {{u}_{12}}  \\
 +
  0 & {{U}_{22}}  \\
 +
\end{matrix} \right]=\left[ \begin{matrix}
 +
  {{a}_{11}} & {{a}_{12}}  \\
 +
  {{a}_{21}} & {{A}_{22}}  \\
 +
\end{matrix} \right]</math>|3.1}}
 +
 
 +
kde l<sub>11</sub><nowiki>=1 je skalár a&nbsp;všetky tri matice sú štvorcové matice. Sú možné aj iné varianty ako zvoliť </nowiki> l<sub>11</sub>. V&nbsp;tomto prípade dostaneme dolnú trojuholníkovú maticu a&nbsp;štyri rovnice.
  
kde l11<nowiki>=1 je skalár a&nbsp;všetky tri matice sú štvorcové matice. Sú možné aj iné varianty ako zvoliť l</nowiki>11. V&nbsp;tomto prípade dostaneme dolnú trojuholníkovú maticu a&nbsp;štyri rovnice.
+
{{vzorec|<math>{{u}_{11}}={{a}_{11}}</math>|3.2}}
  
[[Image:Untitled%201_html_me6e6cab.png]] (3.2)
+
{{vzorec|<math>{{u}_{12}}={{a}_{12}}</math>|3.3}}
  
[[Image:Untitled%201_html_3bb15cf3.png]] (3.3)
+
{{vzorec|<math>{{l}_{21}}{{u}_{11}}={{a}_{21}}</math>|3.4}}
  
[[Image:Untitled%201_html_4a22611f.png]] (3.4)
+
{{vzorec|<math>{{l}_{21}}{{u}_{12}}+{{L}_{22}}{{U}_{22}}={{A}_{22}}</math>|3.5}}
  
[[Image:Untitled%201_html_24abbc4b.png]] (3.5)
+
Možno dokázať, že existuje rozklad LU = A&nbsp;so základným argumentom (3.4) a&nbsp;induktívny predpoklad z&nbsp;rovnice (3.5) [3].
  
<nowiki>Možno dokázať, že existuje rozklad LU = A&nbsp;so základným argumentom (3.4) a&nbsp;induktívny predpoklad z&nbsp;rovnice (3.5) [3].</nowiki>[[Image:Untitled%201_html_2b18e193.png]] (3.6)
+
{{vzorec|<math>{{L}_{22}}{{U}_{22}}={{A}_{22}}-~{{l}_{21}}{{u}_{12}}</math>|3.6}}
  
Rozklad LU = A&nbsp;existuje len vtedy, ak každý diagonálny prvok ukk je nenulový. Čiastočný výber hlavného prvku vedie k&nbsp;stabilnejšej variante LU = PA , kde P je matica permutácií . Pri čiastočnom výbere hlavného prvku, riadky matice A&nbsp;sú vymenené, a preto je [[Image:Untitled%201_html_bc4ade2.png]] maximalizované v&nbsp;každom kroku. Táto výmena môže byť určená pre prvý stĺpec matice A&nbsp;zostaví zostávajúce permutácie matice A. Nech P1, patriace do oboru reálnych čísel o&nbsp;rozmeroch [[Image:Untitled%201_html_m7ba66b87.png]]n, je permutačná matica ktorá vymieňa dva riadky A&nbsp;tak, že  
+
Rozklad LU = A&nbsp;existuje len vtedy, ak každý diagonálny prvok ukk je nenulový. Čiastočný výber hlavného prvku vedie k&nbsp;stabilnejšej variante LU = PA , kde P je matica permutácií . Pri čiastočnom výbere hlavného prvku, riadky matice A&nbsp;sú vymenené, a preto je [[Image:Untitled%201_html_bc4ade2.png]] maximalizované v&nbsp;každom kroku. Táto výmena môže byť určená pre prvý stĺpec matice A&nbsp;zostaví zostávajúce permutácie matice A. Nech P1, patriace do oboru reálnych čísel o&nbsp;rozmeroch n×n, je permutačná matica ktorá vymieňa dva riadky A&nbsp;tak, že  
  
<center>[[Image:Untitled%201_html_m4f626776.png]] (3.7)</center>
+
{{vzorec|<math>{{P}_{1}}A=\overline{A}=\left[ \begin{matrix}
 +
  {{\overline{a}}_{11}} & {{\overline{a}}_{12}}  \\
 +
  {{\overline{a}}_{21}} & {{\overline{A}}_{22}}  \\
 +
\end{matrix} \right]</math>|3.7}}
  
a [[Image:Untitled%201_html_c0f008f.png]]. Ak rovnica (3.1) a&nbsp;jej ekvivalentné formy (3.2) až (3.5) sú použité priamo na [[Image:Untitled%201_html_m200aba46.png]], vtedy nemožno použiť induktívny predpoklad (3.6). Ak LU = PA je výrok ktorého platnosť dokazujeme, induktívny predpoklad treba aplikovať na maticu menších rozmerov ale rovnakej formy. Rovnica (3.6) nemá permutačnú maticu. Potom induktívny predpoklad vyzerá nasledovne [[Image:Untitled%201_html_m51508616.png]] (3.8)
+
a <math>\left| {{\overline{a}}_{11}} \right|\ge max\left| {{\overline{a}}_{21}} \right|</math>. Ak rovnica (3.1) a&nbsp;jej ekvivalentné formy (3.2) až (3.5) sú použité priamo na <math>\bar{A}</math>, vtedy nemožno použiť induktívny predpoklad (3.6). Ak LU = PA je výrok ktorého platnosť dokazujeme, induktívny predpoklad treba aplikovať na maticu menších rozmerov ale rovnakej formy. Rovnica (3.6) nemá permutačnú maticu. Potom induktívny predpoklad vyzerá nasledovne  
 +
 
 +
{{vzorec|<math>{{L}_{22}}{{U}_{22}}={{P}_{2}}\left( {{\overline{A}}_{22}}-~{{l}_{21}}{{u}_{12}} \right)</math>|3.8}}
  
 
kde P2<nowiki> je permutačná matica [3]. </nowiki>
 
kde P2<nowiki> je permutačná matica [3]. </nowiki>
  
 +
Výraz (3.8) možno rozložiť na blokovú maticu aplikovaním rovníc (3.2) až (3.5) na <math>\bar{A}</math> a&nbsp;vynásobením obidvoch strán rovnice (3.4) permutačnou maticou <math>P_2</math>. Potom dostávame
  
Výraz (3.8) možno rozložiť na blokovú maticu aplikovaním rovníc (3.2) až (3.5) na [[Image:Untitled%201_html_m200aba46.png]] a&nbsp;vynásobením obidvoch strán rovnice (3.4) permutačnou maticou [[Image:Untitled%201_html_m16474b3d.png]]. Potom dostávame
+
{{vzorec|<math>{{u}_{11}}={{\overline{a}}_{11}}</math>|3.9}}
  
[[Image:Untitled%201_html_62dd0f35.png]] (3.9)
+
{{vzorec|<math>{{u}_{12}}={{\overline{a}}_{12}}</math>|3.10}}
  
[[Image:Untitled%201_html_6d4675c9.png]] (3.10)
+
{{vzorec|<math>{{P}_{2}{l}_{21}}{{u}_{11}}={P}_{2}{{\overline{a}}_{21}}</math>|3.11}}
  
[[Image:Untitled%201_html_m30970a6.png]] (3.11)
+
{{vzorec|<math>{{P}_{2}}~{{l}_{21}}{{u}_{12}}+{{L}_{22}}{{U}_{22}}={{P}_{2}}{{\overline{A}}_{22}}</math>|3.12}}
  
[[Image:Untitled%201_html_70e7494c.png]] (3.12)
+
Tieto štyri rovnice možno zapísať ako maticové rovnice rozmeru 2×2
  
Tieto štyri rovnice možno zapísať ako maticové rovnice rozmeru [[Image:Untitled%201_html_m12e42899.png]]
+
{{vzorec|<math>\left[ \begin{matrix}
 
+
  1 & 0  \\
[[Image:Untitled%201_html_551d27d1.png]] = [[Image:Untitled%201_html_m46f9d020.png]]<nowiki>=</nowiki>[[Image:Untitled%201_html_m675955a8.png]] (3.13)
+
  {{P}_{2}}~{{l}_{21}} & {{L}_{22}}  \\
 +
\end{matrix} \right]*~\left[ \begin{matrix}
 +
  {{u}_{11}} & {{u}_{12}}  \\
 +
  0 & {{U}_{22}}  \\
 +
\end{matrix} \right]=\left[ \begin{matrix}
 +
  {{\overline{a}}_{11}} & {{\overline{a}}_{12}}  \\
 +
  {{P}_{2}}{{\overline{a}}_{21}} & {{P}_{2}}{{\overline{A}}_{22}}  \\
 +
\end{matrix} \right]=\left[ \begin{matrix}
 +
  1 & 0  \\
 +
  0 & {{P}_{2}}  \\
 +
\end{matrix} \right]*\left[ \begin{matrix}
 +
  {{\overline{a}}_{11}} & {{\overline{a}}_{12}}  \\
 +
  {{\overline{a}}_{21}} & {{\overline{A}}_{22}}  \\
 +
\end{matrix} \right]</math>|3.13}}
  
 
A&nbsp;úpravou rovnice (3.13) podľa (3.11) dostávame  
 
A&nbsp;úpravou rovnice (3.13) podľa (3.11) dostávame  
  
[[Image:Untitled%201_html_551d27d1.png]] [[Image:Untitled%201_html_m560fee59.png]] (3.14)
+
{{vzorec|<math>\left[ \begin{matrix}
 
+
  1 & 0  \\
 
+
  {{P}_{2}}~{{l}_{21}} & {{L}_{22}}  \\
Teraz je rovnica (3.14) v&nbsp;požadovanom tvare [[Image:Untitled%201_html_4befde2d.png]] , kde
+
\end{matrix} \right]*~\left[ \begin{matrix}
 
+
  {{u}_{11}} & {{u}_{12}}  \\
[[Image:Untitled%201_html_mb417c47.png]] [[Image:Untitled%201_html_m35ea2b1c.png]]
+
  0 & {{U}_{22}}  \\
 
+
\end{matrix} \right]=\left[ \begin{matrix}
Algoritmus LU rozkladu vyžaduje [[Image:Untitled%201_html_m65f83ebb.png]]<nowiki> operácií [2][3].</nowiki>
+
  1 & 0  \\
 
+
  0 & {{P}_{2}}  \\
 +
\end{matrix} \right]*{{P}_{1}}A</math>|3.14}}
  
 +
Teraz je rovnica (3.14) v&nbsp;požadovanom tvare LU=PA  , kde
  
 +
<math>L=\left[ \begin{matrix}
 +
  1 & 0  \\
 +
  {{P}_{2}}~{{l}_{21}} & {{L}_{22}}  \\
 +
\end{matrix} \right],\ U=\left[ \begin{matrix}
 +
  {{u}_{11}} & {{u}_{12}}  \\
 +
  0 & {{U}_{22}}  \\
 +
\end{matrix} \right]~,P=\left[ \begin{matrix}
 +
  1 & 0  \\
 +
  0 & {{P}_{2}}  \\
 +
\end{matrix} \right]*{{P}_{1}}</math>
  
 +
Algoritmus LU rozkladu vyžaduje <math>2{{n}^{3}}/3</math>operácií [2][3].
  
 
== Choleského rozklad ==
 
== Choleského rozklad ==
<nowiki>Choleského rozklad je špeciálny rozklad matíc, ktorý možno použiť len na rozklad symetrických kladne definitných matíc. Takéto matice sa ale v&nbsp;určitých aplikáciách vyskytujú dosť často. Choleského rozklad je rýchlejší ako tradičný LU rozklad, pretože využíva špeciálne vlastnosti matíc[8]. </nowiki>
+
Choleského rozklad je špeciálny rozklad matíc, ktorý možno použiť len na rozklad symetrických kladne definitných matíc. Takéto matice sa ale v&nbsp;určitých aplikáciách vyskytujú dosť často. Choleského rozklad je rýchlejší ako tradičný LU rozklad, pretože využíva špeciálne vlastnosti matíc[8].
 
 
Majme systém lineárnych rovníc ''Ax = b'', kde ''A''&nbsp;je [[Image:Untitled%201_html_m1f50f11c.png]]symetrická kladne definitná matica, ''b'' je známy vektor pravých strán, a&nbsp;''x ''je hľadaný vektor riešení. Jedným so spôsobov riešenia je použitie Choleského rozkladu.
 
  
'''Veta''': Ak je matica symetrická kladne definitná, potom existuje dolná trojuholníková matica L, s&nbsp;kladnými diagonálnymi prvkami tak, že [[Image:Untitled%201_html_2a2d7a63.png]]
+
Majme systém lineárnych rovníc ''Ax = b'', kde ''A''&nbsp;je n×n symetrická kladne definitná matica, ''b'' je známy vektor pravých strán, a&nbsp;''x ''je hľadaný vektor riešení. Jedným so spôsobov riešenia je použitie Choleského rozkladu.
  
Rovnica (3.20)[[Image:Untitled%201_html_m3770d2cb.png]] sa nazýva Choleského rozkladom. Vektor riešení dostaneme vyriešením trojuholníkových systémov [[Image:Untitled%201_html_26e14bbd.png]] a[[Image:Untitled%201_html_bac0f1e.png]]<nowiki> [3].</nowiki>
+
'''Veta''': Ak je matica symetrická kladne definitná, potom existuje dolná trojuholníková matica L, s&nbsp;kladnými diagonálnymi prvkami tak, že <math>A=L{{L}^{T}}</math>
  
Pri LU rozkladu prvky matíc L a&nbsp;U nemajú takmer žiadnu vzájomnú väzbu okrem toho, že ich súčinom dostaneme maticu A. Naopak pri Choleského rozklade pre prvky matíc platí [[Image:Untitled%201_html_75600095.png]]<nowiki> [8] .</nowiki>
+
Rovnica (3.20) sa nazýva Choleského rozkladom. Vektor riešení dostaneme vyriešením trojuholníkových systémov
 +
<math>Ly=b\ \ a\ \ {{L}^{T}}x=y</math> [3].
  
Nech matica A&nbsp;a&nbsp;hľadaná matica L sú blokové matice [[Image:Untitled%201_html_696253c7.png]] so štvorcovými diagonálnymi blokmi . Vyjadrením (i,j) v&nbsp;rovnici [[Image:Untitled%201_html_m4a983f88.png]] , pre ktoré platí [[Image:Untitled%201_html_m35199ff4.png]], dostávame
+
Pri LU rozkladu prvky matíc L a&nbsp;U nemajú takmer žiadnu vzájomnú väzbu okrem toho, že ich súčinom dostaneme maticu A. Naopak pri Choleského rozklade pre prvky matíc platí <math>{{L}_{ij}}=L_{ji}^{T}</math> <nowiki> [8] .</nowiki>
  
 +
Nech matica A&nbsp;a&nbsp;hľadaná matica L sú blokové matice n×n so štvorcovými diagonálnymi blokmi . Vyjadrením (i,j) v&nbsp;rovnici (3.15) , pre ktoré platí i≥j , dostávame
  
[[Image:Untitled%201_html_69681b68.png]]Definujme S,&nbsp;pre ktoré platí nasledovný vzťah:
+
<math>{{A}_{ij}}=\underset{k=1}{\overset{j}{\mathop \sum }}\,{{L}_{ik}}L_{jk}^{T}</math>
  
 +
Definujme S,&nbsp;pre ktoré platí nasledovný vzťah:
  
Potom podľa (3.16) platí že, [[Image:Untitled%201_html_m329aecfb.png]]ak [[Image:Untitled%201_html_3805e7f9.png]] a [[Image:Untitled%201_html_6eb573bb.png]] ak [[Image:Untitled%201_html_m304d7ffe.png]] . Tieto rovnice možno použiť pre výpočet všetkých [[Image:Untitled%201_html_1d0d5994.png]]<nowiki> [3] [8]. </nowiki>
+
{{vzorec|<math>S={{A}_{ij}}-\underset{k=1}{\overset{j-1}{\mathop \sum }}\,{{L}_{ik}}L_{jk}^{T}</math>|3.16}}
  
Algoritmus Choleského rozkladu vyžaduje [[Image:Untitled%201_html_289b77e.png]]<nowiki> operácií, čo je v&nbsp;porovnaní s&nbsp;LU rozkladom o&nbsp;polovicu menej [3]. </nowiki>
+
Potom podľa (3.16) platí že, <math>{{L}_{jj}}L_{jj}^{T}=S~</math> ak i=j a <math>{{L}_{ij}}L_{jj}^{T}=S</math> ak i>j. Tieto rovnice možno použiť pre výpočet všetkých <math>L_{ij}</math><nowiki> [3] [8]. </nowiki>
  
 +
Algoritmus Choleského rozkladu vyžaduje <math>{{n}^{3}}/3</math>operácií, čo je v&nbsp;porovnaní s&nbsp;LU rozkladom o&nbsp;polovicu menej [3].
  
 
== Riešenie trojuholníkových systémov ==
 
== Riešenie trojuholníkových systémov ==
Riadok 103: Riadok 142:
 
Existujú dva klasické sekvenčné algoritmy pre riešenie trojuholníkových systémov Lx=b . Odlišujú sa v&nbsp;tom že jeden pristupuje k&nbsp;matici L po riadkoch a&nbsp;druhý algoritmus pristupuje po stĺpcoch.  
 
Existujú dva klasické sekvenčné algoritmy pre riešenie trojuholníkových systémov Lx=b . Odlišujú sa v&nbsp;tom že jeden pristupuje k&nbsp;matici L po riadkoch a&nbsp;druhý algoritmus pristupuje po stĺpcoch.  
  
Majme rozklad : [[Image:Untitled%201_html_m6664c1d2.png]] = [[Image:Untitled%201_html_2091c33a.png]] , kde [[Image:Untitled%201_html_m5e5abdc8.png]] je štvorcová pravá dolná submatica matice L o&nbsp;rozmeroch n-1. [[Image:Untitled%201_html_m1e0dd299.png]] sú stĺpcové vektory o&nbsp;dĺžke n-1. [[Image:Untitled%201_html_m6ac242f3.png]] sú skaláry. Toto vedie k&nbsp;dvom rovniciam [[Image:Untitled%201_html_1c78ceb1.png]] (3.17) a [[Image:Untitled%201_html_m458f3c1c.png]] (3.18)
+
Majme rozklad : <math>\left[ \begin{matrix}
 +
  {{l}_{11}} & 0  \\
 +
  {{l}_{21}} & {{L}_{22}}  \\
 +
\end{matrix} \right]*~\left[ \begin{matrix}
 +
  {{x}_{1}}  \\
 +
  {{x}_{2}}  \\
 +
\end{matrix} \right]=\left[ \begin{matrix}
 +
  {{b}_{1}}  \\
 +
  {{b}_{2}}  \\
 +
\end{matrix} \right]</math> , kde <math>L_{22}</math> je štvorcová pravá dolná submatica matice L o&nbsp;rozmeroch n-1. <math>{{l}_{21}},{{x}_{2}},{{b}_{2}}</math> sú stĺpcové vektory o&nbsp;dĺžke n-1. <math>{{l}_{11}},{{x}_{1}},{{b}_{1}}</math> sú skaláry. Toto vedie k&nbsp;dvom rovniciam  
  
Vyriešime prvú rovnicu (3.17) a&nbsp;získame tak x1 :
+
{{vzorec|<math>{{l}_{11}}{{x}_{1}}={{b}_{1}}</math>|3.17}}
  
 +
a
  
Druhá rovnica (3.18) je dolný trojuholníkový systém vo forme [[Image:Untitled%201_html_6f51f94b.png]]. Tento systém možno riešiť rekurzívne a&nbsp;získať tak x2. Tento algoritmus využíva iteráciu cez stĺpce matice L. Môžeme si všimnúť, že b1 a&nbsp;b2 sú použité len raz . Preto môžeme v&nbsp;algoritme priradiť x do b a&nbsp;používame ďalej v&nbsp;algoritme už len x.
+
{{vzorec|<math>{{l}_{21}}{{x}_{1}}+{{L}_{22~}}{{x}_{2}}=~{{b}_{2}}</math>|3.18}}
  
 +
Vyriešime prvú rovnicu (3.17) a&nbsp;získame tak x<sub>1</sub> :
  
'''Algoritmus s prístupom po stĺpcoch'''
+
<math>{{x}_{1}}=\frac{{{b}_{1}}}{{{l}_{11}}}</math>
  
x=b;
+
Druhá rovnica (3.18) je dolný trojuholníkový systém vo forme <math>{{L}_{22}}{{x}_{2}}=~{{b}_{2}}-{{l}_{21}}{{x}_{1}}</math>. Tento systém možno riešiť rekurzívne a&nbsp;získať tak x<sub>2</sub>. Tento algoritmus využíva iteráciu cez stĺpce matice L. Môžeme si všimnúť, že b<sub>1</sub> a&nbsp;b<sub>2</sub> sú použité len raz . Preto môžeme v&nbsp;algoritme priradiť x do b a&nbsp;používame ďalej v&nbsp;algoritme už len x.
  
'''for''' j=1,... n-1 '''do'''
 
  
xj<nowiki>= x</nowiki>j / ljj
+
'''Algoritmus s prístupom po stĺpcoch'''  
 
 
'''for''' i > j, lij[[Image:Untitled%201_html_m6647c5ea.png]] '''do'''
 
  
xj<nowiki>= x</nowiki>j – lij xj<nowiki>;</nowiki>
+
<source lang="pascal">
 
+
  x=b;
'''end for'''
+
  for j=1,... n-1 do
 
+
      xj= xj / Ljj ;
'''end for'''
+
      for i > j,Lij != 0 do
 +
        xj= xj Lij * xj;
 +
      end for
 +
  end for
 +
</source>
  
  
 
'''Algoritmus prístupom po riadkoch'''  
 
'''Algoritmus prístupom po riadkoch'''  
  
x=b;
+
<source lang="pascal">
 +
  x=b;
 +
  x1= x1 / l11 ;
 +
  for i=2,... n do
 +
    for j=2,... i-1 do
 +
      xj= xj - Lij * xj ;
 +
    end for
 +
    xi= xi / Lii;
 +
  end for
 +
</source>
  
x1<nowiki>= x</nowiki>1 / l11 <nowiki>;</nowiki>
 
  
'''for''' i=2,... n '''do'''
+
Pre riešenie Ux = b , kde U&nbsp;je uložená po stĺpcoch, použijeme ďalší rozklad
  
'''for '''j=1 ...i-1 '''do'''
+
<math>\left[ \begin{matrix}
 +
  {{U}_{11}} & {{u}_{12}}  \\
 +
  0 & {{u}_{22}}  \\
 +
\end{matrix} \right]*~\left[ \begin{matrix}
 +
  {{x}_{1}}  \\
 +
  {{x}_{2}}  \\
 +
\end{matrix} \right]=\left[ \begin{matrix}
 +
  {{b}_{1}}  \\
 +
  {{b}_{2}}  \\
 +
\end{matrix} \right]</math>
  
xj<nowiki>= x</nowiki>j – lij xj<nowiki>;</nowiki>
+
Kde <math>U_{11}</math> je štvorcová submatica matice U o&nbsp;rozmeroch n-1. Dostávame dve rovnice
  
'''end for'''
+
{{vzorec|<math>U_11 x_1+u_12 x_2=b_1</math>|3.19}}
  
xi<nowiki>= x</nowiki>i / lii<nowiki>;</nowiki>
+
a
 
 
'''end for'''
 
 
 
 
 
Pre riešenie Ux = b , kde U&nbsp;je uložená po stĺpcoch, použijeme ďalší rozklad
 
  
[[Image:Untitled%201_html_m7f281dea.png]] = [[Image:Untitled%201_html_2091c33a.png]]
+
{{vzorec|<math>{{u}_{22}}{{x}_{2}}={{b}_{2}}</math>|3.20}}
  
Kde [[Image:Untitled%201_html_7829c687.png]] je štvorcová submatica matice U o&nbsp;rozmeroch n-1. Dostávame dve rovnice [[Image:Untitled%201_html_m471c1329.png]](3.19) a [[Image:Untitled%201_html_2c7f31f8.png]]. Druhú rovnicu (3.20) možno riešiť ako [[Image:Untitled%201_html_376bc6c7.png]] a&nbsp;z&nbsp;prvej (3.19) dostávame [[Image:Untitled%201_html_m254a4557.png]]<nowiki>. Tento horný trojuholníkový systém riešime podobne ako v&nbsp;predchádzajúcom prípade dolný trojuholníkový systém prostredníctvom algoritmu s&nbsp;prístupom po stĺpcoch [1][2].
+
Druhú rovnicu (3.20) možno riešiť ako <math>{{x}_{2}}=\frac{{{b}_{2}}}{{{u}_{22}}}</math> a&nbsp;z&nbsp;prvej (3.19) dostávame <math>{{U}_{11}}{{x}_{1}}=~{{b}_{1}}-{{u}_{12}}{{x}_{2}}</math>. Tento horný trojuholníkový systém riešime podobne ako v&nbsp;predchádzajúcom prípade dolný trojuholníkový systém prostredníctvom algoritmu s&nbsp;prístupom po stĺpcoch [1][2].

Aktuálna revízia z 21:46, 30. júl 2010

Priame metódy vedú k presnému riešeniu danej sústavy po konečnom počte krokov. Pri priamych metódach sa väčšinou daná matica systému zjednoduší použitím niektorého rozkladu a potom sa ďalej pracuje s týmto zjednodušeným systémom . Pri použití rozkladov pre zjednodušenie veľkých matíc dostávame väčšinou trojuholníkové systémy. V tejto kapitole sú opísané niektoré známe rozklady ako aj riešenie trojuholníkových systémov, ktoré vzniknú pri použití týchto rozkladov.


LU rozklad

Táto metóda slúži na rozklad matice A na dve trojuholníkové matice. Kde L je dolná trojuholníková matica a U je horná trojuholníková matica. Existuje viacero spôsobov určenia LU rozkladu matice.

LU rozklad (Right-Looking LU Factorization)

Táto forma LU rozkladu využíva Gaussovu elimináciu opísanú v kapitole 2.1.3.

Odvodenie tejto metódy rozkladu začína nasledovnou maticovou rovnicou:

[math]\left[ \begin{matrix} {{l}_{11}} & 0 \\ {{l}_{21}} & {{L}_{22}} \\ \end{matrix} \right]*~\left[ \begin{matrix} {{u}_{11}} & {{u}_{12}} \\ 0 & {{U}_{22}} \\ \end{matrix} \right]=\left[ \begin{matrix} {{a}_{11}} & {{a}_{12}} \\ {{a}_{21}} & {{A}_{22}} \\ \end{matrix} \right][/math]

(3.1)

kde l11=1 je skalár a všetky tri matice sú štvorcové matice. Sú možné aj iné varianty ako zvoliť l11. V tomto prípade dostaneme dolnú trojuholníkovú maticu a štyri rovnice.

[math]{{u}_{11}}={{a}_{11}}[/math]

(3.2)

[math]{{u}_{12}}={{a}_{12}}[/math]

(3.3)

[math]{{l}_{21}}{{u}_{11}}={{a}_{21}}[/math]

(3.4)

[math]{{l}_{21}}{{u}_{12}}+{{L}_{22}}{{U}_{22}}={{A}_{22}}[/math]

(3.5)

Možno dokázať, že existuje rozklad LU = A so základným argumentom (3.4) a induktívny predpoklad z rovnice (3.5) [3].

[math]{{L}_{22}}{{U}_{22}}={{A}_{22}}-~{{l}_{21}}{{u}_{12}}[/math]

(3.6)

Rozklad LU = A existuje len vtedy, ak každý diagonálny prvok ukk je nenulový. Čiastočný výber hlavného prvku vedie k stabilnejšej variante LU = PA , kde P je matica permutácií . Pri čiastočnom výbere hlavného prvku, riadky matice A sú vymenené, a preto je Untitled 1 html bc4ade2.png maximalizované v každom kroku. Táto výmena môže byť určená pre prvý stĺpec matice A zostaví zostávajúce permutácie matice A. Nech P1, patriace do oboru reálnych čísel o rozmeroch n×n, je permutačná matica ktorá vymieňa dva riadky A tak, že

[math]{{P}_{1}}A=\overline{A}=\left[ \begin{matrix} {{\overline{a}}_{11}} & {{\overline{a}}_{12}} \\ {{\overline{a}}_{21}} & {{\overline{A}}_{22}} \\ \end{matrix} \right][/math]

(3.7)

a [math]\left| {{\overline{a}}_{11}} \right|\ge max\left| {{\overline{a}}_{21}} \right|[/math]. Ak rovnica (3.1) a jej ekvivalentné formy (3.2) až (3.5) sú použité priamo na [math]\bar{A}[/math], vtedy nemožno použiť induktívny predpoklad (3.6). Ak LU = PA je výrok ktorého platnosť dokazujeme, induktívny predpoklad treba aplikovať na maticu menších rozmerov ale rovnakej formy. Rovnica (3.6) nemá permutačnú maticu. Potom induktívny predpoklad vyzerá nasledovne

[math]{{L}_{22}}{{U}_{22}}={{P}_{2}}\left( {{\overline{A}}_{22}}-~{{l}_{21}}{{u}_{12}} \right)[/math]

(3.8)

kde P2 je permutačná matica [3].

Výraz (3.8) možno rozložiť na blokovú maticu aplikovaním rovníc (3.2) až (3.5) na [math]\bar{A}[/math] a vynásobením obidvoch strán rovnice (3.4) permutačnou maticou [math]P_2[/math]. Potom dostávame

[math]{{u}_{11}}={{\overline{a}}_{11}}[/math]

(3.9)

[math]{{u}_{12}}={{\overline{a}}_{12}}[/math]

(3.10)

[math]{{P}_{2}{l}_{21}}{{u}_{11}}={P}_{2}{{\overline{a}}_{21}}[/math]

(3.11)

[math]{{P}_{2}}~{{l}_{21}}{{u}_{12}}+{{L}_{22}}{{U}_{22}}={{P}_{2}}{{\overline{A}}_{22}}[/math]

(3.12)

Tieto štyri rovnice možno zapísať ako maticové rovnice rozmeru 2×2

[math]\left[ \begin{matrix} 1 & 0 \\ {{P}_{2}}~{{l}_{21}} & {{L}_{22}} \\ \end{matrix} \right]*~\left[ \begin{matrix} {{u}_{11}} & {{u}_{12}} \\ 0 & {{U}_{22}} \\ \end{matrix} \right]=\left[ \begin{matrix} {{\overline{a}}_{11}} & {{\overline{a}}_{12}} \\ {{P}_{2}}{{\overline{a}}_{21}} & {{P}_{2}}{{\overline{A}}_{22}} \\ \end{matrix} \right]=\left[ \begin{matrix} 1 & 0 \\ 0 & {{P}_{2}} \\ \end{matrix} \right]*\left[ \begin{matrix} {{\overline{a}}_{11}} & {{\overline{a}}_{12}} \\ {{\overline{a}}_{21}} & {{\overline{A}}_{22}} \\ \end{matrix} \right][/math]

(3.13)

A úpravou rovnice (3.13) podľa (3.11) dostávame

[math]\left[ \begin{matrix} 1 & 0 \\ {{P}_{2}}~{{l}_{21}} & {{L}_{22}} \\ \end{matrix} \right]*~\left[ \begin{matrix} {{u}_{11}} & {{u}_{12}} \\ 0 & {{U}_{22}} \\ \end{matrix} \right]=\left[ \begin{matrix} 1 & 0 \\ 0 & {{P}_{2}} \\ \end{matrix} \right]*{{P}_{1}}A[/math]

(3.14)

Teraz je rovnica (3.14) v požadovanom tvare LU=PA , kde

[math]L=\left[ \begin{matrix} 1 & 0 \\ {{P}_{2}}~{{l}_{21}} & {{L}_{22}} \\ \end{matrix} \right],\ U=\left[ \begin{matrix} {{u}_{11}} & {{u}_{12}} \\ 0 & {{U}_{22}} \\ \end{matrix} \right]~,P=\left[ \begin{matrix} 1 & 0 \\ 0 & {{P}_{2}} \\ \end{matrix} \right]*{{P}_{1}}[/math]

Algoritmus LU rozkladu vyžaduje [math]2{{n}^{3}}/3[/math]operácií [2][3].

Choleského rozklad

Choleského rozklad je špeciálny rozklad matíc, ktorý možno použiť len na rozklad symetrických kladne definitných matíc. Takéto matice sa ale v určitých aplikáciách vyskytujú dosť často. Choleského rozklad je rýchlejší ako tradičný LU rozklad, pretože využíva špeciálne vlastnosti matíc[8].

Majme systém lineárnych rovníc Ax = b, kde A je n×n symetrická kladne definitná matica, b je známy vektor pravých strán, a x je hľadaný vektor riešení. Jedným so spôsobov riešenia je použitie Choleského rozkladu.

Veta: Ak je matica symetrická kladne definitná, potom existuje dolná trojuholníková matica L, s kladnými diagonálnymi prvkami tak, že [math]A=L{{L}^{T}}[/math]

Rovnica (3.20) sa nazýva Choleského rozkladom. Vektor riešení dostaneme vyriešením trojuholníkových systémov [math]Ly=b\ \ a\ \ {{L}^{T}}x=y[/math] [3].

Pri LU rozkladu prvky matíc L a U nemajú takmer žiadnu vzájomnú väzbu okrem toho, že ich súčinom dostaneme maticu A. Naopak pri Choleského rozklade pre prvky matíc platí [math]{{L}_{ij}}=L_{ji}^{T}[/math] [8] .

Nech matica A a hľadaná matica L sú blokové matice n×n so štvorcovými diagonálnymi blokmi . Vyjadrením (i,j) v rovnici (3.15) , pre ktoré platí i≥j , dostávame

[math]{{A}_{ij}}=\underset{k=1}{\overset{j}{\mathop \sum }}\,{{L}_{ik}}L_{jk}^{T}[/math]

Definujme S, pre ktoré platí nasledovný vzťah:

[math]S={{A}_{ij}}-\underset{k=1}{\overset{j-1}{\mathop \sum }}\,{{L}_{ik}}L_{jk}^{T}[/math]

(3.16)

Potom podľa (3.16) platí že, [math]{{L}_{jj}}L_{jj}^{T}=S~[/math] ak i=j a [math]{{L}_{ij}}L_{jj}^{T}=S[/math] ak i>j. Tieto rovnice možno použiť pre výpočet všetkých [math]L_{ij}[/math] [3] [8].

Algoritmus Choleského rozkladu vyžaduje [math]{{n}^{3}}/3[/math]operácií, čo je v porovnaní s LU rozkladom o polovicu menej [3].

Riešenie trojuholníkových systémov

Riešenie trojuholníkových systémov lineárnych rovníc, či už hustých alebo riedkych, sa vyskytuje v mnohých aplikáciách. Pretože proces riešenia vyžaduje podstatne menší čas ako príslušný rozklad na trojuholníkový tvar, často požadujeme riešiť dané systémy s rôznymi pravými stranami ale pritom rovnakou trojuholníkovou maticou. Preto je potrebné ich riešiť čo možno najefektívnejšie.

Algoritmy riešenia trojuholníkových systémov

Existujú dva klasické sekvenčné algoritmy pre riešenie trojuholníkových systémov Lx=b . Odlišujú sa v tom že jeden pristupuje k matici L po riadkoch a druhý algoritmus pristupuje po stĺpcoch.

Majme rozklad : [math]\left[ \begin{matrix} {{l}_{11}} & 0 \\ {{l}_{21}} & {{L}_{22}} \\ \end{matrix} \right]*~\left[ \begin{matrix} {{x}_{1}} \\ {{x}_{2}} \\ \end{matrix} \right]=\left[ \begin{matrix} {{b}_{1}} \\ {{b}_{2}} \\ \end{matrix} \right][/math] , kde [math]L_{22}[/math] je štvorcová pravá dolná submatica matice L o rozmeroch n-1. [math]{{l}_{21}},{{x}_{2}},{{b}_{2}}[/math] sú stĺpcové vektory o dĺžke n-1. [math]{{l}_{11}},{{x}_{1}},{{b}_{1}}[/math] sú skaláry. Toto vedie k dvom rovniciam

[math]{{l}_{11}}{{x}_{1}}={{b}_{1}}[/math]

(3.17)

a

[math]{{l}_{21}}{{x}_{1}}+{{L}_{22~}}{{x}_{2}}=~{{b}_{2}}[/math]

(3.18)

Vyriešime prvú rovnicu (3.17) a získame tak x1 :

[math]{{x}_{1}}=\frac{{{b}_{1}}}{{{l}_{11}}}[/math]

Druhá rovnica (3.18) je dolný trojuholníkový systém vo forme [math]{{L}_{22}}{{x}_{2}}=~{{b}_{2}}-{{l}_{21}}{{x}_{1}}[/math]. Tento systém možno riešiť rekurzívne a získať tak x2. Tento algoritmus využíva iteráciu cez stĺpce matice L. Môžeme si všimnúť, že b1 a b2 sú použité len raz . Preto môžeme v algoritme priradiť x do b a používame ďalej v algoritme už len x.


Algoritmus s prístupom po stĺpcoch

   x=b;
   for j=1,... n-1 do
      xj= xj / Ljj ;
      for i > j,Lij != 0 do
         xj= xj  Lij * xj;
      end for
   end for


Algoritmus prístupom po riadkoch

   x=b;
   x1= x1 / l11 ;
   for i=2,... n do
     for j=2,... i-1 do
       xj= xj - Lij * xj ;
     end for
    xi= xi / Lii;
   end for


Pre riešenie Ux = b , kde U je uložená po stĺpcoch, použijeme ďalší rozklad

[math]\left[ \begin{matrix} {{U}_{11}} & {{u}_{12}} \\ 0 & {{u}_{22}} \\ \end{matrix} \right]*~\left[ \begin{matrix} {{x}_{1}} \\ {{x}_{2}} \\ \end{matrix} \right]=\left[ \begin{matrix} {{b}_{1}} \\ {{b}_{2}} \\ \end{matrix} \right][/math]

Kde [math]U_{11}[/math] je štvorcová submatica matice U o rozmeroch n-1. Dostávame dve rovnice

[math]U_11 x_1+u_12 x_2=b_1[/math]

(3.19)

a

[math]{{u}_{22}}{{x}_{2}}={{b}_{2}}[/math]

(3.20)

Druhú rovnicu (3.20) možno riešiť ako [math]{{x}_{2}}=\frac{{{b}_{2}}}{{{u}_{22}}}[/math] a z prvej (3.19) dostávame [math]{{U}_{11}}{{x}_{1}}=~{{b}_{1}}-{{u}_{12}}{{x}_{2}}[/math]. Tento horný trojuholníkový systém riešime podobne ako v predchádzajúcom prípade dolný trojuholníkový systém prostredníctvom algoritmu s prístupom po stĺpcoch [1][2].