Лекция: Модифицированный метод Ньютона
Аналогично методу Ньютона:
#include <stdio.h>
#include <math.h>
main()
{
int n=1;
float x,y,z,x0=-0.1,c=-0.1,eps=0.001, d=0.01;
x=x0;
clrscr();
do
{
y=x-(2*sin (x) — x + 0.4)/(2*cos(x0)-1); z=x;
printf("%d %.4f %.4f %.4f %.4f\n",n++,x,y,fabs(y-x), fabs(2*sin (y) — y + 0.4));
x=y;
}
while(fabs(z-x)>eps || fabs(2*sin (x) — x + 0.4)>d);
getch();
}
Решение: в результате решения нелинейного уравнения (1) на указанном отрезке тремя методами при начальном приближении с точностью и получены следующие результаты: методом простых итераций; методом Ньютона; модифицированным методом Ньютона (при этом получено менее точное значение чем в методе Ньютона).
Ниже представлены таблицы результатов:
Таблица 1. Метод простых итераций
n | ||||
-0.1000 | -0.1300 | 0.0300 | 0.2707 | |
-0.1300 | -0.1571 | 0.0271 | 0.2442 | |
… | … | … | … | … |
-0.4125 | -0.4136 | 0.0011 | 0.0098 | |
-0.4136 | -0.4146 | 0.0010 | 0.0090 |
Таблица 2. Метод Ньютона
n | |||
-0.1000 | -0.4034 | 0.3034 | 0.0183 |
-0.4034 | -0.4252 | 0.0218 | 0.0002 |
-0.4252 | -0.4254 | 0.0002 | 0.0000 |
Таблица 3. Модифицированный метод Ньютона
n | |||
-0.1000 | -0.4034 | 0.3034 | 0.0183 |
-0.4034 | -0.4219 | 0.0185 | 0.0029 |
-0.4219 | -0.4248 | 0.0030 | 0.0005 |
-0.4248 | -0.4253 | 0.0005 | 0.0001 |
Выводы:
1. Метод простых итераций является универсальным, самоисправляющимся (любая ошибка на каком-либо шаге итерации не отразится на результате, только на количестве операций) и простым для реализации на ЭВМ. Но является более трудоёмким и, если начальное приближение выбрано достаточно далеко от корня, то число итераций возрастает.
2. Метод Ньютона обладает более высокой скоростью сходимости и имеет единую итерационную формулу, но не при любом начальном приближении процесс сходится.
3. Применение модифицированного метода Ньютона позволяет избежать этих трудностей.