Rozwiązywanie równań nieliniowych i ich układów. Wyznaczanie zer wielomianów. Plan wykładu: 1. Wyznaczanie pojedynczych pierwiastków rzeczywistych równań nieliniowych metodami a) połowienia (bisekcji) b) Regula Falsi c) siecznych d) Newtona-Raphsona 2. Wyznaczanie zer wielokrotnych a) modyfikacja metod przy znajomości krotności pierwiastka b) modyfikacja metod siecznych i Newtona dla przypadku ogólnego c) Proces 2 Aitkena 3. Rozwiązywanie układów równań nieliniowych 4. Wyznaczanie zer rzeczywistych i zespolonych wielomianów a) dzielenie wielomianów b) metoda iterowanego dzielenia 1
Równanie nieliniowe z jedną niewiadomą Poszukujemy zera rzeczywistego ciągłej funkcji f(x), czyli szukamy rozwiązania równania: f(x) = 0, x 2 fx 1 ; x 2 ; : : : ; x k g; x 2 R 2
Uwagi: 1) Nie istnieją wzory pozwalające obliczyć dokładnie pierwiastki równania trzeba używać schematów iteracyjnych. Często w obliczeniach inżynierskich nie jest znana postać równania nieliniowego. 2) Rozwiązanie problemu uzyskane metodą iteracyjną będzie przybliżone (z zadaną dokładnością) 3) Jak w każdej metodzie iteracyjnej, o tym jak szybko znajdziemy zadowalające przybliżenie pierwiastka zależeć będzie od samej metody, od przybliżenia założonego na starcie oraz od postaci funkcyjnej równania. Metoda połowienia (bisekcji) Rozwiązania szukamy w przedziale, w którym znajduje się miejsce zerowe funkcji, w tzw. przedziale izolacji pierwiastka (wewnątrz tego przedziału pierwsza pochodna funkcji nie zmienia znaku). Przedział wyznacza się na podstawie wykresu funkcji lub w przypadku wielomianów algebraicznych analitycznie. Założenia: 1) w przedziale [a,b] znajduje się dokładnie jeden pierwiastek 2) Na końcach przedziału wartosci funkcji mają różne znaki tj. Algorytm f(a) f(b) < 0 1. Dzielimy przdział izolacji na pół x 1 = b + a 2 2. Sprawdzamy czy spełniony jest warunek f(x 1 ) = 0 jeśli tak to mamy rozwiązanie, jeśli nie to przechodzimy do kolejnego puntu 3. z dwóch przedziałów [a,x 1 ] oraz [x 1,b] wybieramy ten, w którym wartości funkcji na krańcach przedziałów mają różne znaki f(x i ) f(x i+1 ) < 0 4. Powtarzamy kroki 1-3, co powduje że długości kolejnych przedziałów maleją jx i x i+1 j = 1 (b a) 2i 3
Lewe krańce przedziałów tworzą ciąg niemalejący ograniczony z góry. Natomiast prawe tworzą ciąg nie rosnący ograniczony z dołu. Istnieje ich wspólna granica w punkcie. Punkt ten jest poszukiwanym rozwiązaniem równania nieliniowego. Przykład. Znaleźć w przedziale [1,2] metodą połowienia pierwiastek równania x 3 + x 2 3x 3 = 0 f(x) = x 3 + x 2 3x 3 f(1) = 4 f(2) = 3 f(a) f(b) = f(1)f(2) = 12 < 0 Wewnątrz przedziału wartość pierwszej pochodnej funkcji jest dodatnia (nie zmienia znaku) więc jest to przedział izolacji pierwiastka. Wyniki kolejnych przybliżeń rozwiązania x f(x) 1.0-4 2.0 3 1.5-1.874 1.75 0.17187 1.625-0.94335 1.6875-0.40942 1.71875-0.12487 1.73437 0.02198...... 1.73205 0.0000000 Wadą metody wolna zbieżność w otoczeniu punktu stanowiącego rozwiązanie. Zaletą jest natomiast niezawodność metody. 4
Wzór iteracyjny. Jeżeli g(y) stanowi funkcję odwrotną do f(x) to dla zbioru punktów funkcję g(y) można przybliżyć (aproksymować) wielomianem Lagrange'a Oznaczmy fy 1 ; y 2 ; : : : ; y n g g(y) ¼ Jeśli x=a jest rozwiązaniem (pierwiastkiem) to wówczas y=0 x i+1 = nx l j (y)g(y j ) j=1 x i+1 j = g(y j ) nx l j (0)x i+1 j j=1 (x i+1-j to wcześniej wyznaczone przybliżenia) gdzie wielomian l j ma postać l j = (y y 1) : : : (y y j 1 )(y y j+1 ) : : : (y y n ) (y j y 1 ) : : : (y j y j 1 )(y j y j+1 ) : : : (y j y n ) Wzór na x i+1 określa metodę iteracyjną rozwiązywania równania nieliniowego. Wzór ten można zapisać w bardziej ogólnej postaci x i+1 = F (x i ; x i 1 ; : : : ; x i n+1 ) który jest n-punktowym wzorem iteracyjnym. Szczególnym przypadkiem są metody jednopunktowe wykorzystujące do znalezienia przybliżenia w i+1 iteracji przy znajomości przybliżenia wyznaczonego w i- tym kroku x i+1 = F (x i ) Zbieżność metody iteracyjnej Ciąg przybliżeń jest zbieżny gdy lim x i = a i!1 Błąd rozwiązania w i-tej iteracji " i+1 = a x i+1 W punkcie x=a metoda jest rzędu p, jeśli istnieje liczba rzeczywista p 1 5
dla której zachodzi lim i!1 jx i+1 aj jx i aj p = lim i!1 j" i+1 j j" i j p = C 6= 0 Liczbę C nazywamy stałą asymptotyczną błędu j" i+1 j = Cj" i j p j"j < 1 ) j" i+1 j << j" i j Metoda Regula Falsi W metodzie tej wykorzystuje się założenie istnienia lokalnej liniowości funkcji (fałszywe, stąd nazwa). Zakładamy ponadto: 1) w przedziale [a,b] funkcja ma tylko jeden pierwiastek pojedynczy 2) f(a)f(b)<0 3) funkcja jest klasy C 2 4) pierwsza i druga pochodna nie zmieniają znaku w przedziale [a,b] Rys. Idea metody Regula Falsi dla funkcji wypukłej 6
Sposób postępowania: 1. przez punkty A i B prowadzimy prostą o równaniu: y f(a) = f(b) f(a) (x a) b a 2. punkt x 1 w którym prosta przecina oś 0x przyjmuje się za pierwsze przybliżenie szukanego pierwiastka równania: x 1 = a f(a) (b a) f(b) f(a) 3. sprawdzamy warunek, czy: f(x 1 )=0, jeśli tak to przerywamy oblicznia 4. jeśli f(x 1 ) 6= 0 to sprawdzamy na końcach którego przedziału ([A,x 1 ], [x 1,B]) wartości funkcji mają różne znaki przez te punkty prowadzimy kolejną prostą powtarzając kroki 1-4 Jeśli w przedziale [A,B] a) f (1) (x)>0 oraz f (2) (x)>0 to B jest punktem stacjonarnym (prawy brzeg ustalony) b) f (1) (x)>0 oraz f (2) (x)<0 to A jest punktem stacjonarnym Metoda generuje ciąg przybliżeń. Elementy ciągu można wyznaczyć iteracyjnie x 0 = a x k+1 = x k k = 1; 2; 3; : : : f(x k ) f(b) f(x k ) (b x k) Błąd przybliżenia szacujemy korzystając z tw. Lagrange'a o przyrostach: gdzie: Ponieważ więc dostajemy oszacowanie gdzie f(x k ) f( ) = f 0 (c)(x k ) c 2 [x k ; ] f( ) = 0 jx k j jf(x k)j m m = inf jf 0 (x)j x2[a;b] m -oznacza kres dolny pierwszej pochodnej Błąd bezwzględny można oszacować znając wartości dwóch kolejnych przybliżeń x k i x k+1. Przekształcając wzór rekurencyjny otrzymujemy: f(x k ) = f(x k) f(b) (x k+1 x k ) x k b I dodajemy z lewej strony wyraz f( ) = 0 f( ) f(x k ) = f(x k) f(b) (x k+1 x k ) x k b 7
Po zastosowaniu tw. Lagrange'a otrzymujemy: ( x k )f 0 (» k ) = (x k+1 x k )f 0 (¹x k ) Następnie obustronnie dodajemy wyraz i przekształcamy do postaci Dla gdzie:» k 2 (x k ; ) ¹x k 2 (x k ; b) x k+1 f 0 (» k ) j x k+1 j = jf 0 (¹x k ) f 0 (» k )j jx jf 0 k+1 x k j (» k )j jf 0 (x k ) f 0 (» k )j M m Nie znamy wartości m i M. W niewielkim otoczeniu pierwiastka można pochodną można zastąpić ilorazem różnicowym: j x k+1 j»» f(x k+1 ) f 0 (x k+1 ) x k+1 x k f(x k+1 ) f(x k ) jf(x k+1)j Metoda Regula Falsi jest zbieżna do dowolnej funkcji ciągłej w przedziale [a,b] jeśli wartość pierwszej pochodnej jest ograniczona i różna od zera w otoczeniu pierwiastka. Obliczenia przerywa się jeśli dwa kolejne przybliżenia różnią się o mniej niż założone. Wadą jest wolna zbieżność ciągu przybliżeń rząd metody p=1. kres dolny kres górny m = M = inf jf 0 (x)j x2[a;b] sup jf 0 (x)j x2[a;b] oszacowanie błędu bezwględnego ma postać j x k+1 j M m m jx k+1 x k j (bazujemy tu na dwóch ostatnich przybliżeniach) 8
Metoda siecznych Jest modyfikacją metody Regula Falsi. Prostą przeprowadza się przez dwa ostatnie przybliżenia x k i x k-1 (metoda dwupunktowa). Kolejne przybliżenia w metodzie siecznych wyznacza się według relacji rekurencyjnej: x k+1 = x k f(x k)(x k x k 1 ) f(x k ) f(x k 1 ) Zbieżność metody jest większa niż w metodzie RF. Rząd metody p = 1 2 (1 + p 5) ¼ 1:618 Należy dodatkowo przyjąć, że f(x k ) mają tworzyć ciąg wartości malejących. Jeśli w kolejnej iteracji f(x k ) zaczyna rosnąć, należy przerwać obliczenia i ponownie wyznaczyć punkty startowe zawężając przedział izolacji. Przykład. szukamy dodatniego pierwiastka równania Regula Falsi Metoda siecznych x 3 1.75960 1.75960 x 4 1.84420 1.93200 x 5 1.87701 1.89242 x 6 1.88895 1.89543 x 7 1.89320 1.89549 x 8 1.89469 x 9 1.89521 x 10 1.89540 x 11 1.89546 x 12 1.89548 x 13 1.89549 f(x) = sin(x) 1 2 x x 1 = ¼=2 x 2 = ¼ 9
Metoda Newtona-Raphsona (metoda stycznych) Algorytm: 1) z końca przedziału [a,b] w którym funkcja ma ten sam znak co druga pochodna należy poprowadzić styczną do wykresu funkcji y=f(x) ( w ten sposób wykonujemy jedną iterację mniej, bo zbliżamy się od pierwiastka z jednej strony patrz rysunek) 2) styczna przecina oś 0X w punkcie x 1 który stanowi pierwsze przybliżenie rozwiązania 3) sprawdzamy czy f(x 1 )=0, jeśli nie to z tego punktu prowadzimy kolejną styczną 4) druga styczna przecina oś 0X w punkcie x 2 ktróry stanowi drugie przybliżenie 5) kroki 3-4 powtarzamy iteracyjne aż spełniony będzie warunek jx k+1 x k j " Równanie stycznej poprowadzonej z punktu B: y f(b) = f 0 (b)(x b) i dla y=0, otrzymujemy pierwsze przybliżenie: x 1 = b f(b) f 0 (b) 10
Oszacowanie rzędu metody Newtona Korzystamy z rozwinięcia Taylora: f( ) = f(b) + f 0 (b)( b) + 1 2 f 00 (c)( b) 2 gdzie c 2 [ ;b] Wiemy że f( )=0, więc po przekształceniu wzoru Taylora otrzymujemy = b f(b) f 0 (b) 1 2 Korzystając ze wzoru na pierwsze przybliżenie, możemy oszacować odległość nowego przybliżenia od dokładnego rozwiązania: x 1 = 1 2 f 00 (c) ( f 0 b)2 (b) f 00 (c) f 0 (b) ( b)2 < 0 czyli punkt x 1 leży na prawo od pierwiastka Natomiast z tw. Lagrange'a wynika że x 1 b = f(b) f 0 (b) < 0 x 1 2 [ ; b] czyli punkt x 1 leży po lewej stronie punktu B. Powyższe warunki pokazują, że kolejne iteracje przybliżają nas do rozwiązania dokładnego Równanie stycznej w k-tym przybliżeniu y f(x k ) = f 0 (x k )(x x k ) Równanie rekurencyjne na położenie k-tego przybliżenia pierwiastka równania nieliniowego w metodzie Newtona jest następujące x k+1 = x k f(x k) f 0 (x k ) Metoda Newtona jest więc metodą jednopunktową. Oszacowanie błędu przybliżenia w metodzie Newtona " i+1 = f 00 (») 2f 0 (x i ) "2 i " i+1 " 2 i (k = 1; 2; : : :) = f 00 (» ¼ x i ) 2f 0 (x i ) Rząd zbieżności metody wynosi p=2. = C 11
Przykład. Zastosować metodę Newtona do znalezienia pierwiastka kwadratowego dodatniej liczby c x 2 c = 0 Szukamy miejsca zerowego funkcji f(x) = x 2 c f 0 (x) = 2x Wykorzystujemy relację rekurencyjną x k+1 = x k x2 k c 2x k co poprzekształceniu daje x k+1 = 1 2 µ x k + c x k Rozwiązania szukamy w takim przedziale [a,b], w którym spełnione są warunki 0 < a < c 1=2 b > 1 (a + c=a) 2 Poszukiwanie pierwiastków wielokrotnych równania nieliniowego def. Liczbę nazywamy r-krotnym (r 2 ) pierwiastkiem równania f(x)=0 wtedy i tylko wtedy, gdy jest (r-1) -krotnym pierwiastkiem równania: f 0 (x) = 0 Metody: połowienia, RF, siecznych nadają się do poszukiwania pierwiastków tylko o nieparzystej krotności. Rząd metody siecznych obniża się (wolniejsza zbieżność). Metoda Newtona pozwala znaleźć pierwiastki o parzystej i nieparzystej krotności. Aby utrzymać rząd metody (przyśpieszyć zbieżność) stosuje się modyfikacje wzorów rekurencyjnych. a) Znamy krotność r pierwiastka równania. Wówczas możemy wykorzystać tę informację w metodzie Newtona x k+1 = x k r f(x k) f 0 (x k ) (w praktyce bardzo rzadko znamy wartość r przez co zastosowanie powyższego wzoru jest mocno ograniczone) 12
Obliczmy różnicę pomiędzy rozwiązaniem dokładnym a k+1 przybliżeniem Gdzie a x k+1 = a x k + r f(x k) f 0 (x k ) (a x k+1 )f 0 (x k ) = G(x k ) Różniczkujemy G(x) j-krotnie Wykorzystujemy fakt że a jest pierwiastkiem r- krotnym Z rozwinięcia Taylora w punkcie x=a dostajemy oraz G(x) = (a x)f 0 (x) + rf(x) G (j) (x) = (a x)f (j+1) (x) jf (j) (x) + rf (j) (x) G (j) (a) = 0 (j = 0; 1; : : : ; r) G (r+1) (a) 6= 0 G(x) = (x a)r+1 (r + 1)! G (r+1) (» 1 ) Kombinacja dwóch ostatnich zależności prowadzi do związku pomiędzy błędami w k i w k+1 iteracji Ponieważ " k+1 = (a x k+1 ) = G(x k) f 0 (x k ) " k+1 = 1 G (r+1) (» 1 ) r(r + 1) f (r) (» 2 ) "2 k f (r) (» 2 ) 6= 0 G (r+1) (a) 6= 0 j" k+1 j j" k j 2 C Więc metoda Newtona dla pierwiastka krotności r ma rząd zbieżności p=2. f 0 (x) = (x a)r 1 (r 1)! f (r) (» 2 ) 13
b) Jeśli wiemy że pierwiastek jest wielokrotny ale nie znamy jego krotności r wówczas możemy badać zera funkcji u(x) = f(x) f 0 (x) Funkcja u(x) ma zero krotności 1 w punkcie x=a. We wzorach iteracyjnych dokonujmey podstawienia u(x) za f(x) a) w metodzie siecznych x k x k 1 x k+1 = x k u(x k ) u(x k ) u(x k 1 ) b) w metodzie Newtona gdzie: x k+1 = x k u(x k) u 0 (x k ) u 0 (x k ) = 1 f 00 (x k ) f 0 (x k ) u(x k) Przykład. Wyznaczyć dodatni pierwiastek równania µ sin(x) 1 2 x 2 = 0 m. Newtona m. Newtona - r m. Newtona - u(x) x 2 1.78540 2.00000 1.80175 x 3 1.84456 1.90100 1.88963 x 4 1.87083 1.89551 1.89547 x 5 1.88335 1.89549 1.89549 x 6 1.88946 x 7 1.89249 x 8 1.89399 x 9 1.89475 x 10 1.89512 x 11 1.89531 x 12 1.89540 x 13 1.89545 x 14 1.89547 x 15 1.89548 x 16 1.89549 x 1 = 1 2 14
Proces 2 Aitkena Jeśli metoda jest zbieżna liniowo to można ją w prosty sposób przyśpieszyć a x i+1 = C i (a x i ) (jc i j < 1) gdzie C i dąży do stałej asymptotycznej błędu. Po wielu iteracjach powinniśmy otrzymać przybliżenie a x i+1 ¼ ¹C(a x i ); j ¹Cj = C Zwiększamy indeks i o 1 i eliminujemy stałą a x i+2 a x i+1 ¼ a x i+1 a x i Następnie obliczamy a a ¼ x ix i+2 x 2 i+1 x i+2 2x i+1 + x i Procedurę tę można stosować jedynie dla metod zbieżnych liniowo, gdy kolejne 3 przybliżenia są bliskie poszukiwanemu rozwiązaniu. 15
Układy równań nieliniowych Układ równań nieliniowych f j (x (1) ; x (2) ; : : : ; x (n) ) = 0; (j = 1; 2; : : : ; n) zapisujemy w postaci wektorowej f(x) = 0 Dla takiej postaci układu wyprowadza się wzory iteracyjne. Ogólny wzór iteracyjny (wielokrokowy) Zakladamy że funkcja wektorowa f ma w otoczeniu rozwiązania funkcję odwrotną Jeśli punkt f = (f 1 ; f 2 ; : : : ; f n ) x = (x (1) ; x (2) ; ; : : : ; x (n) ; ) x i+1 = F (x i ; x i 1 ; : : : ; x i n+1 ) F = (F 1 ; F 2 ; : : : ; F n ) = ( 1 ; 2 ; : : : ; n ) g = (g 1 ; g 2 ; : : : ; g n ) y = (y (1) ; y (2) ; : : : ; y (n) ; ) jest odwrotny do punktu x (wektora przybliżonych rozwiązań) To można funkcję g(y) rozwinąć w szereg Taylora w otoczeniu punktu y i m+1 X x = g(y) = g(y i ) + d j h(x; s) = nx nx : : : i 1 =1 i 2 =1 Gdzie: jest pochodną cząstkową funkcji h względem zmiennych w punkcie x wektor s: j=1 x (i 1) ; x (i 2) ; : : : ; x (i n) 1 j! dj g(y i ; y y i ) 1 + (m + 2)! dm+2 g(»; y y i ) nx i j =1 D i1 ;i 2 ;:::;i j h(x)» 2 [y; y i ] D i1 ;i 2 ;:::;i j h(x)s i 1 s i 2 : : : s i j s = (s i 1 ; s i 2 ; : : : ; s i j ) 16
Szukane rozwiązanie ma postać = g(0) ) y = 0 Po odrzuceniu reszty w rozwinięciu Taylora i uwzględnieniu powyższego warunku otrzymujemy n-wymiarowy odpowiednik metody Newtona. Dla m=0 (metoda jednokrokowa) x i+1 = x i + dg(y i ; y i ) = = nx @g(y i ) x i @y j y (j) i j=1 Pochodne funkcji g można wyrazic poprzez pochodne funkcji f. Dla n=2 otrzymujemy x = [» 1 ;» 2 ; : : :] 2 x i+1 = x i 1 J 4 2 J = det 4 @f 2 @» 2 @f 1 @» 2 @f 2 @» 1 @f 1 @» 1 @f 1 @f 1 @» 1 @» 2 @f 2 @f 2 @» 1 @» 2 3 5 3 2 5 4 f 1 f 2 3 5 x=x i Jeśli funkcje f1 i f2 rozwijamy w szereg w otoczeniu pierwiastka to możemy założyć: oraz df 1 = @f 1 d» 1 d» 1 + @f 1 d» 2 d» 2 df 2 = @f 2 d» 1 + @f 2 d» 2 d» 1 d» 2 µ Ã! @f1 @f 1 µ df1 @» = 1 @» 2 d»1 df 2 d» 2 µ d»1 d» 2 = @f 2 @» 1 @f 2 @» 2 @f à @f1 @» 1 @f 2 1 @» 2 @f 2 @» 1 @» 2! 1 µ df1» 1 ¼ d» 1» 2 ¼ d» 2 df 2 df 1 ¼ f 1 (» 1 ;» 2 ) f 1 ( ) = f 1 (» 1 ;» 2 ) df 2 ¼ f 2 (» 1 ;» 2 ) f 2 ( ) = f 2 (» 1 ;» 2 ) µ Ã! @f1 @f 1 1 µ»1 @» = 1 @» 2 f1» 2 f 2 @f 2 @» 1 @f 2 @» 2 Rząd zbieżności metody wynosi 2. Zazwyczaj zbieżność uzyskujemy tylko jeśli startujemy już z dobrym przybliżeniem rozwązania. x = [» 1 ;» 2 ; : : :] x i+1 = x i x 17
Jeśli funkcje f1 i f2 rozwijamy w szereg w otoczeniu pierwiastka to możemy założyć: oraz» 1 ¼ d» 1» 2 ¼ d» 2 df 1 ¼ f 1 (» 1 ;» 2 ) f 1 ( ) = f 1 (» 1 ;» 2 ) df 2 ¼ f 2 (» 1 ;» 2 ) f 2 ( ) = f 2 (» 1 ;» 2 ) Problem poszukiwania rozwiązań układu równań nieliniowych można sformułować jako problem poszukiwania minimum poniższej fukcji (x) = nx fi 2 (x) i=1 Funkcja osiąga minimum globalne dla dokładnego rozwiązania x. Do jego znalezienia można użyć metody największego spadku (minimalizacja wartości funkcji). Wyznaczanie zer wielomianów metodą iterowanego dzielenia µ»1» 2 = @f à @f1 @» 1 @f 2 1 @» 2 @f 2 @» 1 @» 2! 1 µ f1 f 2 Metody dzielenia wielomianów Aby wyznaczyć zera zespolone konieczne jest przeprowadzenie dzielenia wielomianów x = [» 1 ;» 2 ; : : :] x i+1 = x i x a) przez czynniki liniowe (dwumian) b) przez czynniki kwadratowe (trójmian) 18
Wielomian f(z) = a n z n + a n 1 z n 1 + : : : + a 0 = 0 dzielimy przez dwumian: Wynikiem dzielenia jest (z z j ) f(z) = (z z j ) b n 1 z n 1 + b n 2 z n 2 + : : : + b 0 ) + R j Z porównania współczynników przy jednakowych potęgach otrzymujemy zależności a n = b n 1 a n 1 = b n 2 z j b n 1. a 1 = b 0 z j b 1 a 0 = R j z j b 0 Dzieląc jeszcze raz wielomian otrzymamy f(z) = (z z j ) 2 c n 2 z n 2 + c n 3 z n 3 + : : : + c 0 ) + R 0 j (z z j) + R j Wartości współczynników c i wyznaczamy analogicznie jak w poprzednim przypadku. Obliczanie zer za pomocą iterowanego dzielenia Zera wielomianu możemy wyznaczyć iteracyjnie stosując zmodyfikowane wzory jednokrokowe np.. metodę siecznych czy Newtona. Kolejne przybliżenia w metodzie siecznych wyznaczamy ze wzoru z j+1 = z j R j(z j z j 1 ) R j R j 1 Zatem współczynnki nowego wielomianu można obliczać rekurencyjnie b n = 0 b k = a k+1 + z j b k+1 k = n 1; n 2; : : : ; 0 R j = a 0 + z j b 0 oraz w metodzie Newtona z j+1 = z j R j R 0 j 19