8. Jöfnuhneppi
Why do you go away? So that you can come back. So that you can see the place you came from with new eyes and extra colors. And the people there see you differently, too. Coming back to where you started is not the same as never leaving. – Terry Pratchett
8.1. Línuleg jöfnuhneppi
8.1.1. Verkefnið
Verkefnið í þessum kafla er eftirfarandi. Gefið \(n\times n\) fylki \(A\) og \(n\)-vigur \(\mbox{${\bf b}$}\) þá leitum við að vigri \(\mbox{${\bf x}$}\) þannig að
8.1.2. Lausnir
Við höfum almennt tvær leiðir til þess að leysa línuleg jöfnuhneppi:
Gauss-eyðing og innsetning.
Reikna andhverfu \(A\), \(A^{-1}\), en þá er
\[\mbox{${\bf x}$}= A^{-1}\mbox{${\bf b}$}.\]
8.1.3. Fjöldi aðgerða
Gauss-eyðing fyrir \(n\times n\) fylki krefst um það bil \(\frac 23n^3\) reikniaðgerða. Innsetningin krefst svo \(n^2\) aðgerða til viðbótar. Samanlagður fjöldi aðgerða er því
\[\frac 23n^3+\frac 32n^2 -\frac 76n.\]Það að reikna \(A^{-1}\) krefst hins vegar \(2n^3-2n^2+n\) aðgerða og margföldunin \(A^{-1}b\), krefst \(2n^2-n\) aðgerða til viðbótar. Samanlagður fjöldi aðgerða er því
\[2n^3.\]
Hér er greinilega gáfulegra að nota Gauss-eyðingu. Auk þess er ekki skynsamlegt að ætla að reikna andhverfuna ef ákveða fylkisins er 0 eða nálægt 0. Almennt þá forðumst við eins og mögulegt er að reikna \(A^{-1}\).
8.1.4. Vandamál með stöðugleika
Skoðum jöfnuhneppið
Nákvæm lausn er \(x_1=1+\frac{\varepsilon}{1-\varepsilon}, x_2=1-\frac{\varepsilon}{1-\varepsilon}\).
Ef hins vegar \(\varepsilon\) er minna en nákvæmnin í tölvunni sem erum að vinna á, þá gefur Gauss-eyðing í tölvu, þar sem eytt er með 1. línu, svarið \(x_1 = 0, x_2 = 1\).
Ef línunum væri víxlað, þá gæfi tölvan hins vegar \(x_1=1, x_2=1\) sem er miklu nær réttu svari.
Aðvörun
Það er alveg ljóst að megum ekki framkvæma Gauss-eyðingu blindandi því þá geta magnast upp styttingarskekkjur sem skemma lausnina okkar.
8.2. Vending (e. pivoting)
8.2.1. Inngangur
Það sem olli vandræðum í dæminu hér á undan var það að forystustuðull fyrstu línunnar var hlutfallslega miklu minni en forystustuðull annarrar línu.
Lausnin felst í því að víxla á línum þannig að við þurfum ekki að notast við litla forystustuðla.
8.2.2. Hlutvending (e. partial pivoting)
Í grófum dráttum: Í umferð \(i\) í Gauss-eyðingunni þá athugum við hvort tölugildi forystustuðla línanna fyrir neðan línu \(i\) eru stærri en forystustuðull línu \(i\), ef svo er þá víxlum við á þeirri línu og línu \(i\).
Það er, í \(i\)-tu ítrun Gauss-eyðingar þá látum við \(M_i = \max_{i\leq j \leq n} |a_{ji}|\). Ef \(|a_{ii}| < M_i\) þá víxlum við á línu \(i\) og fyrstu línunni fyrir neðan sem hefur forystustuðul með tölugildi jafnt og \(M_i\). Það er, ef \(j_0 = \min\{ j ; i \leq j\leq n \text{ og } a_{ji} = M_i \}\) þá víxlum við á línu \(i\) og \(j_0\).
8.2.3. Vankantar
Hlutvending virkar oft vel en getur búið til skekkju þar sem hún tekur bara tillit til forystustuðlanna í hverri línu.
Dæmi þar sem hlutvending virkar illa
Ef jöfnuhneppið
\[\begin{split}\begin{aligned} 0.7 x_1 + 1725 x_2 &= 1739\\ 0.4352 x_1 - 5.433 x_2 = 3.271 \end{aligned}\end{split}\]er leyst með fjögra stafa nákvæmni og hlutvendingu þá fæst \(x_2=1.001\) og \(x_1=17.14\) en rétt svar er \(x_2=1\) og \(x_1=20\). Það er því ljóst að hlutvending tekst ekki alltaf til að halda skekkju í skefjum.
8.2.4. Sköluð hlutvending (e. scaled partial pivoting)
Ein leið til að koma í veg fyrir þessi vandræði er sköluð hlutvending.
Skilgreinum vigurinn \(\mbox{${\bf s}$}\) sem heldur utan um ,,stærð‘‘ línanna í \(A\),
Látum dálkvigurinn \(\mbox{${\bf r}$}\) halda utan um það hvernig við umröðum línunum í \(A\). Byrjum með
8.2.5. Athugasemd
Við munum uppfæra \(\mbox{${\bf r}$}\) eftir þörfum en breytum ekki \(\mbox{${\bf s}$}\) (of dýrt ef \(n\) er stórt).
Í ítrun \(i\) þá látum við
og látum \(j_0\) vera minnsta \(j\) þannig að hámarkinu er náð,
Ef \(i < j_0\) þá skiptum við á línum \(i\) og \(j_0\), þ.e.
Þannig að í ítrun \(i\) þá segir \(i\)-ta stakið í \(\bf r\) okkur hvaða línu við eigum að eyða með.
Aðvörun
Athugið að hér umröðum við ekki línunum í fylkinu því það er miklu ódýrara að nota vigurinn \(\bf r\) til þess að halda utanum í hvaða röð á að framkvæma Gauss-eyðinguna.
8.3. Fylkjastaðall
8.3.1. Að mæla fjarlægð milli hluta
Á rauntalnalínunni þá mælum við fjarlægð með tölugildinu, þannig að fjarlægðin á milli \(x\) og \(y\) er gefin með \(d(x,y)=|x-y|\).
Í \(\mathbb R^n\) þá finnst okkur evklíðski staðallinn náttúrulegur, enda svarar hann til þess að mæla fjarlægð milli punkta með reglustiku;
Þetta er hins vegar ekki eina leiðin til þess mæla fjarlægð í \({\mathbb R}^n\) og, eins og við sjáum fljótlega, ekki endilega réttari en aðrar aðferðir.
Almennt viljum við geta mælt ,,fjarlægð‘‘ á milli allra þeirra hluta sem við erum skoða, hvort sem það eru margliður, föll eða fylki. Tilgangurinn er að geta metið hversu langt nálgunin okkar er frá réttu gildi og hversu stór skekkjan er í samanburði við stærð hlutarins sem við erum að vinna með.
8.3.2. Vigurstaðall
Fall \(\| \cdot\|:{\mathbb R}^n \to {\mathbb R}\) kallast vigurstaðall (e. vector norm) ef fyrir öll \(\mbox{${\bf x}$},\mbox{${\bf y}$}\in {\mathbb R}^n\) og \(\alpha \in {\mathbb R}\) gildir eftirfarandi:
\(\|\mbox{${\bf x}$}\| \geq 0\)
\(\|\mbox{${\bf x}$}\| = 0\) ef og aðeins ef \(\mbox{${\bf x}$}= 0\)
\(\|\alpha\mbox{${\bf x}$}\| = |\alpha|\|\mbox{${\bf x}$}\|\)
\(\|\mbox{${\bf x}$}+\mbox{${\bf y}$}\| \leq \|\mbox{${\bf x}$}\| + \|\mbox{${\bf y}$}\|\)
Athugasemd
Tölugildisfallið á \({\mathbb R}\) er greinilega staðall.
8.3.3. Dæmi um staðla
\(\ell_2\) staðallinn: Einnig kallaður evklíðska fjarlægðin, er gefinn með
\[\|\mbox{${\bf x}$}\|_2 = \left( \sum_{j=1}^n x_j^2 \right)^{\frac 12} = \sqrt{\mbox {${\bf x}$}\cdot \mbox{${\bf x}$}}.\]\(\ell_\infty\) staðallinn:
\[\|\mbox{${\bf x}$}\|_\infty = \max_{1\leq j \leq n} |x_j|.\]\(\ell_p\) staðlar: Almennt ef \(1\leq p < \infty\) þá skilgreinum við
\[\|\mbox{${\bf x}$}\|_p = \left( \sum_{j=1}^n |x_j|^p \right)^{\frac 1p}.\]
8.3.4. Fylkjastaðall
Fylkjastaðall (e. matrix norm) er fall \(\|\cdot\|:{\mathbb R}^{n\times n} \to {\mathbb R}\), þannig að fyrir öll \(A,B \in {\mathbb R}^{n\times n}\) og \(\alpha \in {\mathbb R}\) gildir
\(\|A\| \geq 0\)
\(\|A\| = 0\) ef og aðeins ef \(A=0\)
\(\| \alpha A\| = |\alpha|\|A\|\)
\(\|A+B\| \leq \|A\| + \|B\|\)
\(\|AB\| \leq \|A\|\|B\|\)
Athugasemd
Ef þessi skilgreining er borin saman við skilgreininguna á vigurstaðli fyrir vigurrúm þá sjáum við að eini raunverulegi munurinn er skilyrði 5.
8.3.5. Fylkjastaðall skilgreindur út frá vigurstaðli
Látum \(\|\cdot\|\) vera vigurstaðal. Fallið \(\|\cdot\|:{\mathbb R}^{n\times n} \to {\mathbb R}\) sem skilgreint er með
kallast náttúrulegi fylkjastaðallinn sem \(\|\cdot\|\) gefur af sér.
Athugasemd
Það þarf að sýna, og er ekki mjög erfitt, að þessi fylkjastaðall uppfyllir öll skilyrðin í skilgreiningu hér á undan og er því sannarlega fylkjastaðall.
Athugasemd
Ef \(\|\cdot\|\) er náttúrulegur fylkjastaðall þá gildir að fyrir öll fylki \(A\) og alla vigra \(\mbox{${\bf x}$}\) að
8.3.6. Dæmi um fylkjastaðal
Fyrir sérhvern \(\ell_p\) staðal fáum við fylkjastaðal \(\|\cdot\|_p\).
\(\|\cdot\|_\infty\): Einfaldastur er staðallinn sem tilheyrir \(\ell_\infty\), en hann uppfyllir
8.3.7. Eigingildi
Látum \(A\) vera fylki. Ef tala \(\lambda\) (hugsanlega tvinntala) og vigur \(\mbox{${\bf x}$}\) uppfylla
þá kallast \(\lambda\) eigingildi \(A\), og \(\mbox{${\bf x}$}\) eiginvigur \(A\).
Athugið að eigingildi \(A\) eru nákvæmlega rætur kennimargliðu \(A\), \(t \mapsto \det(A-It)\).
8.3.8. Róf og rófgeisli
Mengi allra eigingilda \(A\) er kallað róf \(A\) (e. spectrum) og er táknað með \(\sigma(A)\).
Rófgeisli (e. spectral radius) fylkisins \(A\) er talan
8.3.9. Setning um rófgeisla
Látum \(A\) vera fylki, þá gildir eftirfarandi
\(\|A\|_2 = \sqrt{\rho(A^T A)}\)
\(\rho(A) \leq \|A\|\) fyrir sérhvern náttúrulegan fylkjastaðal \(\|\cdot\|\)
Fyrir sérhvert \(\varepsilon>0\) þá er til náttúrulegur fylkjastaðall \(\|\cdot\|\) þannig að \(\|A\| \leq \rho(A) + \varepsilon\).
8.4. Skekkjumat og ástandstala
8.4.1. Hvernig á að mæla skekkju
Gerum ráð fyrir að \(A\) sé andhverfanlegt fylki, \(\mbox{${\bf b}$}\) vigur og að við séum að leita að lausn \(\mbox{${\bf x}$}\) á
Ef við höfum nálgun \(\tilde {\bf x}\) þannig að leifin (e. residual) \({\bf r} = A\tilde {\bf x}- {\bf b}\) er lítil, hvað getum við þá sagt um skekkjuna (e. error) \({\bf e}= {\bf x}-\tilde {\bf x}\)? Er hún endilega lítil?
Sjáum að svo er ekki, skekkjan getur verið hlutfallslega miklu meiri heldur en leifin.
Dæmi
Skoðum jöfnuhneppið
\[\begin{split}\left[\begin{matrix} 1& 2 \\ 0.99 & 1.99 \end{matrix}\right] \mathbf{x} = \left[\begin{matrix} 1 \\ 1 \end{matrix}\right]\end{split}\]Sjáum að rétt lausn er \([-1 \ 1]^T\). Ef við skilgreinum \(\tilde x = [1 \ 0]^T\) þá er
\[\mathbf{e} = [-2 \ 1]^T \qquad \|\mathbf{e}\|_\infty = 2.\]Hins vegar þá er leifin
\[\begin{split}\mathbf{r} = A\mathbf{\tilde x} -\mathbf{b} = \left[\begin{matrix} 1& 2 \\ 0.99 & 1.99 \end{matrix}\right] \left[\begin{matrix} 1\\ 0 \end{matrix}\right] - \left[\begin{matrix} 1 \\ 1 \end{matrix}\right] \left[\begin{matrix} 0 \\ -0.01 \end{matrix}\right]\end{split}\]þannig að \(\|\mathbf{e}\|_\infty = 0.01\). Hér er skekkjan 200 sinnum stærri en leifin sem sýnir að lítil leif þarf ekki endilega að hafa í för með sér litla skekkju.
8.4.2. Skekkjumat
Við höfum fjórar jöfnur
og þær gefa okkur fjórar ójöfnur fyrir tilsvarandi staðal:
Við getum tengt tvær síðustu ójöfnurnar saman í mat á skekkjunni
og með því að nota fyrstu tvær ójöfnurnar fæst mat á hlutfallslegri skekkju
Nú skilgreinum við ástandstölu fylkisins \(A\) með
8.4.3. Ástandstala fylkis og mat á hlutfallslegri skekkju
Með ástandstölunni verður mat okkar á hlutfallslegu skekkjunum að
Þetta segir okkur að ef ástandstala fylkisins er stór er mögulegt að skekkjan verði miklu stærri en leifin, samanber dæmið hér á undan þar sem ástandstalan er 1197.
Aðvörun
Athugið að skilgreiningin
er mjög háð því hvaða staðal við veljum. Þó höfum við að fyrir alla fylkjastaðla gildir
8.4.4. Áhrif gagnaskekkju
Hugsum okkur nú að við viljum leysa jöfnuhneppi \(A\mbox{${\bf x}$}=\mbox{${\bf b}$}\), en vegna skekkju í stuðlum jöfnuhneppisins leysum við annað hneppi \(\tilde A\mathbf {\tilde x}=\mathbf{\tilde b}\).
Við skilgreinum gagnaskekkjur \(\delta A=\tilde A-A\) og \(\delta\mbox{${\bf b}$}=\mathbf{\tilde b}-\mbox{${\bf b}$}\) og ætlum að nota þær til þess að meta skekkjuna \(\mbox{${\bf e}$}=\delta\mbox{${\bf x}$}=\mathbf{\tilde x}-\mbox{${\bf x}$}\).
Við verðum að gera ráð fyrir að \(\|\delta A\|\leq 1/\|A^{-1}\|\) sem tryggir að fylkið \(\tilde A\) sé andhverfanlegt.
Nú stillum við upp jöfnuhneppinu \(\tilde A\mathbf{\tilde x}=\mathbf{\tilde b}\) á forminu
sem jafngildir
Af þessari jöfnu leiðir ójafnan
Einangrum nú \(\|\delta \mbox{${\bf x}$}\|\),
deilum með \(\|\mbox{${\bf x}$}\|\) báðum megin, margföldum síðan með \(\|A\|\) í teljara og nefnara í hægri hliðinni,
Samkvæmt skilgreiningu er \(\kappa(A)=\|A\|\|A^{-1}\|\) og við höfum auk þess ójöfnuna \(\|\mbox{${\bf b}$}\|\leq \|A\|\|\mbox{${\bf x}$}\|\), en það gefur matið á hlutfallslegu skekkjunni sem við sækjumst eftir
8.5. LU-þáttun
8.5.1. Nokkrar skilgreiningar
Fylkið \(A\) nefnist neðra þríhyrningsfylki ef öll stök fyrir ofan hornalínuna í \(A\) eru \(0\), þ.e. \(a_{ij}=0\) ef \(i<j\).
Fylkið \(A\) nefnist efra þríhyrningsfylki ef öll stökin neðan við hornalínuna eru \(0\), þ.e. \(a_{ij}=0\) ef \(i>j\).
Fylkið \(A\) nefnist bandfylki (e. striped matrix) ef til er \(\beta \leq n-2\) þannig að \(a_{ij}=0\) ef \(|i-j|>\beta\). Minnsta talan \(\beta\) sem uppfyllir þetta skilyrði kallst á bandvídd fylkisins \(A\).
Ef \(A\) er bandfylki með bandvíddina \(1\), þá nefnist \(A\) þríhornalínufylki.
Fylkið \(A\) er sagt vera samhverft ef \(a_{ij}=a_{ji}\) fyrir öll \(i\) og \(j\).
Fylkið \(A\) er sagt vera jákvætt ákvarðað ef \(\mbox{${\bf x}$}^TA\mbox{${\bf x}$}>0\) gildir fyrir alla vigra \(\mbox{${\bf x}$}\neq 0\) í \({\mathbb R}^n\).
8.5.2. Úrlausn á jöfnuhneppi með neðra þríhyrningsfylki
Ef \(A\) er neðra þríhyrningsfylki, þá er úrlausn jöfnuhneppisins \(A\mbox{${\bf x}$}= \mbox{${\bf b}$}\) auðveld, því hneppið er þá af gerðinni
Við getum rakið okkur niður línurnar og leyst út stærðirnar \(x_1,\dots,x_n\) hverja á eftir annarri
8.5.3. Fjöldi aðgerða
Nú skulum við telja saman fjölda reikningsaðgerða sem þarf til þess að framkvæma þessa útreikninga.
Við lítum á samlagningu og frádrátt sem sömu aðgerðina. Við þurfum enga samlagningu til að reikna út \(x_1\), eina til þess að reikna út \(x_2\), tvær til þess að reikna \(x_3\) og þannig áfram upp í \(n-1\) samlagningu til þess að reikna út \(x_n\).
Heildarfjöldinn er því
Fjöldi margfaldana er sá sami.
Við þurfum hins vegar aðeins eina deilingu til þess að reikna út hverja af stærðunum \(x_1,\dots,x_n\).
Heildarfjöldi reikniaðgerða við úrlausn á línulegu jöfnuhneppi \(Ax=b\), þar sem \(A\) er neðra þríhyrningsfylki er því
8.5.4. Úrlausn á jöfnuhneppi með efra þríhyrningsfylki
Hugsum okkur nú að \(A\) sé efra þríhyrningsfylki. Þá verður jöfnuhneppið
Við getum rakið okkur upp línurnar og fundið \(x_n,x_{n-1},\dots,x_1\) hverja af annarri
Aðgerðafjöldinn er sá sami og í úrlausn neðra þríhyrningshneppisins.
8.5.5. Línuaðgerðir
Gerum ráð fyrir að við séum að ryðja \(4\times 4\) fylki með Gauss-eyðingu og að við séum búin með fyrsta dálkinn. Næsta skref er að nota línu 2 til þess að losna við stökin í sætum (3,2) og (4,2).
Lína 3, \(l_3\), verður þá að \(l_3 - \frac ba l_2\), og lína 4, \(l_4\), verður að \(l_4 - \frac ca l_2\).
Þessar tvær aðgerðir má einnig framkvæma með því að margfalda fylkið að ofan frá vinstri með fylkinu
8.5.6. Ný sýn á Gauss-eyðingu
Það að ryðja fylkið eins og hér á undan, felst því í því að margfalda \(A\) frá vinstri með þremur fylkjum \(M_1, M_2\) og \(M_3\) sem eru þannig að \(M_i\) er einingafylkið nema í sætum \((i+1,i),\ldots,(n,i)\) eru tölur sem eru hugsanlega frábrugðnar 0. Fylkið \(M_i\) sér þá um að eyða í dálk \(i\).
Athugum að Gauss-eyðing skilar fylki \(U\) á efra þríhyrningsformi.
Við getum því skrifað
Almennt, fyrir \(n \times n\) fylki þá getum við skrifað
þar sem \(M_i\) eru fylki eins og lýst er hér að ofan.
8.5.7. Nánar um \(M_i\)
Við sjáum að ef
þá er
Eins þá er auðvelt að sjá að
Það er
8.5.8. LU-þáttun
Þetta hefur í för með sér að ef við skilgreinum \(L = M_1^{-1} M_2^{-1} \cdots M_{n-1}^{-1}\) þá er
eða
Þannig að með því að framkvæma Gauss-eyðingu á \(A\) og halda utanum aðgerðirnar (\(M_i\)’in) og niðurstöðuna \(U\) þá fæst \(LU\)-þáttun á \(A\).
8.5.9. \(LU\)-þáttun og sköluð hlutvending
Aðferðin hér að framan gerði ráð fyrir að stak \(a_{i,i}\) yrði aldrei 0 (þá getum við ekki notað þá línu til þess að eyða). Eins hugsuðum við ekkert út í styttingarskekkjur sem við búum til.
Ef við framkvæmum Gauss-eyðinguna með skalaðri hlutvendingu þá ráðum við bót á báðum þessum atriðum, því þá veljum við aldrei línu með forystustuðul 0 og við minnkum skekkjuna eins og hefur komið fram áður.
Aðvörun
Þegar við notum skalaða hlutvendingu þá uppfylla fylkin \(L\) og \(U\) ekki endilega \(LU=A\). Þess í stað fæst
þar sem fylkið \(P\) umraðar línunum í \(A\) í samræmi við umröðunarvigrinn \(\mbox{${\bf r}$}\). Það er, stökin í \(P\) eru 0, nema \(p_{i,r_i} = 1\).
8.5.10. Jöfnuhneppi leyst með LU-þáttun
Við skiptum nú úrlausnarferlinu á \(A\mbox{${\bf x}$}=\mbox{${\bf b}$}\) í þrjú skref
(i) \(LU\) -þáttun: Reiknum út neðra þríhyrningsfylki \(L\) og efra þríhyrningsfylki \(U\) með skalaðri hlutvendingu. Höldum utanum \(\mbox{${\bf r}$}\) (og þar með \(P\)). Þá er
(ii) Forinnsetning: Leysum \(L\mbox{${\bf y}$}=P\mbox{${\bf b}$}\).
(iii) Endurinnsetning: Leysum \(U\mbox{${\bf x}$}=\mbox{${\bf y}$}\).
Lausnin sem við leitum að er þá \(\mbox{${\bf x}$}\), því
sem er jafngilt því að \(\mbox{${\bf b}$}=A\mbox{${\bf x}$}\)
8.5.11. Fjöldi reikniaðgerða fyrir \(LU\)-þáttun
Heildarfjöldi reikningsaðgerða til þess að framkvæma \(LU\)-þáttunina er
Liðir (ii) og (iii) krefjast svo \(n^2 + n^2 = 2n^2\) aðgerða til viðbótar. Samanlagður fjöldi aðgerða er því
Ef \(n\) er stór tala, segjum \(n=1000\), þá er fyrsti liðurinn lang stærstur og við getum slegið á aðgerðafjöldann með \(\tfrac 23n^3\).
Þetta er töluvert betra heldur en að reikna \(A^{-1}\) og svo \(\mbox{${\bf x}$}=A^{-1}\mbox{${\bf b}$}\), en þá er heildafjöldi aðgerða \(2n^3\).
8.5.12. Mörg jöfnuhneppi
Ef við þurfum að leysa mörg jöfnuhneppi með sama stuðlafylkið þá koma kostir \(LU\)-þáttunar vel í ljós.
Gefið \(A\) og \(\mbox{${\bf b}$}_1,\ldots,\mbox{${\bf b}$}_m\) þá leitum við að vigrum \(\mbox{${\bf x}$}_1,\ldots,\mbox{${\bf x}$}_m\) þannig að
Við þurfum bara að framkvæma \(LU\)-þáttunina einu sinni, en innsetningarnar í lið (ii) og (iii) framkvæmum við \(m\)-sinnum. Heildar fjöldi aðgerða er þá
8.6. Fastapunktsaðferðir fyrir línuleg jöfnuhneppi
8.6.1. Ítrekunaraðferðir til þess að leysa línuleg jöfnuhneppi
Munum að samanlagður fjöldi reikniaðgerða sem þarf til þess að leysa \(n\times n\) línulegt jöfnuhneppi \(A\mbox{${\bf x}$}=\mbox{${\bf b}$}\) með Gauss-eyðingu, for- og endurinnsetningu er \(\sim \tfrac 23 n^3\).
Ef jöfnuhneppið er jafngilt hneppinu
þá getum við sett upp fastapunktsferð til þess að leysa þetta hneppi með því að giska á eitthvert nálgunargildi \(\mbox{${\bf x}$}^{(0)}\) fyrir lausnina og ítra síðan með formúlunni
í þeirri von að runan \((\mbox{${\bf x}$}^{(k)})\) stefni á réttu lausnina \(\mbox{${\bf x}$}\) á upprunalega jöfnuhneppinu.
Það þarf \(n^2-n\) aðgerðir til þess að reikna út margfeldið \(T\mbox{${\bf v}$}\) fyrir vigur \(\mbox{${\bf v}$}\in {\mathbb R}^n\) og því getum við komist upp með að taka \(\approx \tfrac 23 n\) ítrekanir áður en heildaraðgerðafjöldinn er kominn upp fyrir aðgerðafjöldann í Gauss-eyðingu, ásamt for- og endurinnsetningu.
8.6.2. Fastapunktsítrekun til þess að leysa línuleg jöfnuhneppi
Við ætlum nú að gera ráð fyrir að jafnan \(A\mbox{${\bf x}$}=\mbox{${\bf b}$}\) sé jafngild
giskum á eitthvert nálgunargildi \(\mbox{${\bf x}$}^{(0)}\) fyrir lausnina \(\mbox{${\bf x}$}\) og skilgreinum síðan rununa
Allt er nú undir því komið að \(n\times n\) fylkið \(T\) sé vel valið.
8.6.3. Fastapunktsítrekun - skekkjumat
Við skilgreinum nú skekkjuna í \(k\)-ta ítrekunarskrefinu \(\mbox{${\bf e}$}^{(k)}=\mbox{${\bf x}$}-\mbox{${\bf x}$}^{(k)}\). Þá gildir formúlan
sem við höfum áður séð í athugun okkar á fastapunktsaðferðinni.
Nú beitum við
Við höfum \(\mbox{${\bf x}$}^{(1)}-\mbox{${\bf x}$}^{(0)}=T\mbox{${\bf x}$}^{(0)}+\mbox{${\bf c}$}-\mbox{${\bf x}$}^{(0)}\) og \(\mbox{${\bf c}$}=\mbox{${\bf x}$}-T\mbox{${\bf x}$}\) og þar með
Þetta gefur jöfnuna
Með smá útreikningi má sýna fram á að ef \(\|T\|<1\), þá er
Við vorum komin með ójöfnurnar
og niðurstaðan verður því
Sem þýðir að fastapunktsaðferðin er samleitin þegar \(\|T\|<1\).
8.6.4. Skilyrði fyrir samleitni
Munum nú að \(\rho(T)\) er rófgeisli fylkisins \(T\) sem er samkvæmt skilgreiningu tölugildi á stærsta eigingildi fylkisins \(T\).
Rifjum líka upp að samkvæmt setningu um rófgeisla gildir fyrir sérhvern náttúrlegan fylkjastaðal \(\|\cdot\|\) að \(\rho(T) \leq \|T\|\) og að fyrir sérhvert \(\varepsilon>0\) gildir að hægt er að finna náttúrlegan fylkjastaðal þannig að
Sérstaklega gildir í tilfellinu \(\rho(T)<1\) að til er náttúrlegur fylkjastaðall \(\|\cdot\|\) þannig að \(\|T\|<1\).
Þetta þýðir að fastapunktsaðferðin er samleitin ef \(\rho(T) < 1\).
8.6.5. Skiptingaraðferð (e. splitting method)
Við viljum setja upp fastapunktsaðferð til þess að leysa línulega jöfnuhneppið \(A\mbox{${\bf x}$}=\mbox{${\bf b}$}\) með því að umrita jöfnuna yfir í jafngilda línulega jöfnu
Gerum ráð fyrir að \(A=M-N\) þar sem \(M\) er andhverfanlegt fylki. Þá jafngildir \(A\mbox{${\bf x}$}=\mbox{${\bf b}$}\) jöfnunni \(M\mbox{${\bf x}$}=N\mbox{${\bf x}$}+\mbox{${\bf b}$}\) og fastapunktsjafnan er
þar sem \(T = M^{-1}N\) og \(\mbox{${\bf c}$}= M^{-1}\mbox{${\bf b}$}\).
Þessi leið til þess að umrita línulega jöfnuhneppið \(A\mbox{${\bf x}$}=\mbox{${\bf b}$}\) yfir í jafngilda hneppið \(\mbox{${\bf x}$}=T\mbox{${\bf x}$}+\mbox{${\bf c}$}\) nefnist skiptingaraðferð fyrir línulega jöfnuhneppið \(A\mbox{${\bf x}$}=\mbox{${\bf b}$}\).
8.6.6. Jacobi-aðferð
Við skrifum \(A=D-L-U\), þar sem \(D\) er hornalínufylkið með hornalínu \(A\), \(L\) er neðra þríhyrningsfylki og \(U\) er efra þríhyrningsfylki
Við tökum \(M=D\) og \(N=L+U\) og fáum þá \(T=D^{-1}(L+U)\) og \(\mbox{${\bf c}$}=D^{-1}\mbox{${\bf b}$}\).
Þessi skiptingaraðferð er nefnd Jacobi-aðferð.
Rakningarformúlan er
Ef við skrifum hana hnit fyrir hnit, þá fáum við fyrir \(i=1,2,\dots,n\),
8.6.7. Gauss-Seidel-aðferð
Augljós endurbót á Jacobi-aðferðinni er að nota gildið \(x_i^{(k+1)}\) fyrir \(i<j\) um leið og það hefur verið reiknað.
Við það breytist rakningarformúlan í Jacobi-aðferð í
Þetta svarar til þess að við veljum skiptingu á \(A\) með \(M=D-L\) og \(N=U\) og þar með að
8.6.8. SOR-aðferð (e. successive over-relaxation)
Það er hægt að hraða samleitni í Gauss-Seidel-aðferð með því að taka vegið meðaltal af gildinu \(x_i^{(k+1)}\) sem kemur út úr Gauss-Seidel reikniritinu og næsta gildi á undan með vægisstuðli sem við táknum með \(\omega\).
Formúlan verður
Þetta svarar til þess að við veljum
og þar með að
8.6.9. Setning um samleitni Gauss-Seidel-aðferðarinnar
Gerum ráð fyrir að \(A\) sé samhverft rauntölufylki með öll hornalínustökin jákvæð. Þá er Gauss-Seidel aðferðin samleitin ef og aðeins ef \(A\) er jákvætt ákvarðað.
Ef fylkið \(A\) er jákvætt ákvarðað, þá er Gauss-Seidel-aðferð samleitin fyrir sérhvert val á upphafságiskun \(\mbox{${\bf x}$}^{(0)}\).
8.7. Newton-aðferð fyrir jöfnuhneppi
Að lokum þá skulum við skoða aðeins ólínuleg jöfnuhneppi.
Látum \(f_k : I \to {\mathbb R}\), \(k = 1, \ldots, n\), þar sem \(I\) er svæði í \({\mathbb R}^n\) vera samfelld föll. Það getur komið sér vel að geta leyst ólínuleg jöfnuhneppi af gerðinni
Svo heppilega vill til að aðferð Newtons virkar næstum óbreytt fyrir slík hneppi.
8.7.1. Jacobi-fylki
Skilgreinum \(\mbox{${\bf f}$}: I \to R^n\) með
og gerum ráð fyrir að allar hlutafleiðurnar \(\dfrac{\partial f_k}{\partial x_j}\) séu til og séu samfelldar.
Táknum Jacobi-fylki \(\mbox{${\bf f}$}\) með \(\mbox{${\bf f}$}'\), það er
8.7.2. Aðferð Newtons fyrir hneppi
Lausn á hneppinu hér að ofan er vigur \(\mbox{${\bf r}$}\) þannig að \(\mbox{${\bf f}$}(\mbox{${\bf r}$}) =0\).
Ef \(\mbox{${\bf r}$}\) er lausn hneppisins og \(\mbox{${\bf x}$}_0 \in {\mathbb R}^n\) er upphafságiskun á \(\mbox{${\bf r}$}\) má sjá að runan \((\mbox{${\bf x}$}_n)\), þar sem
og \(\mbox{${\bf h}$}_n^T\) er lausn á jöfnuhneppinu
stefnir á lausnina \(\mbox{${\bf r}$}\).
Við getum metið skekkjuna með
og forritið okkar helst næstum óbreytt, við þurfum aðeins að skipta abs út fyrir skipunina norm.
8.7.3. Matlab-forrit fyrir hneppi
function x = newtonNullHneppi(f,df,x0,epsilon)
%
% x = newtonNullHneppi(f,df,x0,epsilon)
%
% Nálgar núllstöð fallsins f:Rn --> Rn með aðferð Newtons.
% Fallið df er Jacobi-fylki f, x0 er upphafságiskun
% á núllstöð og epsilon er tilætluð nákvæmni.
% x0 verður að vera dálkvigur og f verður að
% skila dálkvigrum
x = x0; mis = -df(x)\f(x);
% Ítrum meðan ástæða er til
while (norm(mis) >= epsilon)
x = x + mis;
mis = -df(x)\f(x);
end
Dæmi
Grafið \(y=e^x\) sker lokaða ferilinn sem gefinn er með jöfnunni \(x^4+y^2=1\) í tveimur punktum. Notið aðferð Newtons til þess að nálga hnit þeirra með 5 aukastafa nákvæmni.
Það er alveg augljóst að punkturinn \({\mathbf r}=(0,1)\) gefur lausn á jöfnuhneppinu. Við látum eins og ekkert sé og giskum á \({\mathbf x}^{(0)}=(0.5,0.75)\)
Hér er
og
Forritið hér að ofan gefur svo eftirfarandi töflu.
\(n\) |
\(x^{(n)}\) |
\(y^{(n)}\) |
\(\|{\mathbf x}^{(n+1)}-{\mathbf x}^{(n)}\|\) |
---|---|---|---|
0 |
0.50000000000000 |
0.75000000000000 |
|
1 |
0.17270262414568 |
1.10909912528477 |
0.18447541668198 |
2 |
0.01946538693088 |
1.00638822766059 |
0.02028257413953 |
3 |
0.00020831857772 |
1.00002048613263 |
0.00020930163934 |
4 |
0.00000002190660 |
1.00000000020984 |
0.00000002190761 |
5 |
0.00000000000000 |
1.00000000000000 |
0.00000000000000 |
6 |
-0.00000000000000 |
1.00000000000000 |
0.00000000000000 |
Tökum nú fyrir hinn skurðpunktinn og notum upphafságiskun \((-0.8,0.25)\).
\(n\) |
\(x^{(n)}\) |
\(y^{(n)}\) |
\(\|{\mathbf x}^{(n+1)}-{\mathbf x}^{(n)}\|\) |
---|---|---|---|
0 |
-0.80000000000000 |
0.25000000000000 |
|
1 |
-1.03486380522268 |
0.34379785380788 |
0.07380487278262 |
2 |
-0.96968875917544 |
0.37842981331349 |
0.00919771982977 |
3 |
-0.96137076039507 |
0.38235523639344 |
0.00014098927991 |
4 |
-0.96124395918305 |
0.38241687590740 |
0.00000003252214 |
5 |
-0.96124392995056 |
0.38241689016050 |
0.00000000000000 |
6 |
-0.96124392995055 |
0.38241689016050 |
0.00000000000000 |
Nálgun okkar á skurðpunkti ferlanna í vinstra hálfplaninu er \((-0.96124392995055, 0.38241689016050)\)
Í töfluna var ekki hægt að koma fyrir athugun á samleitnistiginu en hlutfallið
fyrir fjögur síðustu gildin.