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

Участник:MukhayevD/Метод Ньютона

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



Содержание

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

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

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

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

Пусть [math] x_n [/math] - некоторое приближение к корню уравнения [math] f(x) = 0, f \in C^1 [/math], то следующее приближение определяется как корень касательной к функции [math] f(x) [/math], проведенной в точке [math] x_n [/math].

Уравнение касательной к функции [math] f(x) [/math] в точке [math] x_n [/math] имеет вид: [math] f^'(x_n) = (y - f(x_n))/(x - x_n) [/math] В уравнении касательной положим [math] y = 0 [/math] и [math] x = x_{n+1} [/math]. Тогда алгоритм последовательных вычислений в методе Ньютона состоит в следующем: [math] x_{n+1} = x_n - f(x_n)/f^'(x_n) [/math] Сходимость метода касательных квадратичная, порядок сходимости равен 2.

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

Основная вычислительная нагрузка алгоритма заключается в нахождении [math] \varphi(x_n) = f(x_n)/f^'(x_n) [/math], которая в последствии используется для нахождения [math] x_{n+1} = x_n - \varphi(x_n) [/math]

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

Как и было описано в описании ядра алгоритма, основную часть метода составляет вычисление значения функции [math] f(x_n) [/math] и ее производной [math] f^'(x_n) [/math] в точке x_n.

[math] f(x_n) = \sum_{i=0}^{n}f_ix_n^i [/math]

[math] f^'(x_n) = \sum_{i=0}^{n-1}f^'_ix_n^i [/math]


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

Последовательность исполнения метода следующая:

1. Выбираем начальное приближение [math] x_0 [/math]

2. Находим значение функции [math] f(x_n) [/math] в точке x_n.

3. Находим значение производной функции [math] f^'(x_n) [/math] в точке x_n.

4. Получаем следующий шаг итерации [math] x_{n+1} [/math]

[math] x_{n+1} = x_n - f(x_n)/f^'(x+n) [/math]

5. Находим погрешность [math] e = |x_{n+1} - x_n| [/math]

6. Если погрешность не превышает некоторого заранее заданного числа - останавливаемся.

[math] e \lt \varepsilon [/math]

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

Для вычисления корня методом Ньютона при последовательном выполнении требуется:

  • [math] n [/math] сложение + [math] n [/math] умножений + [math] n-1 [/math] умножений (возведение в степень)
  • [math] n-1 [/math] сложение + [math] n-1 [/math] умножений + [math] n-2 [/math] умножений (возведение в степень)
  • одно вычитание и одно деление
  • одно вычитание

Следовательно для одного шага алгоритма требуется:

  • [math] 2n-1 [/math] сложение (вычитание)
  • [math] 4n-3 [/math] умножений (делений)

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

На рисунке ниже изображена структура информационного графа алгоритма. Блок IN представляет собой выбор начального приближения, блок IT - итерацию алгоритма, блок OUT - концу работы алгоритма.

Файл:MNP1.png
Рисунок 1. Информационный граф

Как видно, алгоритм строго последовательный. Ниже подробнее рассмотрено как можно разделить нагрузку связанную с вычислениями [math] f(x) [/math] между процессорами. Каждое слагаемое полинома считается отдельно.

Файл:MNP2.png
Рисунок 2. Итерация

Аналогично для [math] f^'(x) [/math].

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

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

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

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

2.1 Особенности реализации последовательного алгоритма

2.2 Локальность данных и вычислений

2.3 Возможные способы и особенности параллельной реализации алгоритма

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

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

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

2.5 Динамические характеристики и эффективность реализации алгоритма

2.6 Выводы для классов архитектур

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

3 Литература

<references \>