Metody numeryczne - ćwiczenia nr 5
1. Pierwiastki równań nieliniowych
Będziemy rozwiązywać zadania dotyczące znajdowania miejsc zerowych (pier-
wiastków) funkcji nieliniowych, innymi słowy rozwiązywaniem równań typu
f (x) = 0 .
(1)
Rozwiązania x równania (1) poszukuje się zazwyczaj jako wyniku procedury
iteracyjnej typu
x
k+1
= x
k
− h
k
,
(2)
prowadzącej do spełnienia warunku
|x
k+1
− x
k
| < ε ,
(3)
lub
|f (x
k
)| < ε .
(4)
Człon h
k
jest charakterystyczny dla konkretnej metody szukania perwiastków.
1.1. Metoda bisekcji
Założenie: f (x) ciągła w przedziale [a, b], f (a) · f (b) < 0.
x
1,2
=
(
a
b
,
x
k+1
= x
k
−
1
2
(x
k
− x
k−1
) ,
(5)
f (x
k+1
) · f (x
k
) < 0 .
Szybkość zbieżności w zasadzie nie zależy od funkcji f . Algorytm nie wyko-
rzystuje żadnej własności funkcji, prócz informacji, że posiada jedno zero w
przedziale [a, b].
1.2. Metoda “fałszywej” linii prostej (“regula falsi”)
Założenie: f (x) ciągła w przedziale [a, b], f (a) · f (b) < 0.
x
1,2
=
(
a
b
,
x
k+1
= x
k
−
x
k
−x
k−1
f (x
k
)−f (x
k−1
)
f (x
k
) ,
(6)
f (x
k+1
) · f (x
k
) < 0 .
1
1.3. Metoda siecznych
Założenie: f (x) ciągła w przedziale [a, b].
x
1
= a , x
2
= b ,
x
k+1
= x
k
−
x
k
−x
k−1
f (x
k
)−f (x
k−1
)
f (x
k
) ,
(7)
1.4. Metoda stycznych (Newtona)
Założenie: f (x) ciągła i różniczkowalna
1
.
x
1
= a ,
x
k+1
= x
k
−
f (x
k
)
f
0
(x
k
)
.
(8)
1.5. Metoda Steffensena
x
1
= a ,
x
k+1
= x
k
−
(f (x
k
))
2
f (x
k
+f (x
k
))−f (x
k
)
.
(9)
1.6. Metoda iteracyjna (punktu stałego)
Funkcję f (x) przekształcamy do funkcji g(x), tak aby zachodziło:
f (x) = 0 → x = g(x) .
Szukany pierwiastek funkcji f (x) otrzymujemy iterując funkcję g(x):
x
1
= a ,
x
k+1
= g(x
k
) .
(10)
Zadania
1. Zaprogramuj w Scilabie opisane w instrukcji cztery wybrane metody oblicza-
nia pierwiastków równań nieliniowych.
2. Sporządź wykresy
2
następujących funkcji:
f
1
(x) = x
3
+ 18x
2
− 22x + sin(2x
2
+ x) − 255 ,
f
2
(x) = x
4
+ x
3
+ e
x−2
− 200 ,
f
3
(x) = ln
x
2
+x+2
sin x+1
− 5 dla x > 5 .
tak aby wstępnie określić wartości ich pierwiastków.
1
Do obliczenia pochodnej funkcji w SciLabie służy funkcja derivative.
2
Przykład w SciLab-ie:
function [y] = f(x)
y = x^3 + 18*x^2 - 22*x + sin(2*x^2+x) - 255;
endfunction
--> x = (-20:0.5:10);
--> y = f(x);
--> plot2d(x,y)
Aby “dostroić” parametry wykresu należy poeksperymentować opcjami Edit okna graficznego.
2
3. Posługując się wynikami z pkt. 1 znajdź jak największą liczbę pierwiastków
tych funkcji.
4. Sprawdź na co wpływa zastosowanie danego kryterium stopu procesu itera-
cyjnego.
5. Sprawdź jak zależy szybkość obliczania pierwiastków od założonej dokładnosci
ε.
6. Porównaj dokładność otrzymanych wyników z uzyskanymi przy zastosowa-
niu funkcji fsolve SciLaba. Wyniki przedstaw w postaci tabelarycznej oraz
na wykresie.
3