Метод касательных решения нелинейных уравнений

Так как f '(x) № 0, то запишем уравнение f (x) = 0 в виде :

x = x — (f (x) / f '(x)) (1)

Решая его методом итераций можем записать :

xn+1 = x n— (f (x n) / f '(x n)) (2)

Если на отрезке [a;b] f '(x) * f «(x) > 0, то нул — евое приближение выбираем x0=a. Рассмотрим геометрический смысл метода. Рассмотрим график функции y=f (x). Пусть для определенности f ‘(x) > 0 и f «(x) > 0 (рис. 1). Проведем касательную к графику функции в точке B (b, f (b)). Ее уравнение будет иметь вид :

y = f (b) + f '(b) * (x — b)

Полагая в уравнении y = 0 и учитывая что f '(x) № 0, решаем его относительно x. Получим :

x = b — (f (b) /f ‘(b))

Нашли абсциссу x1 точки c1 пересечения касательной с осью ox :

x1 = b — (f (b) — f ' (b))

Проведем касательную к графику функции в точке b1 (x1; f (x1)).Найдем абсциссу x2 точки с2 пересечения касательной с осью Ox:

x2 = x1 — (f (x1) / (f '(x1))

Вообще :

xk+1 = x k — (f (x k) / f '(x k)) (3)

Таким образом, формула (3) дает последовательные приближения (xk) корня, получаемые из уравнения касательной, проведенной к графику функции в точке b k (x k; f (x k0) метод уточнения корня c [a;b] уравнения f (x) = 0 с помощью формулы (3) называется методом касательной или методом Ньютона.

Геометрический смысл метода касательных состоит в замене дуги y = f (x) касательной, одной к одной из крайних точек. Начальное приближение x 0 = a или x0 = b брать таким, чтобы вся последовательность приближения х k принадлежала интервалу ]a;b[. В случае существования производных f ', f «, сохраняющих свои знаки в интервале, за х0 берется тот конец отрезка [a;b], для которого выполняется условие f '(х0) * f (х0) > 0. Для оценки приближения используется общая формула :

|c-x k-1 | Ј | f (x k+1)/m|, где m = min f '(x) на отрезке [a;b] .

На практике проще пользоваться другим правилом:

Если на отрезке [a;b] выполняется условие 0 < m < | f (x)| и e — заданная точность решения, то неравенство | x k+1-x k| Ј e влечет выполнение неравенства |c-x k-1| Ј e .

В этом случае процесс последовательного приближения продолжают до тех пор, пока не выполнится неравенство :

|c-x k-1| Ј e .

2. Решение нелинейного уравнения аналитически

Определим корни уравнения х3 + 0,1х2 + 0,4х — 1,2 = 0 аналитически. Находим: f (x) = х3 + 0,1х2 + 0,4х — 1,2

f ‘ (x) = 3х2 + 0,1х + 0,4

f (-1) = -2,5 < 0 f (0) = -1,2 < 0 f (+1) = 0,3 > 0

x

— Ґ

-1

0

+1

+ Ґ

sign f (x)

-

-

-

+

+

Следовательно, уравнение имеет действительный корень, лежащий в промежутке [ 0; +1 ].

Приведем уравнение к виду x = j (x), так, чтобы | j ‘ (x) | <1 при 0 Ј x Ј +1.

Так как max | f '(x) | = f '(+1) = 3 + 0,1 + 0,4 = 3,5 то можно взять R = 2.

Тогда j (x) = x — (f (x) / R) = x — 0,5 х3 — 0,05 х2 — 0,2 х + 0,6 = - 0,5 х3 — 0,05 х2 + 0,8 х + 0,6.

Пусть х0 = 0, тогда х n+1 = j (х n).

Вычисления расположим в таблице.

n

хn

х2n

х3n

j (хn).

f (x)

1

1

1

1

0,85

-0,17 363

2

0,85

0,7225

0,614 125

0,9 368 125

0,8 465

3

0,9 368 125

0,87 761 766

0,822 163 194

0,89 448 752

-0,4 651

4

0,89 448 752

0,800 107 923

0,715 686 552

0,917 741 344

0,24 288

5

0,917 741 344

0,842 249 174

0,772 966 889

0,905 597 172

-0,1 306

6

0,905 597 172

0,820 106 238

0,74 268 589

0,912 129 481

0,6 923

7

0,912 129 481

0,83 198 019

0,758 873 659

0,908 667 746

-0,0037

8

0,908 667 746

0,825 677 072

0,750 266 124

0,910 517 281

0,1 968

9

0,910 517 281

0,829 041 719

0,754 856 812

0,909 533 333

-0,105

10

0,909 533 333

0,827 250 884

0,752 412 253

0,910 057 995

0,559

11

0,910 057 995

0,828 205 555

0,753 715 087

0,909 778 575

-0,0003

12

0,909 778 575

0,827 697 055

0,753 021 048

0,909 927 483

0,159

13

0,909 927 483

0,827 968 025

0,753 390 861

0,909 848 155

-8,5E-05

14

0,909 848 155

0,827 823 665

0,753 193 834

0,909 890 424

4,5E-05

15

0,909 890 424

0,827 900 583

0,753 298 812

0,909 867 904

-2,4E-05

16

0,909 867 904

0,827 859 602

0,753 242 881

0,909 879 902

1,28E-05

17

0,909 879 902

0,827 881 437

0,753 272 681

0,90 987 351

-6,8E-06

18

0,90 987 351

0,827 869 803

0,753 256 804

0,909 876 916

3,63E-06

19

0,909 876 916

0,827 876 002

0,753 265 263

0,909 875 101

-1,9E-06

20

0,909 875 101

0,827 872 699

0,753 260 756

0,909 876 068

1,03E-06

График функции y = х3 + 0,1х2 + 0,4х — 1,2

3. Блок схема программы

4. Программа на языке PASCAL 7.0

program metod_kasatel;{Название программы}

uses Crt; {Модуль дисплейных функций}

var {Блок описаний переменных}

xn, xn1, a, b, c, mx, y0, x0 :real;

function f1(x1:Real): Real; {Основная функция}

begin

f1 := x1*x1*x1*(-0.5)-0.05*x1*x1+0.8*x1+0.6;

end;

function f2(x4:Real): Real; {Производная от основной функции}

begin

f2 := x4*x4*x4+0.5*x4*x4+0.1*x4*x4+0.4*x4−1.2;

end;

begin {Начало основного тела программы}

Clrscr; {Очистка экрана перед выполнением программы}

a:=0;b:=1;c:=0.1;

Writeln(' От A=', a,' до B=', b); {Вывод на экран}

Writeln(' Погрешность с=', c);

Readln; { Ожидание нажатия клавиши Enter}

xn:=b;

xn1:= f1(xn);

y0:=f2(b);

whileABS(y0)>c do {Проверка по точности вычисления корня}

begin {Тело цикла}

xn:=xn1;

xn1:=f1(xn);

y0:= f2(xn1);

{Печать промежуточного результата}

Writeln('xn=', xn,' xn+1=', xn1,' f (xn+1)=', y0);

Readln; { Ожидание нажатия клавиши Enter}

end; {Конец тела цикла}

Writeln('Конечные значения'); {Печать полученного результата}

Writeln(' xn+1=', xn1,' f (xn+1)=', y0);

Readln; { Ожидание нажатия клавиши Enter}

end. {Конец основного тела программы}

5. Результаты выполнения программы

От A= 0.00E+00 до B= 1.00E+00

Погрешность с= 1.00E-08

От A= 0.00E+00 до B= 1.00E+00

Погрешность с= 1.00E-08

xn= 8.500 000 0000E-01 xn+1= 9.368 125 0000E-01 f (xn+1)= 8.464 996 0270E-02

xn= 9.368 125 0000E-01 xn+1= 8.944 875 1986E-01 f (xn+1)=-4.650 764 7892E-02

xn= 8.944 875 1986E-01 xn+1= 9.177 413 4381E-01 f (xn+1)= 2.428 834 3840E-02