3.1 Reševanje nelinearnih sistemov Rešujemo sistem nelinearnih enačb f 1 (x 1, x 2,..., x n ) = 0 f 2 (x 1, x 2,..., x n ) = 0. f n (x 1, x 2,..., x n ) = 0. Pišemo F (x) = 0, kjer je x R n in F : R n R n. Za testni sistem bomo vzeli 3x 1 cos(x 1 x 2 ) 0.6 = 0 x 2 1 81(x 2 + 0.1) 2 + sin(x 3 ) + 1.1 = 0 e x 1 x 2 + 20x 3 + 9.1 = 0, ki ima rešitev α = (0.533332, 0.0054539, 0.504855).
Kako pridemo do začetnih približkov Več kot imamo enačb, težje pridemo do začetnih približkov, če ne poznamo še ozadja sistema, ki ga rešujemo. V primeru ene same enačbe f(x) = 0 lahko iz grafa določimo začetni približek. V primeru dveh enačb f 1 (x 1, x 2 ) = 0 in f 2 (x 1, x 2 ) = 0 iščemo presečišče dveh implicitno podanih krivulj. Uporabimo lahko metode za implicitno risanje krivulj in spet grafično določimo začetni približek. Če se da, lahko tudi iz ene enačbe izrazimo eno spremenljivko in jo vstavimo v drugo enačbo, da dobimo eno samo nelinearno enačbo. Če imamo več enačb, je situacija bolj zapletena. Nekaj možnosti: redukcija na manjši sistem, aproksimacija z linearnim modelom, uporaba variacijskih metod, metoda zveznega nadaljevanja.
3.2 Navadna oz. Jacobijeva iteracija Prva metoda je posplošitev navadne iteracije. Sistem F (x) = 0 zapišemo v ekvivalentni obliki x = G(x), kjer je G : R n R n in tvorimo zaporedje približkov: x (r+1) = G(x (r) ), r = 0, 1,.... Če v našem testnem primeru iz i-te enačbe izrazimo x i, dobimo x (r+1) 1 = 1 3 x (r+1) 2 = 1 9 x (r+1) 3 = 1 20 od koder lahko razberemo G(x). ( cos(x (r) 1 x(r) (x (r) 2 ) + 0.6 ) 1 )2 + sin(x (r) 3 ) + 1.1 0.1 ( ) e x(r) 1 x(r) 2 + 9.1,
Jacobijeva iteracija in testni primer Če vzamemo začetni približek x (0) = (0.4, 0.1, 0.4), potem iz dobimo zaporedje x (r+1) 1 = 1 3 x (r+1) 2 = 1 9 x (r+1) 3 = 1 20 ( cos(x (r) 1 x(r) (x (r) 2 ) + 0.6 ) 1 )2 + sin(x (r) 3 ) + 1.1 0.1 ( ) e x(r) 1 x(r) 2 + 9.1, r 3 x (r) x (r 1) F (x (r) ) 1 0.533066702220 0.003672183829 0.503039471957 1.3 10 1 3.7 10 1 2 0.533332694686 0.005530371351 0.504902219788 1.9 10 3 1.3 10 3 3 0.533331883381 0.005451521829 0.504852740886 7.9 10 5 4.2 10 5 4 0.533331924436 0.005454006133 0.504854837609 2.5 10 6 1.8 10 6 5 0.533331923152 0.005453901274 0.504854771543 1.0 10 7 5.6 10 8 6 0.533331923206 0.005453904579 0.504854774331 3.3 10 9 2.4 10 9 7 0.533331923204 0.005453904439 0.504854774243 1.4 10 10 7.5 10 11 8 0.533331923204 0.005453904444 0.504854774247 4.4 10 12 3.2 10 12 x (r) 1 x (r) 2 x (r)
Konvergenca navadne iteracije za sisteme nelinearnih enačb Izrek 1. Če obstaja območje Ω R n z lastnostima: a) x Ω G(x) Ω, b) x Ω ρ(jg(x)) m < 1, kjer je JG(x) Jacobijeva matrika g 1 (x) g x 1 (x) 1 xn JG(x) =.. gn(x) x 1 gn(x) xn in ρ spektralni radij (največja absolutna vrednost lastne vrednosti), potem ima G(x) = x v Ω natanko eno rešitev α, zaporedje x (r+1) = G(x (r) ), r = 0, 1,..., pa za vsak x (0) Ω konvergira k α. Red konvergence je odvisen od Jacobijeve matrike. V primeru JG(α) = 0 dobimo vsaj kvadratično konvergenco, ta pogoj pa je izpolnjen npr. pri Newtonovi metodi, ki je posplošitev tangentne metode.
Zadostni pogoj in ocena za napako Izrek 2. Če obstaja območje Ω R n z lastnostima: a) x Ω G(x) Ω, b) JG(x) m < 1 kar je ekvivalentno n g j (x) x m < 1, j = 1,..., n, k k=1 potem ima G(x) = x v Ω natanko eno rešitev α, zaporedje x (r+1) = G(x (r) ), r = 0, 1,..., za vsak x (0) Ω konvergira k α in velja ocena x (r) α mr 1 m x(1) x (0).
Testni primer Za testni primer imamo JG(x) = x 2 3 sin(x 1 x 2 ) x 1 3 sin(x 1 x 2 ) 0 x 1 0 9 x 2 1 +sin x 3 +1.1 cos x 3 9 x 2 1 +sin x 3 +1.1 x 2 20 e x 1 x 2 x 1 20 e x 1 x 2 0. Če vzamemo Ω = [ 1, 1] [ 1, 1] [ 1, 1], potem za x Ω velja G(x) Ω. Če ocenimo absolutne vrednosti parcialnih odvodov G na Ω, dobimo G(x) m za m = 0.561. Iz ocene x (8) α m8 1 m x(1) x (0) sledi x (8) α 2.9 10 3, kar je zelo slaba ocena.
Seidlova iteracija Če računamo komponente x (r) po vrsti, lahko izračunane komponente upoštevamo pri izračunu naslednjih: x (r+1) 1 = 1 3 x (r+1) 2 = 1 9 x (r+1) 3 = 1 20 ( cos(x (r) 1 x(r) (x (r+1) 2 ) + 0.6 ) 1 ) 2 + sin(x (r) 3 ) + 1.1 0.1 ( ) e x(r+1) 1 x (r+1) 2 + 9.1. Temu postopku pravimo Seidlova iteracija. iteracija, obstajajo pa tudi protiprimeri. Ponavadi konvergira hitreje kot Jacobijeva Pri testnem primeru z x (0) = (0.4, 0.1, 0.4) dobimo zaporedje r 3 x (r) x (r 1) f(x (r) ) 1 0.533066702220 0.010818602012 0.504712478046 1.3 10 1 9.4 10 2 2 0.533327790230 0.005460936737 0.504854588390 5.4 10 3 1.2 10 4 3 0.533331919588 0.005453913740 0.504854774000 7.0 10 6 1.6 10 7 4 0.533331923200 0.005453904456 0.504854774246 9.3 10 9 2.1 10 10 5 0.533331923204 0.005453904443 0.504854774247 1.2 10 11 2.9 10 13 x (r) 1 x (r) 2 x (r)
3.3 Newtonova metoda Izpeljava Newtonove metode poteka preko Taylorjeve vrste. Denimo, da so vse f i dvakrat zvezno odvedljive v okolici rešitve. Tedaj lahko razvijemo: f i (x + x) = f i (x) + n k=1 f i (x) x k x k +, i = 1,..., n. Če zanemarimo kvadratne in višje člene in želimo, da bo f(x + x) = 0, dobimo linearni sistem za popravke f 1 (x) x 1. fn(x) x 1 f 1 (x) xn. fn(x) xn x 1. = x n f 1 (x)., f n (x) nato pa popravimo približke v x k + x k, k = 1,..., n.
Newtonova metoda Pri Newtonovi metodi tvorimo zaporedje x (r+1) = x (r) JF (x (r) ) 1 F (x (r) ), r = 0, 1,.... V praksi ne računamo inverza Jacobijeve matrike, temveč rešujemo sistem: JF (x (r) ) x (r) = F (x (r) ), x (r+1) = x (r) + x (r), r = 0, 1,.... Tako kot pri tangentni metodi imamo tudi tukaj v bližini enostavne ničle zagotovljeno kvadratično konvergenco, težava pa je v tem, da moramo za konvergenco ponavadi poznati dovolj dober začetni približek.
Newtonova metoda in testni primer Za testni primer velja JF (x) = 3 + x 2 sin(x 1 x 2 ) x 1 sin(x 1 x 2 ) 0 2x 1 162(x 2 + 0.1) cos(x 3 ). x 2 e x 1 x 2 x 1 e x 1 x 2 20 Če vzamemo začetni približek x (0) = (0.4, 0.1, 0.4), potem Newtonova metoda vrne r 3 x (r) x (r 1) f(x (r) ) 1 0.533277157343 0.027209850424 0.503797935671 1.8 10 1 4.1 10 1 2 0.533349540310 0.007317424279 0.504802389730 2.0 10 2 3.2 10 2 3 0.533332076670 0.005470116245 0.504854320569 1.8 10 3 2.8 10 4 4 0.533331923216 0.005453905692 0.504854774212 1.6 10 5 2.1 10 8 5 0.533331923204 0.005453904443 0.504854774247 1.2 10 9 1.8 10 15 6 0.533331923204 0.005453904443 0.504854774247 1.2 10 16 2.2 10 16 x (r) 1 x (r) 2 x (r)
Kantorovičev izrek Izrek 3. Denimo, da obstajajo taka števila a, b, c, da je h = abc < 1 2 in da velja: a) F je v x (0) odvedljiva in JF 1 (x (0) ) a, b) b = x (1) x (0), c) v okolici K (x (0), 2b) = {x : x x (0) 2b} so funkcije f i dvakrat zvezno odvedljive in velja n 2 f i (x) x j x k c, i, j = 1,..., n. n k=1 Potem ima sistem F (x) = 0 v K (x (0), 2b) natanko eno rešitev α h kateri konvergira zaporedje {x (r) } in velja ocena r 1 x (r) α (2h)2. 2 r 1
Zgled uporabe Kantorovičevega izreka Za naš testni primer velja f 1x1 x 1 (x) = x 2 2 cos(x 1x 2 ) f 1x1 x 2 (x) = x 1 x 2 cos(x 1 x 2 ) f 1x1 x 3 (x) = 0 f 1x2 x 2 (x) = x 2 1 cos(x 1x 2 ) f 1x2 x 3 (x) = 0 f 1x3 x 3 (x) = 0 f 2x1 x 1 (x) = 2 f 2x1 x 2 (x) = 0 f 2x1 x 3 (x) = 0 f 2x2 x 2 (x) = 162 f 2x2 x 3 (x) = 0 f 2x3 x 3 (x) = sin x 3 f 3x1 x 1 (x) = x 2 2 e x 1 x 2 f 3x1 x 2 (x) = x 1 x 2 e x 1 x 2 f 3x1 x 3 (x) = 0 f 3x2 x 2 (x) = x 2 1 e x 1 x 2 f 3x2 x 3 (x) = 0 f 3x3 x 3 (x) = 0. Vzamemo lahko c = 486. Za a dobimo 0.33. Če začnemo pri x(0), izreka še ne moremo uporabiti, saj je potem h = 28.9. Če pa začnemo pri x (2), dobimo h = 0.16. Po izreku potem dobimo oceno x (5) α 7.7 10 5.
Kvazi Newtonove metode Posebno pri velikih n imamo pri Newtonovi metodi veliko dela. Če je Jacobijeva matrika polna, potem moramo v vsakem koraku najprej izračunati n 2 parcialnih odvodov, potem pa še rešiti sistem z matriko n n, za kar potrebujemo O(n 3 ) operacij. Zaradi tega in pa tudi ker ne poznamo nujno parcialnih odvodov, bi radi tudi tukaj žrtvovali nekaj konvergence za računanje brez parcialnih odvodov, podobno kot pri sekantni metodi. V ta namen obstaja mnogo kvazi Newtonovih metod, ki ne uporabljajo parcialnih odvodov. Najbolj znana je Broydenova metoda. Kadar imamo velik n in je Jacobijeva matrika razpršena, potem se za reševanje linearnega sistema s to matriko ne splača uporabljati direktnih metod. Uporabljamo iterativne metode, kar pomeni, da v vsakem koraku namesto točnega popravka izračunamo le približek za popravek. Tovrstne metode so t.i. netočne Newtonove metode, primer je kombinacija Newtonove metode in metode GMRES.
Broydenova metoda Naj bo B r približek za JF (x (r) ). En korak kvazi Newtonove metode je a) reši B r x (r) = F (x (r) ), b) x (r+1) = x (r) + x (r), c) določi B r+1 za naslednji korak. Pri Broydenovi metodi za B r+1 vzamemo najbližjo matriko B r, ki zadošča t.i. sekantnemu pogoju B r+1 (x (r+1) x (r) ) = F (x (r+1) ) F (x (r) ). Rešitev je B r+1 = B r + F (x(r) )( x (r) ) T ( x (r) ) T x (r). Na začetku za B 0 vzamemo čim boljšo aproksimacijo za JF (x (0) ), v najslabšem primeru pa kar I. Število operacij lahko zmanjšamo, če namesto direktnega posodabljanja B r posodobimo faktorizacijo, ki jo uporabljamo za reševanje sistema v točki a).
3.4 Variacijske metode Iščemo ekstrem funkcije F : R n R n, kjer je F dvakrat zvezno odvedljiva na vse spremenljivke. Potreben pogoj za ekstrem je gradf (x) = 0 oziroma F (x) x k = 0 za k = 1,..., n. Če je x stacionarna točka, potem o vrsti in obstoju ekstrema odloča Hessejeva matrika drugih odvodov 2 F (x) x HF (x) = 2 2 F (x) x 1 1 xn... 2 F (x) x 1 xn 2 F (x) Iskanje ekstrema funkcij več spremenljivk lahko tako prevedemo na reševanje sistema nelinearnih enačb. Gre pa tudi obratno. x 2 n
Prevedba reševanja nelinearnega sistema na iskanje minimuma Iščemo rešitev sistema F (x) = 0, kjer je F : R n R n. Funkcija G(x) = n f 2 i (x) i=1 ima globalni minimum ravno v točkah, kjer je F (x) = 0, zato lahko ničlo F poiščemo tako, da poiščemo globalni minimum G.
Metode za iskanje minimuma gladke funkcije n spremenljivk Splošni nastavek je, da se iterativno monotono približujemo minimumu. Naj bo x (r) tekoči približek. Izberemo vektor (smer) v r R n in v tej smeri poiščemo naslednji približek tako da bo G(x (r+1) ) < G(x (r) ). x (r+1) = x (r) + λ r v r, Pogledati moramo: kako izberemo smer v r, kako določimo λ.
Izbira smeri Za izbiro smeri imamo med drugim naslednje možnosti: a) splošna metoda spusta: izberemo poljubno smer v r, le da ni pravokotna na gradg(x (r) ), saj v tej smeri ne moremo vedno dobiti manjše vrednosti. b) metoda najhitrejšega spusta oz. gradientna metoda: za smer izberemo negativni gradient v r = gradg(x (r) ). Pri tem pristopu moramo poznati parcialne odvode funkcije G. c) metoda koordinatnega spusta: za smeri po vrsti ciklično izbiramo koordinatne smeri e 1, e 2,..., e n.
Določanje premika Pri določanju λ r imamo opravka s funkcijo ene spremenljivke g r (λ): = G(x (r) + λv r ). Iščemo tak λ r, da bo g r (λ r ) < g r (0). Nekaj metod je: a) metoda največjega spusta: poiščemo λ r, kjer funkcija g r doseže svoj minimum. Za to rešimo nelinearno enačbo g r (λ r) = 0 ali pa uporabimo kakšno metodo za računanje minimuma funkcije ene spremenljivke, npr. metodo zlatega reza. b) metoda tangentnega spusta: za λ r vzamemo presečišče tangente na y = g r (λ) v točki λ = 0 z osjo x, oziroma λ r = g r (0)/g r (0). Če je g(λ r) g(0), potem λ r toliko časa razpolavljamo, dokler ne dobimo manjše vrednosti.
c) metoda paraboličnega spusta: najprej s tangentno metodo določimo α, potem pa skozi točke (0, g r (0)), (α/2, g(α/2)), (α, g(α)) potegnemo parabolo in za λ r vzamemo točko, kjer parabola doseže minimum. d) metoda diskretnega spusta: Izberemo h r. Če je g(h r ) < g(0), potem se premikamo naprej s korakom h r in za λ r vzamemo kh r, kjer je prvič g((k + 1)h r ) g(kh r ). Sicer pa h r razpolavljamo toliko časa, da je g(h r ) < g(0) in za λ r vzamemo h r.
Konvergenca Če iščemo minimum nenegativne funkcije, kar delamo, ko uporabimo variacijsko metodo za reševanje nelienarnega sistema, imamo zagotovljeno konvergenco ne glede na začetni približek, saj dobimo zaporedje približkov {x (r) }, za katere velja G(x (r+1) ) < G(x (r) ). Kar se tiče reda konvergence, je ta ponavadi linearen. Tako vedno dobimo nek lokalni minimum, nič pa nam ne zagotavlja, da bomo našli tudi globalni minimum. Ponavadi uporabimo kombinacijo variacijske metode in Newtonove metode ali kvazi Newtonove metode. Variacijska metoda nas ne glede na kvaliteto začetnega približka pripelje v bližino rešitve, potem pa uporabimo hitrejšo metodo, ki potrebuje dobre začetne približke.
Uporabne formule Če rešujemo nelinearni sistem F (x) = 0, kjer je F : R n R n, potem za G(x) = f 1 (x) 2 + + f n (x) 2 velja Za gradient velja gradg(x) = 2 G(x) = F (x) T F (x). f 1 (x)f 1x1 (x) + f 2 (x)f 2x1 (x) + + f n (x)f nx1 (x) f 1 (x)f 1x2 (x) + f 2 (x)f 2x2 (x) + + f n (x)f nx2 (x). f 1 (x)f 1x n(x) + f 2 (x)f 2x n(x) + + f n (x)f nx n(x) oziroma enostavneje gradg(x) = JF (x) T F (x). Če definiramo g(λ) = G(x + λz), potem dobimo g (0) = 2F (x) T JF (x)z.
Testni primer in gradientna metoda Reševanje testnega primera lahko prevedemo na iskanje minimuma funkcije G(x) = f 1 (x) 2 + f 2 (x) 2 + f 3 (x) 2, kjer so f 1 (x) = 3x 1 cos(x 1 x 2 ) 0.6 f 2 (x) = x 2 1 81(x 2 + 0.1) 2 + sin(x 3 ) + 1.1 f 3 (x) = e x 1 x 2 + 20x 3 + 9.1. Če vzamemo začetni približek x (0) = (0, 0, 0) potem po 20 korakih dobimo x (20) = (0.65079172132, 0.21305107190, 0.511385522215). Če to uporabimo za začetni približek za Newtonovo metodo, potem po 5 korakih dobimo rešitev α = (0.531357185580, 0.205028183876, 0.510754950476). Če bi namesto Newtonove metode še naprej uporabljali gradientno metodo, bi za enako natančnost potrebovali še 104 korake gradientne metode.
3.5 Reševanje nelinearnih enačb v Matlabu V standardni verziji so na voljo naslednje funkcije: fminsearch: iskanje minimuma realne funkcije iz R n v R. Uporablja simpleksni algoritem. fminbnd: iskanje minimuma funkcije ene spremenljivke. Uporablja kombinacijo metode zlatega reza in parabolične interpolacije. Če ga imamo, potem je v dodatnem paketu za optimizacijo na voljo še: fsolve: reševanje sistema F (x) = 0 preko iskanja minimuma F (x) 2. Primeri uporabe: f=inline( x(1)^2+x(2)^2 ); fminsearch(f,[0.3;0.2]) f=inline( (x(1)^2+x(2)^2-10*x(1)-1)^2+(x(1)^2-x(2)^2+10*x(2)-25)^2 ); fminsearch(f,[2;4])
3.6 Metoda zveznega nadaljevanja To je metoda za reševanje nelinearne enačbe f(x) = 0. Če je težko poiskati začetni približek (še posebno pri nelinearnih sistemih), si lahko pomagamo z uvedbo dodatnega parametra. Opazujemo npr. F (t, x) = t f(x) + (1 t) g(x), kjer je 0 t 1 in poznamo rešitve g(x) = 0. S sledenjem krivulji od t = 0 do t = 1 dobimo rešitve f(x) = 0.
Metoda zveznega nadaljevanja in diferencialne enačbe Povezava z diferencialnimi enačbami je naslednja. Z odvajanjem po t dobimo kar nam da začetni problem kjer je g(x 0 ) = 0. F t (t, x) + F x (t, x) ẋ = 0, ẋ = F x (t, x) 1 F t (t, x), x(0) = x 0, Z metodami za reševanje začetnih problemov lahko sledimo rešitvi, poleg tega pa pri vsaki vrednosti t lahko upoštevamo še, da mora za x(t) veljati F (t, x(t)) = 0.
Prediktor-korektor sledenje homotopske krivulje a) prediktor: Iz točke (t, x(t)) z eno izmed metod za reševanje začetnega problema (npr. z Eulerjevo metodo) izračunamo prediktor x (P ) (t + h), ki je približek za rešitev v točki t + h. b) korektor: Z eno izmed metod za reševanje nelinearnega sistema (npr. z Newtonovo metodo) rešimo sistem F (t + h, x(t + h)) = 0, za začetni približek pa vzamemo (t + h, x (P ) (t + h)).