Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Численные Методы (часть 1).doc
Скачиваний:
13
Добавлен:
14.11.2019
Размер:
654.85 Кб
Скачать

1.5. Метод простых итераций.

Поясним его с помощью графиков. Имеем нелинейное уравнение f(x) = 0 . Представим его в виде x=f1(x). Для этого уравнения легко получить графическое решение.

рис.1.3 рис.1.4

Левая часть уравнения рассматривается как y=x , а правая y=f1(x). Решение x* - точка пересечения прямой и кривой.

Задавая начальное значение x0, определяем y=f1(x0), переходим на прямую, определяя по значению y значение x и т. д.. На рис 1.3 процесс итераций сходится, а на рис 1.4 – расходится. Для иных вариантов расположения кривых показаны рис. 1.5 и 1.6. Точно также наблюдаем, что на рис.1.5 итерации сходятся, а на рис. 1.6 – расходятся.

рис.1.5 рис. 1.6

Алгоритм метода простых итераций в общем виде запишется так:

Задавая необходимую точность ε определения корня уравнения, можно завершить процесс итераций. Обычно . Легко увидеть, что благоприятный результат имеет место, если производная от y1 по модулю .

Идея итераций используется также для решения иных типов уравнений.

Задание для самостоятельной работы:

Реализовать на МATLAB решение нелинейных уравнений методом итераций

а) x-xcosx=0;

б) x-e-x =0;

в) x-x 2-x=0;

г) 1- x + x2/4=0;

д)Доказать эквивалентность алгоритмов метода Ньютона и метода итераций.

Требуется составить программы, определить диапазон существования решения и построить графики.

Отдельные корни можно найти с помощью стандартной функции МATLAB x=fzero('sin(x)-x.^2.*cos(x)',-5). Уравнение записывается в кавычках, а далее начальное приближение. Вместо начального приближения можно записать в скобках [-5,-3] диапазон, в котором следует определить корень. Кроме того, вместо выражения в кавычках можно записать имя любого .m файла, в котором записано уравнение. Особенностью оператора fzero является то, что он позволяет определять только те корни, в которых функция меняет знак.

Приведем простой способ построения графика произвольной функции с помощью стандартного оператора ezplot:

ezplot(‘ x-2*x.*sin(x)’). После выражения в кавычках можно указать, через запятую, желаемый диапазон построения функции [-6 0].

1.6. Метод деления отрезка пополам (метод дихотомии).

К этому методу может прийти любой человек, который имеет опыт вычислительной работы. Если функция на концах интервала [a,b] имеет разные знаки f(a)*f(b)<0, то определяем точку c=0.5*(a+b) и проверяем знаки функций в точках a и c , b и c. Переходим к паре точек, где знаки разные и т.д. Процесс итераций окончен, если заданная точность по определению корня достигнута |b-a|< ε1. Можно использовать также заданную точность по значению функции в точке c: | f(c)| < ε2. Проиллюстрируем алгоритм на рис 1.7 и 1.8.

рис. 1.7 рис.1.8

Метод позволяет оценить скорость сходимости решения. Обозначим два последующих приближения xi и xi+1. Запишем очевидное соотношение . Можно утверждать, что метод сходится со скоростью n, если limn→∞ .Если n=1 , то имеет место линейная сходимость, а, если n=2, то сходимость квадратичная.

Отметим ряд особенностей метода, которые полезно знать для других методов. При малых значениях функций в исследуемых точках, например f(a)=10-30 и f(b)=10-30 , их произведение может выйти за пределы разрядной сетки. Кроме того, вычисление с=0.5(a+b) лучше выполнять по формуле с=a+0.5(b-a). Пусть a =0.982 b=0.984 и, в случае 3-х разрядной сетки, среднее значение может выйти за пределы интервала [a,b] c=0.5(a+b)=0.5*1.97=0.985. Для разных знаков a и b точнее оказывается обычная формула половинного деления (корень близок к нулю 0).

Поскольку скорость сходимости метода дихотомии не велика, большее распространение получили следующие методы.