Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КМСхКТ_мет_2012.doc
Скачиваний:
6
Добавлен:
19.11.2019
Размер:
1.81 Mб
Скачать

2.3.Метод дотичних

Метод дотичних (Ньютона) [2, 3] є одним із найбільш ефективних методів пошуку кореня нелінійних рівнянь. Він забезпечує квадратичну зходимість до кореня поблизу нього.

Нехай корінь функції знаходиться на інтервалі [a,b], тобто f(a)f(b)<0.

Початкова точка пошуку вибирається за умови: якщо f(а)f"(а)>0, то покласти х(0)= а; якщо f(а)f"(а)>0, то х(0)= b. Черговим наближенням кореня вважається точка перетину дотичної функції та осі ОХ, що розраховується за формулою

.

Кількаразове використання отриманого значення дозволяє уточнити корінь до потрібноє точності.

Алгоритм пошуку кореня нелінійного рівняння за методом дотичних включає кроки:

  1. вибрати початкову точку пошуку; якщо f(а)f"(а)>0, то покласти х(0)= а; якщо f(а)f"(а)>0, то х(0)= b;

  2. покласти k=0;

  3. для відомого х(k) розрахувати поточнi значення функції f(х), що досліджується, та її похідної f'(х);

  4. покласти k= k+1;

  5. розрахувати чергове значення аргумента за формулою

х(k)= х(k-1) -f(х(k-1))/f'(х(k-1));

  1. якщо х(k)(k-1)>, то перейти до п.2;

  2. вивести результат та припинити обчислення.

Примітка. Якщо важко обчислити похідну аналітично, користуються методом кінцевих прирощень, у відповідності до якого f' f/x при x=0,0001.

Задача 2.3. Знайти методом дотичних корінь функції f(x)=x2-1 на інтервалі [0, 2] з точністю 0.01.

Розвязок. Чи існує корінь на інтервалі [0, 2]? Існує, бо f(0)f(2)=(‑1)3<0.

Вибір початкової точки: f'=2x; f"=2>0; x0=b=2, бо f(b)f"=3*2>0. Наступні результати розвязання задачі відповідно до описаного алгоритму метода Ньютона наведені в таблиці:

k

x

x-xt

fx

f'

x

0

2

1

3

4

-3/4

1

5/4= 1.25

0.25

9/16=0.5625

5/2= 2.5

-9/40= 0.225

2

1.025

0.025

0.05062

41/20=2.05

-0.0247

3

1.0003

0.0003

0.0006

2.0006

-0.0002997

4

1.0000003

0.0000003

Таким чином, за 3 ітерації знайдено корінь рівняння з похибкою, що не перевищує 0,001. Для поточної задачі метод забезпечив лінійний збіг з коефіцієнтом .

Програма Root_Newton, що реалізує метод Ньютона для пошуку кореня функції f(x)=x2-1 з точністю  = 0.001 в інтервалі [0, 3] наведена нижче:

Program Root_Newton;{ пошук кореня методом дотичних }

uses CRT;

const e= 0.001; { критерiй зупину }

k: integer= 0; { номер iтерацii }

ko:integer=0; { кiлькiсть розрахункiв функцii }

a:real=0; { лiва межа iнтервалу з коренем }

b:real=3; { права межа iнтервалу з коренем }

var x, xo, { поточне та попереднс значення кореня }

fx, f1x, { значення функцii та похiдноi у точках }

dx: real; { величина уточнення кореня }

Function F(x:real):real;

Begin inc(ko); f:=x*x-1

End;

Function F1(x:real):real;

Begin f1:=2*x

End;

Function F11(x:real):real;

Begin f11:=2 ­ End;

BEGin

ClrScr;

writeln('Пошук кореня нелiнiйного рiвняння методом дотичних');

writeln(' Значення критерiю зупину: ',e:5:3);

if f(a)*f11(a)>0 then x:=a else

if f(b)*f11(b)>0 then x:=b else halt;

writeln(' k x fx dx');

repeat

xo:=x;

fx:=f(x);

write(k:2,x:9:4,fx:12:6);

f1x:=f1(x);

x:=x-fx/f1x;

dx:=abs(xo-x);

writeln(dx:10:4);

inc(k);

until dx<e;

writeln; writeln;

writeln('Розрахункiв функцii ',ko:2,'. Xm=',x:6:4,' f(Xm)=',f(x):10:6); ­

write('Натисни "Enter": '); readln

END.

Результат виконання програми Root_Newton наведено в таблиці:

Пошук кореня нелiнiйного рiвняння методом дотичних

Значення критерiю зупину: 0.001

k x fx dx

0 3.0000 8.000000 1.3333

1 1.6667 1.777778 0.5333

2 1.1333 0.284444 0.1255

3 1.0078 0.015748 0.0078

4 1.0000 0.000061 0.0000

Розрахункiв функцii 7. Xm=1.0000 f(Xm)= 0.000000

Натисни "Enter":

Таким чином, корінь з точністю 0.001 знайдено за 4 ітерації, на що потрібно лише 7 розрахунків функції.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]