Уровень алгоритма

Участник:Oleggium/Метод Ньютона для решения систем нелинейных уравнений(2)

Материал из Алговики
Перейти к навигации Перейти к поиску


Метод Ньютона
Последовательный алгоритм
Последовательная сложность [math]\displaystyle{ O(n^3) }[/math]
Объём входных данных [math]\displaystyle{ 2n+1 }[/math]
Объём выходных данных [math]\displaystyle{ n }[/math]

Авторы: Гирняк О.Р., Васильков Д.А.

Свойства и структура алгоритма

Общее описание алгоритма

Метод Ньютона для решение систем нелинейных уравнений - обобщение классического метода Ньютона (метода касательных) нахождения корня (нуля) заданной функции. Однормерный метод был впервые предложен английским физиком, математиком и астрономом Исааком Ньютоном (1643—1727). Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации.

Впервые метод был опубликован в трактате «Алгебра» Джона Валлиса в 1685 году, по просьбе которого он был кратко описан самим Ньютоном. В 1690 году Джозеф Рафсон опубликовал упрощённое описание в работе «Общий анализ уравнений» (лат. «Analysis aequationum universalis»). Рафсон рассматривал метод Ньютона как чисто алгебраический и ограничил его применение полиномами, однако при этом он описал метод на основе последовательных приближений [math]\displaystyle{ x_{n} }[/math] вместо более трудной для понимания последовательности полиномов, использованной Ньютоном. Наконец, в 1740 году метод Ньютона был описан Томасом Симпсоном как итеративный метод первого порядка решения нелинейных уравнений с использованием производной в том виде, в котором он излагается здесь. В той же публикации Симпсон обобщил метод на случай системы из двух уравнений и отметил, что метод Ньютона также может быть применён для решения задач оптимизации путём нахождения нуля производной или градиента.

Математическое описание алгоритма

Рассмотрим систему нелинейных уравнений

[math]\displaystyle{ F(x) = 0, F(x), x \in \mathbb{R}^{n}, (1) }[/math]

и предположим, что существует вектор [math]\displaystyle{ \bar{x} \in D \subset \mathbb{R}^{n} }[/math], являющийся решением системы (1).

Будем считать, что [math]\displaystyle{ F(x) = (f_1(x), f_2(x), ... f_n(x))^T }[/math], причем [math]\displaystyle{ f_i(\cdot) \in C^1(D) \forall i }[/math]


