В отличие от метода половинного деления, для определения интервала, в котором заключён корень, не требуется находить значения функции с противоположными знаками. Вместо интерполяции по двум значениям функции, в методе Ньютона осуществляется экстраполяция с помощью касательной к кривой в данной точке. В основе метода лежит разложение функции f(x) в ряд Тейлора:
Члены ряда, содержащие h во второй и более высоких степенях, отбрасываются; используется соотношение xn+h=xn+1. Предполагается, что переход от xn к xn+1 приближает значение функции к нулю так, что f(xn+h)=0. Тогда xn+1=xn - f(xn)/ f`¢(xn).
Значение xn+1 соответствует точке, в которой касательная к кривой в точке xn пересекает ось x. Так как кривая f(x) отлична от прямой, то значение функции f(xn+1) не будет в точности равно нулю. Поэтому вся процедура повторяется, причём вместо xn используется xn+1. Счет прекращается, когда разница между xn к xn+1 будет меньше или равна числу e, т.е. ½ xn- xn+1½£e.
Рис. 16.3. процесс решения уравнения методом Ньютона
На рис. 16.3. процесс решения уравнения методом Ньютона, который ёще называют методом касательных, показан графически.
Пример 2. Приведём фрагменты текста программы, которая решает задачу из примера 1 методом касательных. Ввод и вывод результатов подробно разобран выше.
Program Kasat;
Uses Crt, Printer;
Var
a,b,t,x,eps:real;
Function f(x:real):real;
begin
{ Здесь приводим выражение для вычисления функции }
f:=x*x*x+x*x+x+1;
end;
Function f1(x:real):real;
begin
{ Здесь приводим выражение для производной функции }
f:=3*x*x+2*x+1;
end;
Begin
ClrScr;
Writeln(' Решение уравнения методом касательных');
{ Ввод исходных данных }
a:=-2; b:=1; eps:=0.001;
{ Начинаем расчет }
x:=a;
Repeat
t:=f(x)/f1(x);
x:=x-t;
Until abs(t)<=eps;
Writeln(' Уравнение имеет корень x = ', x:10:8);
Readln;
End.
Метод Ньютона требует меньшего числа повторений, чем метод половинного деления. Недостатки метода – необходимость дифференцирования функции f(x), и f(x) не должно быть равно нулю.