- •Вместо введения: о погрешностях при решении прикладных задач
- •Глава I. Численные методы решения уравнений
- •§ 1. Задача локализации корней
- •Ограничение корней
- •Локализация корней
- •Простейший (грубейший) алгоритм локализации корней:
- •§ 2. Понятие об итерационных методах уточнения корней
- •Метод деления пополам (метод вилки)
- •§ 3. Методы хорд и касательных
- •Метод хорд для монотонных выпукло-вогнутых функций
- •Метод касательных для монотонных выпукло-вогнутых функций
- •§ 4. Метрические и банаховы пространства. Теорема о неподвижной точке
- •Матричные нормы
- •§ 5. Метод простой итерации
- •§ 6. Применение метода простой итерации к решению
- •Условие h([; ]) [; ] :
- •Глава II. Вычисления в линейной алгебре
- •§ 1. Метод Гаусса и его улучшения для повышения точности решения
- •§ 2. Метод простой итерации и метод Зейделя
- •§ 3. Подготовка к применению метода простой итерации
- •§ 4. Проблема собственных значений
- •Глава III. Численное интегрирование
- •§ 1. Метод прямоугольников
- •§ 2. Метод трапеций
- •§ 3. Метод Симпсона (параболическое интерполирование)
- •Глава IV. Некоторые методы аппроксимации функций
- •§ 1. Интерполяционный многочлен Лагранжа
- •§ 2. Интерполяционный многочлен Ньютона
- •§ 3. Метод наименьших квадратов
- •Глава V. Некоторые методы численного решения дифференциальных уравнений
- •Приложение: Сводка характеристик численных методов
- •Характеристики метода:
- •Характеристики метода:
- •Характеристики метода:
- •Характеристики метода:
- •Характеристики метода:
§ 6. Применение метода простой итерации к решению
уравнения f(x) = 0
Пусть задано уравнение f(x) = 0 на отрезке [; ]. Сводя задачу к уже решённой в предыдущем параграфе, достаточно представить это уравнение в виде h(x) = x со сжимающей функцией h : [; ] [; ]. Имеем f(x) = 0 (x – A·f(x)) = x, где A – ненулевая константа. Таким образом, можно считать, что h(x) = x – A·f(x) и нужно теперь так подобрать постоянную A, чтобы выполнялось условие сжимаемости отображения h.
Для простоты будем предполагать, что функция f дважды непрерывно дифференцируема на [ ; ] и для неё выполнена локализация корня так, что f монотонна и неизменно выпукла на [ ; ], причём f()·f() < 0. Будем пользоваться выводами предыдущего параграфа, формулируя их в терминах функции f.
Вначале подберём константу A так, чтобы функция h стала неубывающей: h(x) = 1 – A·f(x) 0 A·f(x) 1. Если f возрастает, то f(x) > 0 и A при любом x [ ; ], т.е. A . Если же f убывает, то f(x) < 0, А при любом x [ ; ], т.е. A . Величина |f(x)| в условиях неизменной выпуклости функции f на отрезке [ ; ] вычисляется легко: |f(x)| = max{|f()|, |f()|}, причём |f()| получается при f·f < 0, а |f()| – при f·f > 0.
Теперь воспользуемся результатами предыдущего параграфа:
Условие h([; ]) [; ] :
(h([; ]) [; ]) (h() и h() )
( – A·f() и – A·f() ) (A·f() 0 и A·f() 0).
В случае возрастающей функции f имеем f() < 0 < f(), так что с учётом предыдущих ограничений 0 < A . Для убывающей функции f будет f() > 0 > f(), и получаем A < 0. Отметим, что знак А совпадает со знаком sgn f производной функции f.
коэффициент сжатия функции h(x) = x – A·f(x). Предыдущие рассмотрения гарантируют неравенство h(x) = 1 – A·f(x) 0. Далее, h(x) = –A·f(x) = –sgn f·|A|·f(x). Таким образом, знак h(x) постоянен на отрезке [; ] и противоположен знаку f·f . Поэтому, как следует из результатов предыдущего параграфа, условие сжимаемости отображения h будет выглядеть так:
если f·f 0, то c = h() = 1 – A·f() < 1;
если f·f 0, то c = h() = 1 – A·f() < 1.
Оба эти условия выполнены, т.к. A·f > 0. Минимальный коэффициент сжатия получается, при |A| = , т.е. при A = .
Таким образом, окончательно получаем:
если f·f 0, то c = 1 – ;
если f·f 0, то c = 1 – .
Поскольку величина A = зависит от знака производной, то формулы итерационного процесса тоже будут различны:
при f·f > 0 : xn+1 = xn – ,
при f·f < 0 : xn+1 = xn – ,
(n N), x0 [; ].
Как и в предыдущем параграфе, можно улучшить начальное приближение, беря x0 = при h·h > 0 и x0 = , если h·h < 0. Поскольку h 0, а знак h противоположен знаку f·f, окончательно имеем:
если f·f > 0, то x0 = ,
если f·f < 0, то x0 = .
Подытожим полученные выводы для решения уравнения f(x) = 0 методом простой итерации в предположении, что функция f дважды непрерывно дифференцируема и имеет знакопостоянные на [; ] производные f и f .
Метод простой итерации для уравнения f(x) = 0 на [; ]
Вычисляем знаки f , f и f·f.
Записываем f(x) = 0 уравнение в виде x – A·f(x) = x, где A = , где M = |f()| при f·f 0 и M = |f()| при f·f 0.
Коэффициент сжатия: с = 1 – при f·f 0, и с = 1 – , если f·f 0.
Вычисляем начальное приближение x0 : x0 = , если f·f 0 (можно просто x0 = ), и x0 = (или x0 = ), если f·f 0.
Выполняем итерации: xn+1 = xn – A·f(xn) (n N).
Останавливаем вычисления при n = или при одновременном выполнении условий |xn+1 – xn| , |f(xn)| , где – заданная погрешность.
Замечание: Если для выхода не вычисляется величина n, то коэффициент сжатия c вычислять нет необходимости. Это можно сделать в модельных примерах для контроля правильности вычислений.
Полученные выводы о методе простой итерации для уравнения f(x) = 0 систематизированы в приложении (таблица III).
Примеры: 1. Уточнить методом простой итерации корень уравнения ex–1 – 2·x = 0 на отрезке [0; 0,9] с точностью до 0,001.
Здесь f(x) = ex–1 – 2·x имеет корень на [0; 9], т.к. f(0) = e–1 > 0, f(0,9) = e–0,1 – 1,8 < 0. Производная f(x) = ex–1 – 2 отрицательна на отрезке [0; 0,9], т.к. f(0,9) = e–0,1 – 2 < 0 и f(x) возрастает: f(x) = ex–1 > 0. Поэтому можно применить метод простой итерации.
Ясно, что f < 0, f > 0, f·f < 0.
Составляем уравнение h(x) = x, где h(x) = x – A·(ex–1 – 2·x) и величина A = – –0,6127.
Коэффициент сжатия: c = 0,3873.
Выбираем начальное приближение x0 = 0 (без уточнения).
Производим итерации xn+1 = xn + 0,6127·f(xn) (n N), пока либо |xn+1 – xn| > 0,001, либо |f(xn)| > 0,001:
Таким образом, приближённое значение корня 0,232.
Если применить уточнение корня, взяв x0 = –0,2254, то итераций потребуется меньше.
2. Уточнить корень уравнения sin 2·x – ln x = 0 на отрезке [1,2; 1,5] с точностью до 0,001.
Имеем: f(x) = sin 2·x – ln x, f(x) = 2·cos 2·x – . Ввиду неравенств < 2,4 2·x 3 < величина cos 2·x на [1,2; 1,5] отрицательна, значит f < 0, f убывает на [1,2; 1,5]. Кроме того, f(1,2) 0,675 – 0,082 > 0, f(1,5) 0,141 – 0,405 < 0, так что f имеет на рассматриваемом отрезке единственный корень.
Далее, f(x) = –4·sin 2·x + и sin 2·x убывает на [1,2; 1,5]. При этом 0,5645 4·sin3 4·sin2·x 4·sin2,4 2,7019 и 0,4444 0,6944. Значит, f < 0 и можно применить метод простой итерации для уточнения корня.
Ясно, что f < 0, f < 0, f·f > 0.
Составляем уравнение h(x) = x, где h(x) = x – A·(sin 2·x – ln x), с коэффициентом – 0,3778.
Вычисляем коэффициент сжатия
0,1279.
Выбираем начальное приближение x0 = 1,5 (без уточнения).
Производим итерации xn+1 = xn + 0,3778·f(xn) (n N), пока верно |xn+1 – xn| > 0,001 или |h(xn+1) – xn | > 0,001 :
Таким образом, приближённое значение корня 1,400.
Уточнив приближение x0 = 1,4001, и вычислив x1 = h(x0) 1,3994, получим |x1 – x0| = 0,0007 < 0,001, так что итераций не требуется.
Замечание: Можно показать, что методы хорд и касательных являются (в достаточно малой окрестности корня) частными случаями метода простой итерации: достаточно уравнение f(x) = 0 заменить уравнением x – (x)·f(x) = x. Для метода касательных нужно взять (x) = , а для метода хорд (x) = .