
.3 Метод Ньютона-Рафсона (метод дотичних)
Метод Ньютона-Рафсона уточнення кореня нелінійного рівняння використовується найбільш часто. В цьому методі для обчислення послідовних наближень використовується ітераційна формула
,
(6)
Якшо нульове наближення задовольняє умові
, (7)
то ітераційний процес збігається. При цьому наближення знаходиться між коренем рівняння та попереднім наближенням , тобто ближче до кореня. Це доводить такий чисельний експеримент.
Числовий
експеримент 1.
Рівняння
має один корінь (графіки функцій
та
перетинаються в одній точці) Відрізком
відокремлення може бути відрізок
.
На ньому виконуються три умови
Больцано-Коші. Необхідні обчислення
виконуються за програмою
program num_exp1;
uses
crt;
var
x:real;
k:byte;
function f(x:real):real;
begin
f:=x-exp(-x);
end;
function f1(x:real):real;
begin
f1:=1+exp(-x);
end;
function f2(x:real):real;
begin
f2:=-exp(-x);
end;
begin
clrscr;
write (‘Нульве наближення x=’); readln(x);
writeln(x:1:2,’ ‘, f(x):1:4, ‘ ‘, f1(x):1:4, ‘ ‘ f2(x):1:4);
for k:=1 to 10 do
begin
x:=-x-f(x)/f’(x);
writeln(k, ‘ ‘, x);
end;
end.
Результат роботи програми:
Нульове наближення x=-4
-4.00 -58.5982 55.5982 -54.5982
1 -2.9450
2 -1.8489
3 -0.7334
4 0.1801
5 0.5371
6 0.5670
7 0.5671
8 0.5671
9 0.5671
10 0.5671
Видно,
що при
умова
виконується і ітераційний процес
збігається.
При невдалому виборі нульового наближення з порушенням умови збіжності, ітераційний процес, як правило розбігається, хоча ї є випадки, коли він збіжний навіть при порушенні умови збіжності.
Можна довести, що похибка послідовного наближення задовольняє нерівність
(8)
де
. (9)
З формули
(8) випливає, що похибка наступного
наближення пропорційна квадрату похибки
попереднього наближення. Тому, якщо
нульове наближення задовольняє умові
,
то в кожному наступному наближенні
подвоюється число вірних десяткових
знаків.
Як
правило, за нульове наближення беруть
один з кінців відрізку відокремлення,
той для якого виконується умова (7). Для
того, щоб уникнути ситуації, коли умова
збіжності не виконується для жодного
кінця відрізку відокремлення, вимагається,
щоб друга похідна
не змінювала знаку на
(це
означає, що на
графік функції
не
має точок перегину).
Закінчення ітераційного процесу наступає при досягненні умови
,
в якій
. (10)
Алгоритм уточнення кореня нелінійного рівняння реалізований процедурою m_newton_rafson.
procedure m_newton_rafson(var x:real; eps:real;kmax:byte; var error:byte);
var
d,dpop,xpop:real;
k:byte;
begin
error:=0; xpop:=x; dpop:=1e20;
for k:=1 to kmax do
begin
x:=xpop-f(xpop)/f1(xpop); d:=abs(x-xpop);
if d>dpop then begin error:=2; exit;end;
if abs(xpop-x)>eps then begin xpop:=x; dpop:=d end
else exit;
end;
error:=3;
end;
(коментарі до цієї процедури абсолютно аналогічні до коментарів процедури mpi).
Процедура m_newton_rafson звертається до функцій (в нашому випадку):
function f(x:real):real;
begin
f:=x-cos(x);
end;
яка обчислює значення функції в довільній точці;
f1(x:real):real;
begin
f1:=1+sin(x);
end;
яка обчислює значення похідної в довільній точці.