Rozdział 3
RÓWNANIA NIELINIOWE
3.1. Wstęp
W niniejszym rozdziale omówimy algorytmy wyznaczania pierwiastków rzeczywistych jednokrotnych równań nieliniowych. Niech ![]()
będzie funkcją rzeczywistą zmiennej rzeczywistej ![]()
. Pierwiastkiem (zerem) równania
![]()
(3.1)
(lub pierwiastkiem (zerem) funkcji ![]()
) nazywamy każdą wartość ![]()
zmiennej niezależnej ![]()
, dla której ![]()
.
Zagadnienie przybliżonego obliczania pierwiastków definiujemy następująco: dla zadanej dokładności ![]()
należy znaleźć takie![]()
, dla której zachodzi nierówność
![]()
. (3.2)
Przybliżoną wartość pierwiastka funkcji wyznaczamy w dwóch etapach:
najpierw lokalizujemy pierwiastki równania (3.1), tj.
znajdujemy liczbę ![]()
pierwiastków równania,
dla każdego pierwiastka ![]()
znajdujemy taki przedział ![]()
, że ![]()
oraz ![]()
,
potem uściślamy przybliżoną wartość pierwiastka, tj. dla zadanego![]()
i zadanej dokładności ![]()
znajdujemy taką wartość ![]()
, że ![]()
.
3.2. Lokalizacja pierwiastków
Dotychczas nie opracowano algorytmów lokalizacji pierwiastków rzeczywistych dowolnej funkcji ciągłej (odstępstwem od powyższego stwierdzenia jest twierdzenie Sturma, na mocy którego można skonstruować algorytm lokalizacji wszystkich rzeczywistych pierwiastków wielomianu o współczynnikach rzeczywistych).
Na etapie lokalizacji korzystamy z podstawowej wiedzy o funkcjach elementarnych.
Przykład 3.1. Zlokalizować rzeczywiste pierwiastki funkcji
![]()
. (3.3)
Rozwiązanie. Funkcję (3.3) przyrównujemy do zera otrzymując równanie

![]()
,
które następnie przekształcamy do postaci
![]()
.
Z łatwością wykonujemy wykresy znanych funkcji ![]()
oraz ![]()
. Odcięte punktów przecięcia się wykresów są pierwiastkami funkcji (3.3). Z tabeli 3.1 oraz wykresu wnioskujemy, że istnieją dwa rzeczywiste pierwiastki funkcji (3.3) leżące w przedziałach ![]()
, ![]()
.
Rys. 3.1. Wykresy funkcji ![]()
i![]()
Tabela 3.1. Lokalizacja pierwiastków funkcji |
|||
|
|
|
|
-1.0 |
0.00000 |
1.00000 |
-1.00000 |
-0.9 |
0.09531 |
0.62000 |
-0.52469 |
-0.8 |
0.18232 |
0.28000 |
-0.09768 |
-0.7 |
0.26236 |
-0.02000 |
0.28236 |
-0.6 |
0.33647 |
-0.28000 |
0.61647 |
-0.5 |
0.40547 |
-0.50000 |
0.90547 |
-0.4 |
0.47000 |
-0.68000 |
1.15000 |
|
|
|
|
... |
... |
... |
... |
|
|
|
|
0.7 |
0.99325 |
-0.02000 |
1.01325 |
0.8 |
1.02962 |
0.28000 |
0.74962 |
0.9 |
1.06471 |
0.62000 |
0.44471 |
1.0 |
1.09861 |
1.00000 |
0.09861 |
1.1 |
1.13140 |
1.42000 |
-0.28860 |
1.2 |
1.16315 |
1.88000 |
-0.71685 |
1.3 |
1.19392 |
2.38000 |
-1.18608 |
1.4 |
1.22378 |
2.92000 |
-1.69622 |
1.5 |
1.25276 |
3.50000 |
-2.24724 |
3.3. Metoda bisekcji (metoda połowienia przedziału)
Zakładamy, że wcześniej został zlokalizowany rzeczywisty pierwiastek funkcji ![]()
, który leży w przedziale ![]()
- zatem ![]()
. Metoda bisekcji jest metodą uściślania przybliżonej wartości pierwiastka, która wymaga założenia:
![]()
. (3.4)
Algorytm 3.1. Uściślanie pierwiastka funkcji ![]()
leżącego w przedziale ![]()
metodą bisekcji.

