3 Iterační metody řešení soustav Tento učební text byl podpořen z Operačního programu Praha- Adaptabilita Irena Sýkorová
Soustavy lineárních rovnic Uvažujeme soustavu lineárních rovnic A x= b, ( kdematicesoustavy A=(a ij jereálnáregulárnímaticeřádu n, b=(b,b,,b n jesloupcový vektorpravýchstran,hledanéřešeníoznačíme x ( =(x (,x(,,x( n Soustavu( vyjádříme ve tvaru x=m x+ v, ( kde Mjevhodnámatice, vjesloupcovývektoriteračnímetodaspočívávtom,žezvolímenějaké počátečnípřiblížení x (0 apodlevzorce x (k+ = M x (k + v, k=0,, (3 počítámeposloupnostvektorů x (k,kterákonvergujekřešenípůvodnísoustavy x ( Výpočet ukončíme, až x (k+ x (k < ε nebo po daném počtu iterací Podmínky konvergence: a nutná a postačující Metoda(3konvergujeprokaždépočátečnípřiblížení x (0,právěkdyžspektrálnípoloměr iteračnímatice ρ(m < b postačující Jestližepronějakounormumatice Mplatí M <,pakmetoda(3konvergujeprokaždé počátečnípřiblížení x (0 Je-li splněná postačující podmínka, můžeme odhadnout velikost chyby v k-tém kroku: x x (k M M x(k x (k nebo x x (k M k M x( x (0 Popíšeme dvě základní iterační metody K tomu bude potřeba vyjádřit si matici soustavy A ve tvaru A=D+ L+U, (4 kde Djediagonálnímatice, Ljeostře(snulaminadiagonáledolnítrojúhelníkováaUjeostřehorní trojúhelníková matice, tj a a a a a n a n a n a n a nn = a 0 0 0 0 0 0 a a n 0 a = 0 + a 0 0 + 0 0 a n, 0 0 a nn a n a n 0 0 0 0
Jacobiova metoda Matici soutavy A vyjádříme ve tvaru Pak soustavu( můžeme upravit A x= b (D+ L+U x= b D x= (L+U x+ b x= D (L+U x+d b, tedy ve vzorci( volíme M J = D (L+U, v J = D b Zvolímetedy x (0 apočítámepro k=0,,, x (k+ = D (L+U x (k + D b (J a rozepsáním po souřadnicích dostáváme předpis vhodný pro počítání x (k+ i = a ii Podmínky konvergence: n j=, j i a ij x (k j + b i a ii, i=,,n, k=0,, (4 a ρ(m J < Jacobiovametodakonverguje Vlastníčíslamatice M J lzezískatřešenímrovnicedet(l+λd+ U=0 b Existujenorma,prokterou M J < Jacobiovametodakonverguje c A je ostře diagonálně dominantní Jacobiova metoda konverguje Příklad : Je dána soustava lineárních rovnic 4x + x x 3 =4 x +5x +x 3 =5 (5 x + x 5x 3 =4 Dokážeme,žeJacobiovametodabudekonvergovat,zvolímepočátečnípřiblížení x (0 =(0,0,0 a vypočítáme první dvě iterace Řešení: Matice soustavy A= 4 5 5 je ostře diagonálně dominantní, např pro řádky platí 4 > + 5 > + 5 > + Je tedy splněná postačující podmínka konvergence c, Jacobiova metoda konverguje 3
Soustavu(5upravímetak,žezprvnírovnicevyjádříme x,zedruhé x azetřetí x 3 x = 4 ( x x 3 4 x = 5 (x +x 3 5 x 3 = 5 ( x + x 4 Vezmemevektor x (0 apodlevzorce(4počítámejednotlivésouřadnicevektoru x ( : x ( = 4 (x(0 x (0 3 4= 4 (0 0 4= x ( = 5 (x(0 +x (0 3 5= 5 (0+0 5= x ( 3 = 5 ( x(0 + x (0 4= 5 (0+0 4= 4 5 Prvníiteracejetedy x ( =(,, 4 5 iteraci: =(;; 0,8 Pomocítohotovektorupočítámedruhou x ( = 4 (x( x ( 3 4= (+ 4 4 5 4= 7 0 x ( = 5 (x( +x ( 3 5= 3 5 ( 4 5 5= 5 x ( 3 = 5 ( x( + x ( 4= 5 (+ 4= 5 Druháiteraceje x ( =( 7 0,3 5, 5 =(0,35;0,9; 0,4 Proporovnáníuvedemepřesnéřešenísoustavy x =(,, =(0,5;; 0,5 aprovedeme odhadchyby,napřpronormu x x ( M J M J x (k x (k = 0,8 0,8 0,65=,6 Odhadjevtomtopřípaděvelmihrubý,protože x x ( =0,5 MATLAB Jacobiova metoda A maticesoustavy, b vektorpravýchstran, x (0 počátečnípřiblížení výpočetmatice M J >> U=triu(A, >> L=tril(A,- >> D=A-U-L >> MJ=(-*inv(D*(U+L výpočetvektoru v J >> vj=inv(d*b výpočetjednotlivýchiterací x (, x (,atd >> x=mj*x0+vj >> x=mj*x+vj atd 4
Gaussova Seidelova metoda Jestližepřivýpočtu i-tésložkyvektoru(k+-níaproximace,tjčísla x k+ i, využijeme už vypočítanésložky x k+,,x k+ i,dostanemetzvgaussovu-seidelovumetodutudostanemezevzorce ( volbou M G = (D+ L U, v G =(D+ L b a můžeme ji vyjádřit v maticovém tvaru Rozepsáním po souřadnicích dostáváme x (k+ i = i n a ij x (k+ j + a ii j= x (k+ = (D+ L U x (k +(D+ L b j=i+ a ij x (k j + b i, i=,,n, k=0,, (6 a ii Podmínky konvergence: a ρ(m G < G-Smetodakonverguje Vlastníčíslamatice M G lzezískatřešenímrovnicedet(λl+λd+ U=0 b Existujenorma,prokterou M G < G-Smetodakonverguje c A je ostře diagonálně dominantní G-S metoda konverguje d A je symetrická a pozitivně definitní G-S metoda konverguje Příklad : Pro soustavu(5 z předchozího příkladu vypočítáme dvě iterace G-S metodou Řešení: Protože matice soustavy A je ostře diagonálně dominantní, je splněná postačující podmínka konvergence c a G-S metoda konverguje Soustavu upravíme stejně jako u Jacobiovy metody x = 4 ( x x 3 4 x = 5 (x +x 3 5 x 3 = 5 ( x + x alepřivýpočtuužijemevzorec(6,tjpřivýpočtudruhéatřetísložkyvektoru x ( užvyužijeme složky vypočítané v předchozích rovnicích 4, x ( = 4 (x(0 x (0 3 4= 4 (0 0 4= x ( x ( x ( +x (0 = 5 (x( 3 5= 5 (+0 5= 3 5 3 = 5 ( x( x ( + x ( 4= 5 (+3 5 4= Prvníiteracejetedy x ( =(, 3 5, 5 =(;0,6; 0,48 Stejnýmzpůsobempočítámedruhou iteraci: x ( = 4 (x( x ( 3 4= 4 (3+ 6 5 5 4= 00 x ( = 5 (x( x ( x ( +x ( x ( 3 = 5 ( x( x ( + x ( 3 5= 5 x ( 4= 5 (6 00 +474 5 6 ( 474 00 5 5= 500 500 4= Druháiteraceje x ( =( 6 00,474 500, 500 =(0,6;0,948; 0,4884 Chybu budeme odhadovat podobně jako u Jacobiovy metody x x ( Skutečnáchybajemenší,protože x x ( =0, 500 M G M G x (k x (k = 0,75 0,75 0,39=,7 Pokud konvergují obě metody Jacobiova i Gaussova Seidelova, Gaussova Seidelova metoda konverguje rychleji 5
MATLAB Gaussova Seidelova metoda A maticesoustavy, b vektorpravýchstran, x (0 počátečnípřiblížení výpočetmatice M G >> U=triu(A, >> L=tril(A,- >> D=A-U-L >> MG=(-*inv(D+L*U výpočetvektoru v G >> vg=inv(d+l*b výpočetjednotlivýchiterací x (, x (,atd >> x=mg*x0+vg >> x=mg*x+vg atd Soustavy nelineárních rovnic Newtonova metoda Uvažujeme soustavu nelineárních rovnic neboli F( x=ō, (7 f (x,,x n =0 f (x,,x n =0 f n (x,,x n =0 apředpokládáme,žefunkce f,,f n majíspojitédruhéparciálníderivace Metodu odvodíme pro dvě rovnice o dvou neznámých f (x,x =0 f (x,x =0 Vokolí c=(c,c nahradímefunkce f, f Taylorovýmpolynomemprvníhostupně f (x,x f (c,c + f (c,c (x c + f x (c,c (x c =0 f (x,x f (c,c + f (c,c (x c + f x (c,c (x c =0 Tuto soustavu zapíšeme v maticovém tvaru f (c,c f (c,c f (c,c ( ( x x c f (c,c f = x (c,c c f (c,c x (8 6
Označíme-li F tzvjacobiovumatici F = f f x f f x a d= x c, soustava(8 pak je F ( c d= F( c a x= c+ d Chceme-li vyřešit soustavu nelineárních rovnic Newtonovou metodou, postupujeme tak, že zvolíme nějakýpočátečnívektor x (0 apro k=0,,, počítámevedvoukrocích: i nejprveurčímevektor d (k jakořešenísoustavy F ( x (k d (k = F( x (k, (9 ii položíme x (k+ = x (k + d (k Prokaždývektor x (k musíbýtmatice F ( x (k regulární,abysoustava(9mělaprávějedno řešenípokudtatopodmínkavněkteréiteracinenísplněná,jepotřebazvolitjinývektor x (0 a počítat znova Newtonovametodakonvergujerychle,alejenkdyž x (0 jedostatečněblízkopřesnéhořešení Příklad 3: Pro soustavu nelineárních rovnic x + x =4 x = x 3 + vypočítámedvěiteracenewtonovoumetodouspočátečnímvektorem x (0 =(, Řešení: Soustavu vyjádříme ve vektorovém tvaru F ( x= ( ( f (x,x x = + x 4 f (x,x x 3 = + x ( 0 = ō, kde x= 0 ( x x a určíme Jacobiovu matici F ( x= f f x f f x = ( x x 3x Přivýpočtuprvníiterace x ( =(x (,x( : i nejprveurčímevektor d (0 =(d (0,d(0 tak,ževyřešímesoustavu F ( x (0 d (0 = F( x (0, podosazení x (0 =(, ( 3 ( (0 d d (0 = ( + 4 3 + ( 4 3 ( (0 d d (0 = ( 0 7
aodtuddostaneme d (0 =(, 3 ii ve druhém kroku první iterace vypočítáme tedy ( x ( = + x ( = x (0 + d (0, ( 3 = ( 3 5 ( 0,986, 7857 Stejnýmzpůsobempostupujemeipřivýpočtudruhéiterace x ( =(x (,x( : i nejprveurčímevektor d ( =(d (,d( tak,ževyřešímesoustavu podosazení x ( =( 3,5 ( 3 5 3 ( 3 ( 3 7 F ( x ( d ( = F( x (, ( d ( d ( 5 7 507 96 = ( d ( aodtuddostaneme d ( =( 05 6, 7 ii ve druhém kroku druhé iterace vypočítáme tedy x ( = ( 3 5 MATLAB Newtonova metoda + ( ( 3 +( 5 d ( x ( = x ( + d (, ( 05 6 7 = 4 ( 3 3 + 5 ( 5 98 = ( 39 35 4876 745 F danéfunkce(sloupcovývektor, x (0 počátečnípřiblížení označení symbolických proměnných >> syms x,y; zadánípočátečníhovektoru x (0 afunkce F >> x0=[; ] >> F=[x +y -4; y-x 3-] výpočet jacobiovy matice >> J=jacobian(F,[x,y] dosazení x=x (0, y= x(0 dojacobiovymaticeavektoru F >> J0=subs(J,[x,y],x0 >> F0=subs(F,[x,y],x0 výpočetprvníaproximace x ( (d (0 = inv(j0 F0 >> x=x0-inv(j0*f0 výpočetdruhéaproximace x ( (d ( = inv(j F >> J=subs(J,[x,y],x >> F=subs(F,[x,y],x >> x=x-inv(j*f atd 4 744 ( 0,99, 7763 8