METODY ROZWIĄZYWANIA RÓWNAŃ NIELINIOWYCH Jednym z zastosowań metod numerycznych jest wyznaczenie pierwiastka lub pierwiastków równania nieliniowego. W tym celu stosuje się szereg metod obliczeniowych np: metoda stycznych (Newtona), metoda iteracji prostej, metoda siecznych, metoda połowienia (bisekcji), metoda Pegaza itd. Procedury te pozwalają uzyskać z zadaną dokładnością miejsca zerowe równania. Kilka przykładów rozwiązanych zadań pozwoli bliżej zapoznać się z tymi metodami, często przydatnymi w pracy chemika inżyniera. Zad. Obliczyć pierwiastek poniższego równania metodą Newtona z dokładnością e = 5. 7 + 3 4 3 = Przed przystąpieniem do obliczania należy poznać przebieg funkcji by w przybliżeniu określić granice przedziału, w którym znajduje się szukany pierwiastek. Funkcję można stablicować lub wykreślić jej przebieg jak to jest pokazane na poniższym wykresie. 7 + 3 4-3 = 8 6 4 y - -4,5,5,75,5,5 Z wykresu widać, iż pierwiastek tej funkcji będzie mieścił się w granicach <,75;>. Lokalizacja miejsca zerowego równania 7 + 3 4 3 =. Jeżeli funkcja ta spełnia warunek f(a)*f(b) <, gdzie a i b to granice przedziału lokalizacji pierwiastka, to funkcja ta posiada pierwiastek w tych granicach. y,75 -,973
Jak widać iloczyn wartości funkcji na granicach przedziału <,75;> jest ujemny = -,973. Czyli przedział ten zawiera w sobie miejsce zerowe tej funkcji lub ogólnie nieparzysta liczbę pierwiastków) Następnie należy wybrać metodę obliczeniową. W zadaniu tym zostanie użyta metoda stycznych (Newtona). Procedura ta należy do jednych z najszybciej zbieżnych metod służących do wyznaczania pierwiastków równań nieliniowych. Zbieżność jej została osiągnięta dzięki dodatkowemu nakładowi pracy jakim jest wyznaczenie pochodnej badanego równania. W niektórych przypadkach wyznaczenie pochodnej jest sprawą bardziej złożoną i zastosowanie tej metody nie jest opłacalne. Na poniższym rysunku pokazany jest sposób w jaki dążymy do wyznaczenia pierwiastka równania. ' f ( ) tgα = f ( ) =, po przekształceniu tej równości i zapisaniu w postaci ogólnej f ( k ) uzyskujemy wzór: k+ = k gdzie k =,, 3.. n. f '( k ) Po teoretycznym zapoznaniu się z wybraną metodą, wracamy do obliczeń. Kolejnym krokiem będzie wyznaczenie przybliżenia zerowego dla przedziału <,75;>, w tym celu należy sprawdzić wartość iloczynu pierwszej i drugiej pochodnej na granicach tego przedziału. Funkcja 7 + 3 4 3 = 6 3 Pierwsza pochodna 7 + = Druga pochodna 4 5 + 4 = Jak widać funkcja i pochodne są ciągłe w badanym przedziale, co jest warunkiem zbieżności metody Wartości dla =,75 i = przedstawia tabela: f() f'() f''(),75 -,973 6,3835 7,9668 9 66
Widać, że warunek f()*f ()> jest spełniony dla =. wybieramy go jako punkt startowy, z którego rozpoczniemy obliczenia. f ( k ) k+ = k (W) f '( k ) Podstawiając do powyższego wzoru = oraz wartości funkcji i pierwszej pochodnej otrzymujemy wynik:,973 = =,9473684 6,3835 Kolejnym krokiem jest obliczenie wartości funkcji i pierwszej pochodnej dla. Podstawiając do wzoru funkcji 7 3 4 3 = 6 3 + i pierwszej pochodnej 7 + = uzyskujemy wartości: f ( ) =,46484 f '( ) = 5,6394678 Następnie powtarzamy czynność obliczeniową, podstawiając do wzoru (W) nowe wartości. Uzyskany w ten sposób równa się,947. Obliczona dla niego wartość funkcji i pierwszej pochodnej wynoszą odpowiednio: f ( ) =,444 f '( ) = 4,8435 Cały tok obliczeń powtarzamy wielokrotnie uzyskując następujące wyniki: f() f (),947,444 4,8435 3,946679,83548E-7 4,83535546 4,94666,658E-4 4,8353546 Obliczenia uznajemy za zakończone, a wynik za pierwiastek równania, gdy spełniony jest warunek : f ( n) < ε gdzie A = min f '( ) w rozpatrywanym przedziale. A Najmniejsza wartość pierwszej pochodnej w przedziale <,75;> wynosi A = 6,3835 Podstawiając do wzoru :,8354 6,3835 7 < 5 Warunek jest spełniony, zatem można przyjąć, iż =,946679 jest pierwiastkiem funkcji 7 + 3 4 3 =. Przedstawione obliczenia potwierdzają, iż jest to najszybciej zbieżna metoda, satysfakcjonujący wynik uzyskaliśmy już w trzecim przybliżeniu.
Zad. Obliczyć pierwiastek poniższego równania metodą bisekcji z dokładnością e = 5. 3 + sin - e = Metoda ta pozwala w prosty sposób wyznaczyć, z zadaną dokładnością, pierwiastki równania nieliniowego. Przed przystąpieniem do obliczania należy poznać przebieg funkcji by w przybliżeniu określić granice przedziału, w którym znajduje się szukany pierwiastek (można je oszacować z większym lub mniejszym przybliżeniem). Metoda ta może być stosowana w każdym przypadku, w którym funkcja w granicach podanego przedziału zmienia znak (po przejściu przez miejsce zerowe). Przyjrzyjmy się wykresowi podanej funkcji: 3 + sin -e = - y - -3-4 -5 -,5 - -,75 -,5 -,5,5,5,75,5,5,75,5,5,75 Jak widać z wykresu funkcja ( 3 + sin - e = ) ma dwa miejsca zerowe znajdujące się w przedziałach <;,5> i <,5;>. Przy pomocy metody bisekcji wyznaczymy jeden z pierwiastków, z przedziału <;,5>, zaś drugi pozostawiam do indywidualnego wyliczenia w ramach ugruntowania tej metody. Metoda bisekcji (połowienia) zawsze jest zbieżna (zbieżność liniowa tej procedury gwarantuje odnalezienia pierwiastka równania jednak kosztem ilości iteracji). Poniższy rysunek obrazuje proces poszukiwania pierwiastków.
Lokalizacja miejsca zerowego równania 3 + sin - e = Pierwszym krokiem w metodzie bisekcji, jak zresztą w każdej innej tu prezentowanej, jest znalezienie przedziału w którym funkcja zmienia znak. W naszym przypadku jest to proste ponieważ dysponujemy wykresem tej funkcji. Z niego odczytujemy przedział <;,5>, w którym znajduje się pierwiastek funkcji. Aby sprawdzić ten przedział należy obliczyć wartości funkcji dla granic przedziału. Następnie sprawdzić czy iloczyn tych wartości jest mniejszy od zera. f ( ) f (,5) <,33747 < zatem można przystąpić do obliczenia pierwszego kroku iteracyjnego. Ogólny wzór tej metody wygląda następująco: k + k k+ = Pamiętając cały czas, iż do powyższego wzoru wybieramy te najbliższe i dla których wartości spełniają warunek: f ( ) f ( ) < k I tak: = a 5 =,,5 + = =,5; f (,5) =, 8665 Pamiętając o powyższym warunku do obliczenia 3 wybieramy =,5 i =,5 ponieważ iloczyn ich wartości jest ujemny.,5 +,5 3 = =,375 ; f (,375) =, 368 I znowu do obliczenia 4 wybieramy 3 =,375 i =,5 ponieważ iloczyn ich wartości daje wynik ujemny,375 +,5 4 = =,35 ; f (,35) =, 8994 Powyższą sekwencję obliczeń powtarzamy do momentu uzyskania wyniku dla którego spełniony jest warunek: f ( k ) < ε lub k+ k < ε
Reszta obliczeń została zebrana w tabeli : f() -,5,33747,5 -,8665,375,368 3,35 -,8994 4,34375 -,4956 5,359375 -,696 6,367875,688575 7,36385,74674 8,36385,6697 9,3635563 -,755,36839844,4595,3659573,4359,36473633,99 3,364598 -,8E-5 4,364435 5,36E-5 5,3647856,54E-5 6,3647-3,69E-6 pierwszy sposób zakończenia obliczeń lub drugi sposób : - 3,69 6 <,3647,3647856 < 7,63 6 < =,3647 spełnia warunek zakończenia obliczeń i jest pierwiastkiem tej funkcji. 5 5 5 ZALETA metody prostota, WADA metody wolna zbieżność procesu iteracyjnego. Zad. 3 Obliczyć pierwiastek poniższego równania uproszczoną metodą siecznych (reguła falsi) z dokładnością e = 4. 3 e =
W pierwszej kolejności przyjrzyjmy się wykresowi powyższej funkcji : 3 - e - - = 3 5 5,5 y 5-5,5 - -5 - -,5 - -,5,5,5,5 3 3,5 4 Widać z niego, iż funkcja posiada miejsca zerowe w przedziale <;,5>. W treści zadania podano do informacji aby pierwiastek tego równania wyznaczono metodą siecznych. Metoda ta polega na wyznaczeniu pierwiastka równania przy pomocy ciągu miejsc zerowych siecznych poprowadzonych między punktami stanowiącymi krańce kolejnych przedziałów izolacji. (patrz wykres) Lokalizacja miejsca zerowego jest już znana z wykresu, przedział <;,5>, lecz dla formalności sprawdźmy warunek na krańcach tego przedziału. = f () =,367879 =,5 f (,5) = 3,549 f ( ) f (,5) < Następnym krokiem w obliczaniu pierwiastka równania jest znalezienie przybliżenia zerowego, które dla metody siecznych ma postać: '' f() f () < ; gdzie to położenie jednego z krańców badanego przedziału Jak widać ze wzoru będą nam potrzebne wartości funkcji i jej drugiej pochodnej na krańcach przedziału:
f ( ) = f 3 '( ) = 3 e + e f "( ) = 6 e f() f"(x) -,36788 5,63,5 3,549 4,979 Z powyższej tabeli jasno wynika, iż ujemny iloczyn wartości funkcji i jej drugiej pochodnej przypada dla = i tym samym jest on przybliżeniem zerowym a zarazem punktem startowym w dalszych obliczeniach. Do wyznaczenia kolejnych przybliżeń pierwiastka równania wykorzystamy wzór a + k k+ = ( ) k f f ( ) ( ) k gdzie k=,,3,.,n a f k Pierwszy obliczamy dla danych: = = k f ( a k f ( ) = =,5 a f ( ) = 3,549 ) =,36788 podstawiając do wzoru otrzymujemy wynik:,5 + = (,36788) =,38 3,549 (,36788) Następnie operacja się powtarza dla nowych danych: k f ( a = =,38 k ) = =,5 f ( ) =,38778 f ( a ) = 3,549 podstawiając je do wzoru uzyskujemy wartość,5 +,38 =,38,38778 3,549,38778 =,39
Dalsze obliczenia zostały zgromadzone w tabeli: f() f'(x) f"(x) -,3678794 3,3678794 5,63,5 3,5495 8,8385 4,979,38,387785 5,5644,39 -,399 5,489454 3,3647,76 5,46435 4,3896 -,657 5,4484 5,34586,3996 5,45996 6,33685 -,78 5,44639 7,3467,946 5,44983 8,3399 -,489 5,447846 9,3447,63 5,44889,33974 -,396 5,448399,343,746 5,448693 Zakończenie obliczeń: f ( n) = f ( ) =,396 min f '( ) = f '() = 3,3678794 f < min f '( ) ( n) 4,396 5 4 = 4,465 < 3,3678794 Spełnienie powyższego warunku pozwala stwierdzi, iż =,33974 jest pierwiastkiem równania z dokładnością e = 4. Zad.4 Obliczyć pierwiastek funkcji: f ( ) = ln( + ) + z dokładnością ε = 5 metodą iteracji prostej. Zarówno jak w poprzednich zadaniach tak i tu w pierwszej kolejności przyjrzymy się wykresowi funkcji f ( ) = ln( + ) + :
y = ln(+) - + 4 -,5,5 - -,5 y -4-6 -8 - - - -,5 - -,5,5,5,5 3 Widać, iż funkcja posiada dwa pierwiastki jeden ujemny w przedziale <-;-,5> i drugi dodatni w przedziale <,5;,5>. Przy pomocy metody iteracji prostej obliczymy ujemny pierwiastek z dokładnością ε = 5. Metoda iteracji prostej polega na uściślaniu przybliżonej wartości pierwiastka. W tym celu należy przekształci funkcje y = f () do postaci = φ(). Należy pamiętać, że takie przekształcenie jest zawsze wykonalne i zazwyczaj można tego dokonać kilkoma sposobami. Proces wyznaczania metodą iteracyjną zobrazowany jest na poniższych wykresach. W zależności od wybranej funkcji = φ() jest ona zbieżna lub rozbieżna w danym przedziale.
Dla funkcji z treści zadania te transformacje wyglądają następująco: postać pierwotna ln ( + ) + = po przekształceniu : e = φ( ) ln( + ) + lub = φ( ) Wybór funkcji iteracyjnej jest podyktowany spełnieniem następującego warunku: < φ '( ) < Dla = φ( ) wzór pierwszej pochodnej wygląda następująco e φ '( ) = 4e Podstawiając do niego wartość -,5 z przedziału <-;-,5> otrzymujemy wartość: φ '( ) = 4 (,5) e (,5) =,3 Wynik wyszedł większy od jedności, zatem utworzony proces przez odwzorowanie = ϕ ( ) jest rozbieżny. Sprawdźmy drugi wzór: Jego pochodna: φ '( ) = 4 φ ( ) = ln( + ) + + Podstawmy =-,5 jak w poprzednim sprawdzeniu: ln( + ) + φ '(,5) = =,988 4 ln(,5 + ) +,5 + Uzyskana wartość mieści się w przedziale <;>, zatem można stwierdzić iż utworzony proces przez odwzorowanie = ϕ ( ) jest zbieżny. Oznacza to nic innego jak to, iż dalsze obliczenia wykonane będą przy pomocy tego wzoru. Obliczenia należy rozpocząć od wyznaczenia wartości przy pomocy wzoru: a + b + (,5) = = =,75 Pierwszy krok iteracyjny w celu uzyskania wartości : ln(,75 + ) + = =,783
Następny krok to podstawienie wartości do tego same wzoru: ln(,783 + ) + = =,773688 Następne kroki wyglądają identycznie a wartości kolejno uzyskanych przedstawia tabela: -.75 -.783 -.77369 3 -.77589 4 -.7753 5 -.77546 6 -.7754 7 -.77543 8 -.77543 Obliczenia można uznać za zakończone gdy spełniony zostanie warunek: q k+ k < ε q Gdzie q = maφ' ( ) oraz a < < b φ '( ) = φ '( ) =. 35355 φ '(,5) =,988 widać, że ma φ '( ) to φ '( ). k 6 5 5,469 < Warunek spełniony, czyli 7 = -,77543 jest pierwiastkiem równania f ( ) = ln( + ) +. Zad. 5 Obliczyć pierwiastek funkcji: sin,5 = wszystkimi poznanymi do tej pory metodami z dokładnością e = 5 Tradycyjnie już rozwiązywanie tego zadania rozpoczniemy od przyjrzenia się wykresowi tej funkcji:
- sin -,5 =,5 y,5 -,5 - -,5 - -,75 -,5 -,5,5,5,75,5,5,75,5,5,75 Z wykresu odczytujemy przedział w którym funkcja zmienia znak <;> (czerwony kolor na wykresie). Lokalizacja miejsca zerowego: f ( ) f () <,947,8473 < Do dalszych obliczeń przydadzą się nam formy pierwszej i drugiej pochodnej funkcji: f ( ) = sin,5 f '( ) = cos f ''( ) = sin METODA NEWTONA Przybliżenie zerowe: f( ) f ( ) > dla przedziału <;>: f''(),8447,9997 Oba krańce przedziału mogą być przybliżeniem zerowym, do dalszych obliczeń wybieramy =. f ( k ) Wykorzystując wzór k+ = k obliczamy pierwiastek równania, tok obliczeń f '( k ) przedstawia poniższa tabela: f() f'() f''() -,947,459698,8447 =,8473,4647,9997,4634554,69837,83689,3683,45,64684 3,7973768,455,6666 4,737,55E-7,698
Zakończenie obliczeń f ( n) A < ε gdzie A = min f '( ) 7,55 <,459698 5 Przedział <;> METODA BISEKCJI f() -,947,8473,5,555,5,55 3,5 -,77 4,875,63 5,565 -,95 6,7875,394 7,6465 -,436 8,6796875 -,99 9,699875 -,8,7898438 -,,738679 9,6E-5,677469 -,4 3,69555664 -, 4,7479 -,46 5,798955 -,8 6,757837-4,4E-5 7,7778,6E-5 8,7557-8,9E-6 Zakończenie obliczeń f ( n) < ε 8,9 6 < 5 Przedział <;> METODA SIECZNYCH '' Przybliżenie zerowe: f() f () < f ( ) = sin,5 f ''( ) = sin f () =,947 f "() =,8447 f () =,8473 f "() =,9997
Punktem startowym będzie = a + k Tok obliczeń, przy pomocy wzoru k+ = ( ) k f f ( ) ( ), przedstawia poniższa a f k tabela: f() f'() f''() -,947,459698,8447,8473,4647,9997,987 -,43,544735,89356,88,688,684,9547 3,69653 -,96,6959,965 4,7456,39,69,938 5,797 -,E-5,695,97 6,734,86E-6,6985,93 Zakończenie obliczeń: f ( n) A < ε gdzie A = min f '( ) 6,86 5 <,759698 METODA ITERACJI PROSTEJ Funkcja pierwotna f ( ) = sin, 5 Funkcja przekształcona φ ( ) = sin +, 5 Wybór funkcji iteracyjnej jest podyktowany spełnieniem następującego warunku: < φ '( ) < φ '( ) = cos Podstawiając do niego wartość z przedziału <;> otrzymujemy wartość: φ '( ) = cos =,543 Spełniony warunek, zatem dalsze obliczenia wykonamy za pomocą tej funkcji. Pierwsze działanie iteracyjne : a + b + = = =,5 = (sin) +,5 =,47495 Drugie = (sin,47495) +,5 =,989
Tok reszty obliczeń tą metodą przedstawia poniższa tabela: Φ() Φ'() f(),947,543 -,947,5997 -,465,8473 =,5,47495,7737,555,47494987,989,37699,4933,989756,838,36443,689 3,83833,753,379646,65 4,753693,774,3854,39 5,77464,786,38767,94 6,78639,7458,388479,359 7,7457746,738,38889,39 8,73836,764,388937 5,4E-5 9,76458,743,388987,E-5,74375,735,3897 8,E-6,734874,73,3894 3,9E-6 Obliczenia można uznać za zakończone gdy spełniony zostanie warunek: q k+ k < ε q Gdzie q = maφ' ( ) oraz a < < b φ '( ) = φ '() =. 543 φ '() =,,465 widać, że ma φ '( ) to φ '(). 9,64 6 < 5 Wszystkie wyniki zostały wyznaczone z dokładnością e = 5, dokładne rozwiązanie tego równania dla y = to =,79655. Wyniki uzyskane poszczególnymi metodami i błędy ich wyznaczenia względem wartości prawdziwej zostały zgromadzone w poniższej tabeli: LICZBA METODA WYNIK BŁĄD ITERACJI NEWTONA,737 3,56E-7 4 SIECZNYCH,734337 4,E-6 6 ITERACJI,734874 4,46E-6 BISEKCJI,7557,5E-5 8 Widać, iż najbardziej dokładną metodą jest metoda Newtona, a ponadto wynik uzyskuje się kilku krokach iteracyjnych. Najmniej dokładna i najbardziej pracochłonna z metod to metoda bisekcji, różnica miedzy wynikiem uzyskanym najdokładniejszą metoda a najmniej dokładną jest ponad sto razy większa.