Przykład 3.2. Obliczyć ujemny pierwiastek funkcji
![]()
z dokładnością ![]()
metodą bisekcji.
Rozwiązanie. W przykładzie 3.1 pokazano, że ujemny pierwiastek funkcji (3.3) leży w przedziale [-0.8 ; -0.7]. Obliczenia kolejnych kroków metody bisekcji są zestawione w tabeli 3.2.
Tabela 3.2. Wyznaczanie ujemnego pierwiastka funkcji |
|||||
|
|
|
|
||
z dokładnością 10-5 metodą bisekcji. |
|
|
|||
|
|
|
|
|
|
|
-0.800000 |
|
-0.700000 |
|
1.0E-03 |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
-0.800000 |
-0.700000 |
-0.750000 |
-9.6E-03 |
1.0E-01 |
1 |
-0.800000 |
-0.750000 |
-0.775000 |
-1.7E-04 |
5.0E-02 |
2 |
-0.800000 |
-0.775000 |
-0.787500 |
4.7E-03 |
2.5E-02 |
3 |
-0.787500 |
-0.775000 |
-0.781250 |
1.1E-03 |
1.3E-02 |
4 |
-0.781250 |
-0.775000 |
-0.778125 |
2.4E-04 |
6.2E-03 |
5 |
-0.778125 |
-0.775000 |
-0.776563 |
4.7E-05 |
3.1E-03 |
6 |
-0.776563 |
-0.775000 |
-0.775781 |
6.1E-06 |
1.6E-03 |
7 |
-0.775781 |
-0.775000 |
-0.775391 |
-2.2E-07 |
7.8E-04 |
8 |
-0.775781 |
-0.775391 |
-0.775586 |
8.3E-07 |
3.9E-04 |
9 |
-0.775586 |
-0.775391 |
-0.775488 |
1.3E-07 |
2.0E-04 |
10 |
-0.775488 |
-0.775391 |
-0.775439 |
6.8E-09 |
9.8E-05 |
11 |
-0.775439 |
-0.775391 |
-0.775415 |
-2.0E-09 |
4.9E-05 |
12 |
-0.775439 |
-0.775415 |
-0.775427 |
-5.3E-10 |
2.4E-05 |
13 |
-0.775439 |
-0.775427 |
-0.775433 |
2.1E-10 |
1.2E-05 |
14 |
-0.775433 |
-0.775427 |
-0.775430 |
-3.5E-11 |
6.1E-06 |
3.4. Metoda stycznych (metoda Newtona-Raphsona)
Metoda stycznych jest inną metodą uściślania przybliżonej wartości pierwiastka. Zakładamy zatem, że wcześniej został zlokalizowany rzeczywisty pierwiastek funkcji ![]()
leżący w przedziale ![]()
; a zatem ![]()
. Metoda stycznych wymaga silniejszych niż metoda bisekcji założeń odnośnie funkcji ![]()
, a mianowicie:
![]()
, (3.5)
dla każdego ![]()
albo ![]()
albo ![]()
(![]()
nie zmienia znaku w przedziale ![]()
), (3.6)
dla każdego ![]()
albo ![]()
albo ![]()
(![]()
nie zmienia znaku w przedziale ![]()
). (3.7)
Algorytm 3.2. Uściślanie pierwiastka funkcji ![]()
leżącego w przedziale ![]()
metodą Newtona-Raphsona.
Metoda Newtona-Raphsona(![]()
)
W charakterze ![]()
wybieramy ten kraniec przedziału ![]()
(tzn. albo ![]()
,
albo ![]()
), który spełnia warunek:![]()
. (3.8)
Wyznaczamy: ![]()

