По теореме Банаха последовательность приближений стремится к корню уравнения .
Геометрическая интерпретация
Основная идея метода заключается в следующем: задаётся начальное приближение вблизи предположительного корня, после чего строится касательная к графику исследуемой функции в точке приближения, для которой находится пересечение с осью абсцисс. Эта точка берётся в качестве следующего приближения. И так далее, пока не будет достигнута необходимая точность.
Пусть 1) вещественнозначная функция непрерывно дифференцируема на интервале ;
2) существует искомая точка : ;
3) существуют и такие, что
для
и
для ;
4) точка такова, что . Тогда формула итеративного приближения к
может быть выведена из геометрического смысла касательной следующим образом:
где — угол наклона касательной прямой
к графику
в точке .
Следовательно (в уравнении касательной прямой полагаем ) искомое выражение для имеет вид :
Если , то это значение можно использовать в качестве следующего приближения к
.
Если , то имеет место «перелёт» (корень лежит рядом с границей ). В этом случае надо (воспользовавшись идеей метода половинного деления) заменять
на
до тех пор, пока точка «не вернётся» в область поиска
.
Замечания. 1) Наличие непрерывной производной даёт возможность строить непрерывно меняющуюся касательную на всей области поиска решения .
2) Случаи граничного (в точке или в точке ) расположения искомого решения рассматриваются аналогичным образом.
3) С геометрической точки зрения равенство
означает, что касательная прямая к графику
в точке
-
параллельна оси
и при
не пересекается с ней в конечной части.
4) Чем больше константа и чем меньше константа из пункта 3 условий,
тем для
пересечение касательной к графику и оси ближе к точке ,
то есть тем ближе значение к искомой .
Итерационный процесс начинается с некоторого начального приближения
,
причём между
и искомой точкой
не должно быть других нулей функции
,
то есть «чем ближе
к искомому корню ,
тем лучше». Если предположения о нахождении отсутствуют, методом проб и ошибок можно сузить область возможных значений, применив теорему о промежуточных значениях.
Для предварительно заданных ,
итерационный процесс завершается если
и
.
В частности, для матрицы дисплея и могут быть рассчитаны,
исходя из масштаба отображения графика ,
то есть если и попадают в один вертикальный, а и в один горизонтальный ряд.
Алгоритм
Задается начальное приближение .
Пока не выполнено условие остановки, в качестве которого следует взять , где выполняет роль абсолютной погрешности (так как метод Ньютона является частным случаем метода простой итерации[1]), вычисляют новое приближение: .
Пример
Иллюстрация применения метода Ньютона к функции с начальным приближением в точке .
График последовательных приближений.
График сходимости.
Согласно способу практического определения скорость сходимости может быть оценена как тангенс угла наклона графика сходимости, то есть в данном случае равна двум.
Рассмотрим задачу о нахождении положительных , для которых . Эта задача может быть представлена как задача нахождения нуля функции . Имеем выражение для производной. Так как для всех и для , очевидно, что решение лежит между 0 и 1. Возьмём в качестве начального приближения значение , тогда:
Подчёркиванием отмечены верные значащие цифры. Видно, что их количество от шага к шагу растёт (приблизительно удваиваясь с каждым шагом): от 1 к 2, от 2 к 5, от 5 к 10, иллюстрируя квадратичную скорость сходимости.
Условия применения
Рассмотрим ряд примеров, указывающих на недостатки метода.
Контрпримеры
Если начальное приближение недостаточно близко к решению, то метод может не сойтись.
Пусть
Тогда
Возьмём ноль в качестве начального приближения. Первая итерация даст в качестве приближения единицу. В свою очередь, вторая снова даст ноль. Метод зациклится и решение не будет найдено. В общем случае построение последовательности приближений может быть очень запутанным.
В окрестности корня производная меняет знак при приближении к нулю справа или слева. В то время, как для .
Таким образом не ограничено вблизи корня, и метод будет расходиться, хотя функция всюду дифференцируема, её производная не равна нулю в корне, бесконечно дифференцируема везде, кроме как в корне, а её производная ограничена в окрестности корня.
Скорость сходимости полученной последовательности составляет приблизительно 4/3. Это существенно меньше, нежели 2, необходимое для квадратичной сходимости, поэтому в данном случае можно говорить лишь о линейной сходимости, хотя функция всюду непрерывно дифференцируема, производная в корне не равна нулю, и бесконечно дифференцируема везде, кроме как в корне.
Если производная в точке корня равна нулю, то скорость сходимости не будет квадратичной, а сам метод может преждевременно прекратить поиск, и дать неверное для заданной точности приближение.
Пусть
Тогда и следовательно . Таким образом сходимость метода не квадратичная, а линейная, хотя функция всюду бесконечно дифференцируема.
Ограничения
Пусть задано уравнение , где и надо найти его решение.
её первая производная равномерно отделена от нуля;
её вторая производная должна быть равномерно ограничена.
Историческая справка
Метод был описан Исааком Ньютоном в рукописи «Об анализе уравнениями бесконечных рядов» (лат.«De analysi per aequationes numero terminorum infinitas»), адресованной в 1669 годуБарроу, и в работе «Метод флюксий и бесконечные ряды» (лат.«De metodis fluxionum et serierum infinitarum») или «Аналитическая геометрия» (лат.«Geometria analytica») в собраниях трудов Ньютона, которая была написана в 1671 году. В своих работах Ньютон вводит такие понятия, как разложение функции в ряд, бесконечно малые и флюксии (производные в нынешнем понимании). Указанные работы были изданы значительно позднее: первая вышла в свет в 1711 году благодаря Уильяму Джонсону, вторая была издана Джоном Кользоном в 1736 году уже после смерти создателя. Однако описание метода существенно отличалось от его нынешнего изложения: Ньютон применял свой метод исключительно к полиномам. Он вычислял не последовательные приближения , а последовательность полиномов и в результате получал приближённое решение .
Этот же метод применён Ньютоном в его трактате "Математические начала" для решения уравнения Кеплера, где Ньютон предложил вполне современную аналитическую форму вычисления, записав последовательность приближений в виде переразлагаемого в каждой новой точке аналитического ряда:
ряд ... сходится настолько быстро, что едва ли когда-нибудь понадобится идти в нём далее второго члена ...
Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 годуДжозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат.«Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений с использованием производной в том виде, в котором он излагается здесь. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.
В 1879 годуАртур Кэли в работе «Проблема комплексных чисел Ньютона — Фурье» (англ.«The Newton-Fourier imaginary problem») был первым, кто отметил трудности в обобщении метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов.
Обобщения и модификации
Метод секущих
Родственный метод секущих является «приближённым» методом Ньютона и позволяет не вычислять производную. Значение производной в итерационной формуле заменяется её оценкой по двум предыдущим точкам итераций:
.
Таким образом, основная формула имеет вид
Этот метод схож с методом Ньютона, но имеет немного меньшую скорость сходимости. Порядок сходимости метода равен золотому сечению — 1,618…
Замечания. 1) Для начала итерационного процесса требуются два различных значения
и
.
2) В отличие от «настоящего метода Ньютона» (метода касательных), требующего хранить только
(и в ходе вычислений — временно и ),
для метода секущих требуется сохранение
,
,
,
.
3) Применяется, если вычисление затруднено
(например, требует большого количества машинных ресурсов: времени и/или памяти).
Метод одной касательной
В целях уменьшения числа обращений к значениям производной функции применяют так называемый метод одной касательной.
Формула итераций этого метода имеет вид:
Суть метода заключается в том, чтобы вычислять производную лишь один раз, в точке начального приближения , а затем использовать это значение на каждой последующей итерации:
При таком выборе в точке выполнено равенство:
и если отрезок, на котором предполагается наличие корня и выбрано начальное приближение , достаточно мал, а производная непрерывна, то значение будет не сильно отличаться от и, следовательно, график пройдёт почти горизонтально, пересекая прямую , что в свою очередь обеспечит быструю сходимостьпоследовательности точек приближений к корню.
Этот метод является частным случаем метода простой итерации. Он имеет линейный порядок сходимости.
Метод Ньютона-Фурье
Метод Ньютона-Фурье - это расширение метода Ньютона, выведенное Жозефом Фурье для получения оценок на абсолютную ошибку аппроксимации корня, в то же время обеспечивая квадратичную сходимость с обеих сторон.
Предположим, что f(x) дважды непрерывно дифференцируема на отрезке
Пусть
которое выражает обычный метод Ньютона, как описано выше. Затем определим
где знаменатель равен
,
таким образом, расстояние между xn и zn уменьшается квадратичным образом.
Многомерный случай
Обобщим полученный результат на многомерный случай.
Пусть необходимо найти решение системы:
Выбирая некоторое начальное значение , последовательные приближения находят путём решения систем уравнений:
В более удобном итеративном виде это выражение выглядит так:
В случае квадратичной функции метод Ньютона находит экстремум за одну итерацию.
Нахождение матрицы Гессе связано с большими вычислительными затратами, и зачастую не представляется возможным. В таких случаях альтернативой могут служить квазиньютоновские методы, в которых приближение матрицы Гессе строится в процессе накопления информации о кривизне функции. Также можно использовать метод коллинеарных градиентов, метод первого порядка, который может приблизительно (но с высокой точностью) находить шаги метода Ньютона.
Метод Ньютона — Рафсона
Метод Ньютона — Рафсона является улучшением метода Ньютона нахождения экстремума, описанного выше. Основное отличие заключается в том, что на очередной итерации каким-либо из методов одномерной оптимизации выбирается оптимальный шаг:
где
Для оптимизации вычислений применяют следующее улучшение: вместо того, чтобы на каждой итерации заново вычислять гессианцелевой функции, ограничиваются начальным приближением и обновляют его лишь раз в шагов, либо не обновляют вовсе.
Применительно к задачам о наименьших квадратах
На практике часто встречаются задачи, в которых требуется произвести настройку свободных параметров объекта или подогнать математическую модель под реальные данные. В этих случаях появляются задачи о наименьших квадратах:
где — матрица Якоби вектор-функции , — матрица Гессе для её компоненты .
Тогда очередной шаг определяется из системы:
Метод Гаусса — Ньютона
Метод Гаусса — Ньютона строится на предположении о том, что слагаемое доминирует над . Это требование не соблюдается, если минимальные невязки велики, то есть если норма сравнима с максимальным собственным значением матрицы . В противном случае можно записать:
Таким образом, когда норма близка к нулю, а матрица имеет полный столбцевой ранг, шаг мало отличается от ньютоновского (с учётом ), и метод может достигать квадратичной скорости сходимости, хотя вторые производные и не учитываются. Улучшением метода является алгоритм Левенберга — Марквардта, основанный на эвристических соображениях.
Обобщение на комплексную плоскость
До сих пор в описании метода использовались функции, осуществляющие отображения в пределах множествавещественных значений. Однако метод может быть применён и для нахождения нуля функции комплексной переменной. При этом процедура остаётся неизменной:
Особый интерес представляет выбор начального приближения . Ввиду того, что функция может иметь несколько нулей, в различных случаях метод может сходиться к различным значениям, и вполне естественно возникает желание выяснить, какие области обеспечат сходимость к тому или иному корню. Этот вопрос заинтересовал Артура Кэли ещё в 1879 году, однако разрешить его смогли лишь в 70-х годах двадцатого столетия с появлением вычислительной техники. Оказалось, что на пересечениях этих областей (их принято называть областями притяжения) образуются так называемые фракталы — бесконечные самоподобные геометрические фигуры.
Ввиду того, что Ньютон применял свой метод исключительно к полиномам, фракталы, образованные в результате такого применения, обрели название фракталов Ньютона или бассейнов Ньютона.
typeTfunc=function(x:Double):Double;// вычисляемая функцияfunctionfx(x:Double):Double;beginResult:=x*x-17;end;// производная функция от f(x)functiondfx(x:Double):Double;beginResult:=2*x;end;functionsolve(fx,dfx:TFunc;x0:Double):Double;consteps=0.000001;varx1:Double;beginx1:=x0-fx(x0)/dfx(x0);// первое приближениеwhile(Abs(x1-x0)>eps)dobegin// пока не достигнута точность 0.000001x0:=x1;x1:=x1-fx(x1)/dfx(x1);// последующие приближенияend;Result:=x1;end;// Вызовsolve(fx,dfx,4);
C++
#include<iostream>#include<cmath>constexprdoubleeps=0.000001;doublefx(doublex){returnx*x-17;}// вычисляемая функцияdoubledfx(doublex){return2*x;}// производная функцииusingfunction=double(*)(doublex);// задание типа functiondoublesolve(functionfx,functiondfx,doublex0){doublex1=x0-fx(x0)/dfx(x0);// первое приближениеwhile(fabs(x1-x0)>eps){// пока не достигнута точность 0.000001x0=x1;x1=x0-fx(x0)/dfx(x0);// последующие приближения}returnx1;}intmain(){std::cout<<solve(fx,dfx,4)<<"\n";// вывод на экранreturn0;}
importData.List(iterate')main::IO()main=print$solve(\x->x*x-17)(*2)4-- Функция solve универсальна для всех вещественных типов значения которых можно сравнивать.solve=esolve0.000001esolveepsilonfuncderivx0=fst.head$dropWhilepredpairswherepred(xn,xn1)=(abs$xn-xn1)>epsilon-- Функция pred определяет достигнута ли необходимая точность.nextxn=xn-funcxn/derivxn-- Функция next вычисляет новое приближение.iters=iterate'nextx0-- Бесконечный список итераций.pairs=zipiters(tailiters)-- Бесконечный список пар итераций вида: [(x0, x1), (x1, x2) ..].
Fortran
! Main programREAL*8::Xbeg,F,D1F,error! Имена переменных в главной программе и подпрограмме могут отличаться INTEGER Niter,Ncalc! Xbeg - начальное значение, F - функция, D1F - её производная, error - остаточная ошибка***! Niter - заданное число итераций, Ncalc - число выполненных итераций до достижения погрешностиCALL NEWTON(Xbeg,Niter,F,D1F,Ncalc,error)***C======================================================SUBROUTINE NEWTON(X0,Nmax,Func,D1Func,Nevl,rer)! Простейший вариант устойчиво работающей программы для нахождения корня без второй производной REAL*8::X0,X1,XB,q,Func,D1Func,rer,eps! Итог вычисления будет записан в переменную Х0INTEGER Nmax,NevlIF(Nmax*(1000-Nmax).LE.0)Nmax=1000! Защита от дуракаNevl=1;XB=X0DO I=1,NmaxIF(Func(X0).EQ.0.)EXIT IF(D1Func(X0).EQ.0.)THEN Print*,'Error from NEWTON: D1Func=',D1Func(X0),' X=',X0,' I=',IEXIT END IF X1=X0-Func(X0)/D1Func(X0)q=abs(D1Func(X0));q=abs(1.-q)/qeps=MAX(rer,epsilon(X0))! epsilon(X0) - машинная точность; выбирается, если rer=0.IF(abs(X0-X1).LE.q*eps)EXITX0=X1END DO IF(abs(Func(X0)).GE.abs(Func(XB)))PAUSE'Error from NEWTON: Change the X0!'If(I.ne.Nmax+1)Nevl=IIf(I.eq.Nmax+1)Nevl=NmaxEND SUBROUTINE
PascalABC.Net
##functionsolve(fx:real->real;dfx:real->real;x0:real):real;consteps=10e-12;beginvarx1:=x0-fx(x0)/dfx(x0);// первое приближениеwhile(Abs(x1-x0)>eps)do// пока не достигнута точность (x0,x1):=(x1,x1-fx(x1)/dfx(x1));// последующие приближенияResult:=x1;end;print(solve(x->x*x-17,x->2*x,4));//Вызов функции и вывод.
Литература
Акулич И. Л. Математическое программирование в примерах и задачах : Учеб. пособие для студентов эконом. спец. вузов. — М. : Высшая школа, 1986. — 319 с. : ил. — ББК22.1 А44. — УДК517.8(G).
Амосов А. А., Дубинский Ю. А., Копченова Н. П. Вычислительные методы для инженеров : Учеб. пособие. — М. : Высшая школа, 1994. — 544 с. : ил. — ББК32.97 А62. — УДК683.1(G). — ISBN 5-06-000625-5.
Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М. : Лаборатория Базовых Знаний, 2000.
Вавилов С. И.Исаак Ньютон. — М. : Изд. АН СССР, 1945.
Волков Е. А. Численные методы. — М. : Физматлит, 2003.
Гилл Ф., Мюррей У., Райт М. Практическая оптимизация. Пер. с англ. — М. : Мир, 1985.
Корн Г., Корн Т. Справочник по математике для научных работников и инженеров. — М. : Наука, 1970. — С. 575—576.
Коршунов Ю. М., Коршунов Ю. М. Математические основы кибернетики. — Энергоатомиздат, 1972.
Максимов Ю. А.,Филлиповская Е. А. Алгоритмы решения задач нелинейного программирования. — М. : МИФИ, 1982.
Морозов А. Д. Введение в теорию фракталов. — МИФИ, 2002.
Исаак Ньютон.Книга I. О движении тел. Отдел VI. Об определении движения по заданным орбитам // Математические начала натуральной философии (рус.) / перевод с латинского и комментарии А.Н. Крылова, под редакцией Л.С. Полака. — Москва: URSS, 2017. — С. 156-158. — ISBN 978-5-9710-4231-0.