Разложим [math]\displaystyle{ F(x) }[/math] в окрестности точки [math]\displaystyle{ \bar{x}: F(x) = F(x^0) + F'(x^0)(x-x^0) + o(||x-x^0||) }[/math].

Здесь [math]\displaystyle{ F'(x) = \frac{\partial{F(x)}}{\partial{x}} = \begin{pmatrix} \frac{\partial{f_1(x_1)}}{\partial{x_1}} & \frac{\partial{f_1(x_2)}}{\partial{x_2}} & \cdots & \frac{\partial{f_1(x_n)}}{\partial{x_n}}\\ \frac{\partial{f_2(x_1)}}{\partial{x_1}} & \frac{\partial{f_2(x_2)}}{\partial{x_2}} & \cdots & \frac{\partial{f_2(x_n)}}{\partial{x_n}}\\ \vdots & \vdots & \ddots & \vdots\\ \frac{\partial{f_n(x_1)}}{\partial{x_1}} & \frac{\partial{f_n(x_2)}}{\partial{x_2}} & \cdots & \frac{\partial{f_n(x_n)}}{\partial{x_n}} \end{pmatrix} }[/math]

называется матрицей Якоби, а её определитель – якобианом системы (1).

Исходное уравнение заменим следующим: [math]\displaystyle{ F(x^0) + F'(x^0)(x-x^0) = 0 }[/math]. Считая матрицу Якоби [math]\displaystyle{ F'(x^0) }[/math] неособой, разрешим это уравнение относительно [math]\displaystyle{ x: x = x^0 - [F'(x)]^{-1}F(x^0) }[/math]. И вообще положим

[math]\displaystyle{ x^{k+1} = x^{k} - [F'(x^k)]^{-1}F(x^k) }[/math].

При сделанных относительно [math]\displaystyle{ F(\cdot) }[/math] предположениях имеет место сходимость последовательности [math]\displaystyle{ x^{k} }[/math] к решению системы со скоростью геометрической прогрессии при условии, что начальное приближение [math]\displaystyle{ x^0 }[/math] выбрано из достаточно малой окрестности решения [math]\displaystyle{ \bar{x} }[/math].

При дополнительном предположении [math]\displaystyle{ F(\cdot) \in C^2 }[/math] имеет место квадратичная сходимость метода, т.е.

[math]\displaystyle{ ||x^{k+1}-\bar{x}|| \le \omega||x^{k}-\bar{x}||^2 }[/math].

Сформулируем теорему.

Теорема. Пусть в некоторой окрестности решения [math]\displaystyle{ \bar{x} }[/math] системы (1) функции [math]\displaystyle{ f_i(\cdot) \in C^2 }[/math] и якобиан системы отличен от нуля в этой окрестности. Тогда существует [math]\displaystyle{ \delta }[/math]-окрестность точки [math]\displaystyle{ \bar{x} }[/math] такая, что при любом выборе начального приближения [math]\displaystyle{ x^0 }[/math] из этой окрестности последовательность [math]\displaystyle{ {x_k} }[/math] не выходит из неё и имеет место квадратичная сходимость этой последовательности.

Замечание 1. В качестве критерия окончания процесса итераций обычно берут условие: [math]\displaystyle{ ||x^{k+1}-x^k|| \lt \varepsilon }[/math].

Замечание 2. Сложность метода Ньютона – в обращении матрицы Якоби. Вводя обозначение [math]\displaystyle{ \Delta x^k = x^{k+1}-x^k }[/math], получаем для вычисления [math]\displaystyle{ \Delta x^k }[/math] СЛАУ

[math]\displaystyle{ \frac{\partial F(x^k)}{\partial x} \cdot \Delta x^k = -F(x^k) }[/math],

откуда и находим искомую поправку [math]\displaystyle{ \Delta x^k }[/math], а затем и следующее приближение [math]\displaystyle{ x^{k+1} = x^k + \Delta x }[/math] к решению [math]\displaystyle{ \bar{x} }[/math]. Очевидно, что это значительно сокращает количество арифметических операций для построения очередного приближения.

Замечание 3. Начиная с некоторого шага [math]\displaystyle{ k_0 }[/math] решают стационарную СЛАУ

[math]\displaystyle{ \frac{\partial F(x^{k_0})}{\partial x} \cdot \Delta x^k = -F(x^k) }[/math],

Данное видоизменение носит название модифицированный метод Ньютона.

Замечание 4. (О выборе начального приближения). Пусть вектор-функция [math]\displaystyle{ \Phi(\lambda, x) }[/math] такова, что [math]\displaystyle{ \Phi(1, x) = F(x) }[/math], а система [math]\displaystyle{ \Phi(0, x) = 0 }[/math] может быть решена. Тогда разбивая [math]\displaystyle{ [0,1] }[/math] на [math]\displaystyle{ N }[/math] частей решают методом Ньютона набор из [math]\displaystyle{ N }[/math] систем [math]\displaystyle{ \Phi(i/N, x) = F(x), i = 1,... N }[/math], принимая для каждой следующей системы в качестве начального приближения решение предыдущей системы.

Вычислительное ядро алгоритма

Макроструктура алгоритма

Схема реализации последовательного алгоритма

Последовательная сложность алгоритма

Информационный граф

Ресурс параллелизма алгоритма

Входные и выходные данные алгоритма

Свойства алгоритма

Программная реализация алгоритма

Масштабируемость алгоритма и его реализации

Существующие реализации алгоритма

Литература