(3.9)
Ciąg wygenerowany według reguł (3.8)÷(3.9) nosi nazwę procesu Newtona-Raphsona. Jego własności zostały sformułowane w poniższym twierdzeniu.
Twierdzenie 3.1. Jeżeli funkcja ![]()
spełnia założenia (3.5)÷(3.7), to proces Newtona-Raphsona ma następujące własności:
![]()
(proces jest zbieżny do pierwiastka funkcji ![]()
leżącego w przedziale ![]()
, (3.10)
ciąg (3.8)÷(3.9) jest ściśle monotoniczny, tzn. albo ![]()
albo ![]()
(3.11)
k-ty wyraz procesu spełnia nierówność: ![]()
, (3.12)
gdzie ![]()
.
Przykład 3.3. Obliczyć ujemny pierwiastek funkcji
![]()
z dokładnością ![]()
metodą Newtona-Raphsona.
Rozwiązanie. W przykładzie 3.1 pokazano, że ujemny pierwiastek funkcji (3.3) leży w przedziale ![]()
. Na początku wykażemy, że funkcja (3.3) spełnia w przedziale ![]()
warunki (3.5)÷(3.7).
Dla ![]()
funkcja (3.3) jest ciągła i posiada ciągłe pochodne wszystkich rzędów.

Zatem w przedziale [-0.8 ; -0.7] ![]()
.
![]()
.
Zatem funkcja (3.3) spełnia w przedziale [-0.8 ; -0.7] warunki (3.5)÷(3.7) i w związku z tym możemy zastosować metodę stycznych do uściślenia przybliżonej wartości pierwiastka.
Wyznaczamy ![]()
oraz ![]()
. Z tabeli 3.1 odczytujemy
![]()
, ![]()
. Więc ![]()
, ponieważ ![]()
. Następnie obliczamy
![]()
.
Wartości kolejnych iteracji metody stycznych są podane w tabeli 3.3.
Tabela 3.3. Wyznaczanie ujemnego pierwiastka funkcji |
|
||||
|
|
|
|
||
z dokładnością 10-5 metodą stycznych. |
|
|
|||
|
|
|
|
|
|
|
-0.800000 |
|
3.569231 |
|
1.0E-03 |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
-0.800000 |
-0.097678 |
4.033333 |
-0.024218 |
2.7E-02 |
1 |
-0.775782 |
-0.001374 |
3.919977 |
-0.000350 |
3.8E-04 |
2 |
-0.775432 |
0.000000 |
3.918341 |
0.000000 |
8.0E-08 |
3.5. Metoda iteracji prostej
Metoda iteracji prostej jest metodą uściślania przybliżonej wartości pierwiastka. Zakładamy zatem, że wcześniej został zlokalizowany pierwiastek funkcji ![]()
i leży w przedziale ![]()
; zatem ![]()
. Metoda iteracji prostej składa się z dwóch etapów.
Najpierw równanie
![]()
(3.13)
przekształcamy do równoważnej postaci
![]()
(3.14)
(takie przekształcenie jest zawsze wykonalne i zazwyczaj można to dokonać kilkoma sposobami).
Wybieramy z przedziału ![]()
przybliżenie ![]()
. Kolejne iteracje obliczamy ze wzoru
![]()
(3.15)
W poniższym twierdzeniu zostały sformułowane warunki wystarczające zbieżności ciągu (3.15) do pierwiastka funkcji (3.13) leżącego w przedziale ![]()
.
Twierdzenie 3.2. Niech funkcja ![]()
będzie określona, ciągła i różniczkowalna w przedziale domkniętym ![]()
oraz ![]()
dla każdego ![]()
. Jeśli nierówność
![]()
zachodzi dla każdego ![]()
,
to
proces (3.15) jest zbieżny niezależnie od wyboru ![]()
oraz ![]()
zachodzą nierówności
![]()
![]()
(3.16)
Algorytm 3.3. Uściślanie pierwiastka funkcji ![]()
leżącego w przedziale ![]()
metodą iteracji prostej.
Metoda iteracji prostej(a, b, q, ![]()
)
Równanie (3.13) przekształcamy do takiej postaci równoważnej (3.14), która spełnia założenia twierdzenia 3.2.
W charakterze przybliżenia zerowego wybieramy dowolny ![]()
, np. ![]()
.

Przykład 3.4. Obliczyć ujemny pierwiastek funkcji
![]()
z dokładnością ![]()
metodą iteracji prostej.
Rozwiązanie. W przykładzie 3.1 pokazano, że ujemny pierwiastek funkcji (3.3) leży w przedziale ![]()
a dodatni w przedziale ![]()
. Poszukamy obecnie przekształcenia równania
![]()
do równoważnej postaci typu (3.14), spełniającej założenia twierdzenia 3.2. Równanie możemy przekształcić w następujący sposób
![]()
.
Dla tego przedstawienia mamy
![]()
.
Ta funkcja jest:
w przedziale ![]()
monotonicznie malejąca, zatem dla ![]()
zachodzi ![]()
;
w przedziale ![]()
monotonicznie rosnąca, zatem dla ![]()
zachodzi ![]()
.
W obydwu przedziałach ![]()
, więc utworzony proces (3.15) przez odwzorowanie ![]()
jest rozbieżny.
Równanie ![]()
może być przedstawione w równoważnej postaci jako para równań
![]()
![]()
Dla obydwu funkcji mamy

.
Dla ![]()
funkcja ![]()
jest monotonicznie malejąca, zatem
![]()
.
W związku z tym, w procesie iteracyjnym użyjemy
funkcji ![]()
dla wyznaczenia przybliżonej wartości pierwiastka z przedziału ![]()
,
funkcji ![]()
dla wyznaczenia przybliżonej wartości pierwiastka z przedziału ![]()
.
Za ![]()
przyjęto:
![]()
dla pierwiastka z przedziału ![]()
,
![]()
dla pierwiastka z przedziału ![]()
.
Wartości kolejnych iteracji metody iteracji prostej są podane w tabeli 3.4.
Tabela 3.4. Wyznaczanie pierwiastków funkcji |
|
||||||||
|
|
|
|
|
|
||||
metodą iteracji prostej, z dokładnością 10-5. |
|
||||||||
|
|
|
|
|
|
|
|||
|
-0.75000 |
|
|
|
1.05000 |
|
|||
|
0.27096 |
|
|
|
0.08135 |
|
|||
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|||
0 |
-0.75000 |
|
|
0 |
1.05000 |
|
|||
1 |
-0.78203 |
8.6E-02 |
|
1 |
1.02838 |
5.8E-02 |
|||
2 |
-0.77369 |
2.2E-02 |
|
2 |
1.02665 |
4.7E-03 |
|||
3 |
-0.77589 |
5.9E-03 |
|
3 |
1.02651 |
3.7E-04 |
|||
4 |
-0.77531 |
1.6E-03 |
|
4 |
1.02650 |
3.0E-05 |
|||
5 |
-0.77546 |
4.1E-04 |
|
5 |
1.02650 |
2.4E-06 |
|||
6 |
-0.77542 |
1.1E-04 |
|
|
|
|
|||
7 |
-0.77543 |
2.8E-05 |
|
|
|
|
|||
8 |
-0.77543 |
7.5E-06 |
|
|
|
|
|||
3.6. Efektywność metod przybliżonego obliczania pierwiastków funkcji
Obecnie naszym celem jest porównanie metod uściślania przybliżonej wartości jednokrotnego pierwiastka funkcji ![]()
. Zakładamy, że metoda iteracyjna generuje ciąg ![]()
kolejnych przybliżeń zbieżny do pierwiastka ![]()
funkcji ![]()
. Każdej metodzie można przyporządkować liczbę ![]()
zwaną wykładnikiem zbieżności metody (lub rzędem metody), oraz stałą ![]()
, zwaną stałą asymptotyczną błędu metody, które spełniają warunek

. (3.17)
Rząd metody i stała ![]()
charakteryzują szybkość zbieżności metody iteracyjnej: ciąg kolejnych przybliżeń ![]()
jest tym szybciej zbieżny do pierwiastka, im większy jest rząd metody i im mniejsza jest stała asymptotyczna błędu. Spośród tych dwóch wielkości istotniejszą rolę odgrywa wykładnik zbieżności ![]()
. Przykładowo,
Dla metody iteracji prostej: ![]()
oraz ![]()
,
Dla metody stycznych: ![]()
oraz ![]()
.
3.7. Zadania
Zad. 3.1. Liczba iteracji w metodzie bisekcji
Wykazać, że dla wyznaczenia przybliżonej wartości pierwiastka leżącego w przedziale ![]()
z dokładnością![]()
trzeba w metodzie bisekcji wykonać ![]()
iteracji.
Zad. 3.2. Kryterium zakończenia obliczeń w metodzie Newtona-Raphsona
Udowodnić, że dla procesu Newtona-Raphsona zachodzi nierówność
![]()
,
gdzie
![]()
, ![]()
.
Nierówność tę można wykorzystać jako kryterium zakończenia obliczeń w metodzie Newtona-Raphsona.
Zad. 3.3. Kryterium zakończenia obliczeń w metodzie iteracji prostej
Udowodnić, że jeśli proces iteracji prostej jest zbieżny, to zachodzi nierówność
![]()
,
Nierówność tę można wykorzystać jako kryterium zakończenia obliczeń w metodzie iteracji prostej.
Zad. 3.4. Podprogram obliczania pierwiastka
Zakładamy, że dysponujemy narzędziem obliczeniowym wykonującym 5 działań zmiennoprzecinkowych: dodawanie, odejmowanie, mnożenie, dzielenie i potęgowanie. Opracować algorytm obliczania ![]()
dla dowolnej dodatniej liczby rzeczywistej ![]()
i dowolnego naturalnego ![]()
.
Wskazówka. Oznaczyć![]()
. Równość ta jest równoważna równości ![]()
. Oznacza to, że należy znaleźć pierwiastek funkcji ![]()
. Dowieść, że do znalezienia pierwiastka tej funkcji można zastosować metodę Newtona-Raphsona.
Zad. 3.5. Stosując metodę bisekcji obliczyć z dokładnością ε rzeczywiste pierwiastki poniższych funkcji
![]()
![]()
![]()
![]()
![]()
.
Zad. 3.6. Stosując metodę Newtona-Raphsona obliczyć z dokładnością ε rzeczywiste pierwiastki poniższych funkcji.
![]()
![]()
![]()
![]()
![]()
.
Zad. 3.7. Stosując metodę iteracji prostej obliczyć z dokładnością ε rzeczywiste pierwiastki poniższych funkcji.
![]()
![]()
![]()
![]()
![]()
.