Projekt 6 - Rozwiązywanie równań nieliniowych
Transkrypt
Projekt 6 - Rozwiązywanie równań nieliniowych
Informatyka Podstawy Programowania 2016/2017 Projekt 6 6. ROZWIĄZYWANIE RÓWNAŃ NIELINIOWYCH CAŁKOWANIE NUMERYCZNE 6.1 Równania algebraiczne. Poszukujemy rozwiązania, czyli chcemy określić pierwiastki rzeczywiste równania: f (x ) = 0 (6.1) gdzie x - zmienna rzeczywista f ( x ) - dowolna wystarczająco regularna funkcja Wystarczająco regularna funkcja oznacza, że f ( x ) jest ciągła oraz posiada ciągłe pochodne potrzebnych rzędów. Każdą wartość ξ , która spełnia równanie (6.1) tzn., taką, że f (ξ ) = 0 nazywamy pierwiastkiem równania. Zakładamy, że równanie ma pierwiastki odosobnione tj. dla każdego pierwiastka ξ istnieje otoczenie, które nie zawiera innych pierwiastków rzeczywistych tego równania. Proces obliczania przybliżonych wartości pierwiastków rzeczywistych równania (6.1) dzieli się na 2 etapy: 1. Lokalizacja pierwiastków, czyli ustalenie możliwie wąskich przedziałów (a, b ) , które zawierają jeden i tylko jeden pierwiastek równia. 2. Uściślenie pierwiastków przybliżonych czyli określenie ich wartości z żądaną dokładnością. Podstawą algorytmów procesu lokalizacji pierwiastków jest twierdzenie BolzanoCauchy’ego. Twierdzenie: Jeżeli funkcja ciągła f ( x ) ma na końcach przedziału domkniętego a, b różne znaki, a więc f (a ) • f (b )〈 0 to wewnątrz tego przedziału istnieje co najmniej jeden pierwiastek równania f (x ) = 0 . 1 Informatyka Podstawy Programowania 2016/2017 f (x ) f (a ) ξ1 ξ2 ξ3 b a f (b ) x Twierdzenie powyższe nie rozstrzyga o ilości pierwiastków wewnątrz przedziału a, b . Jednakże w praktyce mamy wystarczająco dużo informacji o szukanym pierwiastku, aby znalezienie przedziału a, b nie stanowiło problemu. W przeciwnym wypadku gdy informacje są skąpe, można po znalezieniu a, b zbadać znak pochodnej f ' ( x ) w tym przedziale. Jeśli w przedziale a, b istnieje pochodna f ( x ) i nie zmienia w nim znaku tj. jeśli f ' ( x )〉 0 lub f ' ( x )〈 0 dla a ≤ x ≤ b to ξ jest jedynym pierwiastkiem. f f (b ) ξ f (a ) x 2 Informatyka Podstawy Programowania 2016/2017 Metody poszukiwania pierwiastków a) metoda połowienia (metoda bisekcji) Mamy f ( x ) = 0 przy czym f ( x ) - funkcja ciągła w przedziale domkniętym a, b oraz wiemy, że f (a )• f (b ) 〈 0 Idea połowienia polega na dzieleniu przedziału a, b na połowy i sprawdzaniu, w której z nich znajduje się pierwiastek. W ten sposób znajduje się nowy węższy przedział zawierający pierwiastek ξ . Proces ten powtarzamy tak długo, aż długość przedziału jest mniejsza od przyjętej dopuszczalnej. Metoda połowienia jest bezwzględnie zbieżna, gdyż każde równanie f ( x ) = 0 które posiada pierwiastek w przedziale a, b , można rozwiązać tą metodą. Nie zakłada się w tej metodzie żadnych ograniczeń na funkcję f ( x ) , ani na pochodną tej funkcji. Jedyne założenie – ciągłość funkcji w przedziale a, b . Algorytm postępowania. 1. Obliczyć punkt c = a+b i wartość funkcji w punkcie c → f (c ) 2 2. Sprawdzić czy f (c ) = 0 jeżeli tak to ξ = c , w przeciwnym razie 3. Wybrać z przedziałów a, c i c, b ten, w którym znajduje się pierwiastek. Obliczamy f (a ) ⋅ f (c ) i f (b ) ⋅ f (c ) i ten który jest ujemny przechodzi do dalszych obliczeń jak przedział a1 ,b1 . 4. Sprawdzić czy długość przedziału a1 ,b1 jest dostatecznie mała. Jeżeli b1 − a1 〈ξ to przyjmujemy ξ = b1 + a1 2 Jeżeli b1 − a1 〉ξ to rozpoczynamy proces od pkt. 1. 3 Informatyka Podstawy Programowania 2016/2017 W wyniku zastosowania opisanego algorytmu, albo w pewnym kroku otrzymujemy pierwiastek dokładny albo ciąg przedziałów a1 ,b1 , a 2 ,b2 ... ai , bi takich, że oraz f (a i ), f (bi ) 〈 0 bi − a i = 1 (b − a ) 2i (6.2) Końce ciągu a1 , a 2 ....ai tworzą ciąg monotonicznie niemalejący, ograniczony z góry, a końce b1 , b2 ....bi , tworzą ciąg nierosnący ograniczony z dołu to ξ = lim ai = lim bi i →∞ (6.3) i →∞ a ξ jest pierwiastkiem równania. b) Metoda interpolacji liniowej Załóżmy że znany jest przedział a, b w którym znajduje się pierwiastek f (x ) A f (x ) f (a ) f (c ) a C x f (b ) B Przez punkty A (a, f (a )) i B (b, f (b )) można poprowadzić sieczną, która przetnie oś odciętych w punkcie C . Wartość C określona jest zależnością: C= a ⋅ f (b ) − b ⋅ f (a ) f (b ) − f (a ) (6.4) Jeżeli C w pobliżu C = a + f (a ) a−b f (b ) − f (a ) (6.5) 4 Informatyka Podstawy Programowania 2016/2017 Drugi składnik wzoru można uważać za poprawkę wartości " a" i wówczas w pobliżu pierwiastka wystarczy kilka cyfr znaczących. W powyższym równaniu jeden, lub oba końce mogą być „ruchome”. Zależy to od właściwej funkcji wewnątrz przedziału a, b . Różne przebiegi funkcji f (x ) f (b ) c f (a ) b x f (b ) B x f (x ) A1 f (a ) A c = b1 a c = a1 B1 5 Informatyka Podstawy Programowania 2016/2017 Załóżmy, że w przedziale a, b istnieje tylko 1 pierwiastek, a pochodna f ' ' ( x ) nie zmienia znaku w tym przedziale, to jeden z końców przedziału będzie nieruchomy. W przypadku gdy f (a )〉 0 i f ' ' ( x ) 〉 0 dla a ≤ x ≤ b koniec a jest nieruchomy y f (a ) x3 x 2 x4 x1 f (b ) x Wówczas x0 = b xi +1 = xi − f ( xi ) ( xi − a ) f ( xi ) − f (a ) (6.6) gdzie x = 0,1, 2... W celu oszacowania błędu przybliżonego pierwiastka wykorzystamy twierdzenie: Niech ξ będzie dokładną, a x przybliżoną wartością pierwiastka równania, przy czym obie te liczby znajdują się w przedziale domkniętym α , β Jeśli x ∈ a, β zachodzi nierówność f ' ( x ) ≥ m1 〉 0 to prawdziwe jest następujące oszacowanie: x −ξ ≤ () f x m1 (6.7) (6.8) 6 Informatyka Podstawy Programowania 2016/2017 Błąd bezwzględny przybliżenia xi , gdy znane są wartości przybliżone poprzedniego xi −1 , można określić według wzoru: ξ − xi ≤ M 1 − m1 xi − xi −1 m1 (6.9) gdzie za M 1 i m1 można wziąć odpowiednio najmniejszą i największą wartość f ' ( x ) w przedziale domkniętym a, b . Jeśli przedział a, b jest na tyle wąski, że zachodzi nierówność: M 1 ≤ 2m1 (6.10) to na mocy nierówności (6.9) otrzymujemy: xi − xi −1 〈 Σ (6.11) gdzie Σ jest zadanym kresem górnym błędu bezwzględnego, to jest pewne, że ξ − xi 〈 Σ jest również przedziałem. 6.2 Całkowanie numeryczne Całkowanie numeryczne polega na zastąpieniu krzywej opisanej funkcją f ( x ) elementami o kształcie prostokąta, trapezu, paraboli lub innej linii wyrażonej wielomianem dobrze wpisującej się wpisującej się w kształt funkcji. Formuła prostokątów dla przedziału [ x1 , x2 ] x2 ∫ f ( x ) dx = hf ( x1 ) − x1 h 2 '' f (ξ ) 6 (6.12) gdzie ξ ∈ [ x1 , x2 ] Formuła trapezów dla przedziału [ x1 , x2 ] x2 ∫ f ( x ) dx = x1 h h3 '' f (ξ ) f ( x1 ) + f ( x2 ) − 2 12 (6.13) gdzie ξ ∈ [ x1 , x2 ] Formuła Simpsona (parabola) dla przedziału [ x1 , x3 ] x3 ∫ x1 f ( x ) dx = h h5 ( 4 ) f (ξ ) f ( x1 ) + 4 f ( x2 ) + f ( x3 ) − 3 90 (6.14) gdzie ξ ∈ [ x1 , x3 ] 7 Informatyka Podstawy Programowania 2016/2017 Formuły Newtona: • dla przedziału [ x1 , x4 ] x4 ∫ x1 3h 3h5 ( 4) f ( x ) dx = f ( x1 ) + 3 f ( x2 ) + 3 f ( x3 ) + f ( x4 ) − f (ξ ) 8 80 (6.15) gdzie ξ ∈ [ x1 , x4 ] • dla przedziału [ x1 , x5 ] x5 ∫ f ( x ) dx = x1 2h 8h 7 ( 6 ) f ( ξ ) (6.16) f ( x1 ) + 32 f ( x2 ) + 12 f ( x3 ) + 32 f ( x4 ) + f ( x5 ) − 45 945 gdzie ξ ∈ [ x1 , x5 ] 8