- •Вместо введения: о погрешностях при решении прикладных задач
- •Глава I. Численные методы решения уравнений
- •§ 1. Задача локализации корней
- •Ограничение корней
- •Локализация корней
- •Простейший (грубейший) алгоритм локализации корней:
- •§ 2. Понятие об итерационных методах уточнения корней
- •Метод деления пополам (метод вилки)
- •§ 3. Методы хорд и касательных
- •Метод хорд для монотонных выпукло-вогнутых функций
- •Метод касательных для монотонных выпукло-вогнутых функций
- •§ 4. Метрические и банаховы пространства. Теорема о неподвижной точке
- •Матричные нормы
- •§ 5. Метод простой итерации
- •§ 6. Применение метода простой итерации к решению
- •Условие h([; ]) [; ] :
- •Глава II. Вычисления в линейной алгебре
- •§ 1. Метод Гаусса и его улучшения для повышения точности решения
- •§ 2. Метод простой итерации и метод Зейделя
- •§ 3. Подготовка к применению метода простой итерации
- •§ 4. Проблема собственных значений
- •Глава III. Численное интегрирование
- •§ 1. Метод прямоугольников
- •§ 2. Метод трапеций
- •§ 3. Метод Симпсона (параболическое интерполирование)
- •Глава IV. Некоторые методы аппроксимации функций
- •§ 1. Интерполяционный многочлен Лагранжа
- •§ 2. Интерполяционный многочлен Ньютона
- •§ 3. Метод наименьших квадратов
- •Глава V. Некоторые методы численного решения дифференциальных уравнений
- •Приложение: Сводка характеристик численных методов
- •Характеристики метода:
- •Характеристики метода:
- •Характеристики метода:
- •Характеристики метода:
- •Характеристики метода:
§ 5. Метод простой итерации
Теорема о неподвижной точке сжимающего отображения даёт метод первого порядка для решения уравнения h(x) = x, если h : [; ] [; ] – сжимающее отображение. Здесь, конечно, E = [; ], (x, y) = |x – y| – обычное расстояние между точками числовой прямой. Поэтому упомянутую теорему можно использовать для уточнения корней уравнений: для уравнения h(x) = x достаточно выбрать любое приближение x0 [; ] и вычислять последовательно приближения x1 = h(x0), xn+1 = h(xn) (n N).
Э та общая идея нуждается в дополнительной проработке. Необходимо дать ответы на следующие вопросы:
как определить по заданной функции h и отрезку [; ], выполнено ли условие h([; ]) [; ] ?
как определить, будет ли данная функция h : [; ] [; ] сжимающей ?
как выбрать наиболее удачное приближение x0 [; ] ?
каковы условия выхода из итерационного процесса, т.е. сколько нужно итераций, чтобы вычислить корень с заданной погрешностью ?
Р ешить их тем более важно, что при несоблюдении условий сжимаемости метод может не давать результата, о чём свидетельствует рисунок слева. В представленной на нём ситуации последовательность приближений зацикливается и не сходится к корню уравнения.
условие h([; ]) [; ]. Общих методов решения этой задачи нет. Необходимо, конечно, чтобы h(), h() [; ]. Тогда для непрерывной функции h по теореме о промежуточном значении будет верно включение [h(); h()] h([; ]). Однако обратное включение может не выполняться (приведите пример !).
Как правило, отрезок [; ] после предварительной локализации корня достаточно мал, а функция h не слишком патологическая. Так что обычно предполагают, что h монотонна на [; ]. В этом случае проверка проста условия [h(); h()] h([; ]): . Более подробно:
если h не убывает, то нужно h() и h() ;
если h не возрастает, то нужно h() и h() .
Проверка возрастания и убывания функции h очень грубо может быть выполнена по значениям h() и h(): если h() > h(), то h может убывать, а если h() < h() – то возрастать. Конечно, этот поверхностный критерий чреват ошибками. Для подстраховки можно взять несколько точек на отрезке и проверить условие монотонности в этих точках, но это тоже не гарантирует точности вывода.
Если предполагать, что функция h дифференцируема на [; ], то для проверки монотонности можно вычислить производную h и проверять условие z [; ] h(z) 0 для возрастания функции h и условие z [; ] h(z) 0 для её убывания. Для приближённого ответа на вопрос можно, по крайней мере, вычислить знаки h(zi) в нескольких точках zi [; ] (1 i k). Однако, это не спасает от ошибки.
Самое надёжное – аналитически доказать включение h([; ]) [; ] или постоянство знака производной на этом отрезке.
условие сжимаемости. Для того чтобы заданное отображение h: [; ] [, ] было сжимающим должно выполняться условие с [0; 1) x, y [; ] |h(x) – h(y)| c·|x – y|. Если функция h(x) непрерывно дифференцируема на [; ], то (по теореме Лагранжа) x, y [; ] z [x; y] h(x) – h(y) = h(z)·(x – y). Поэтому для сжимаемости отображения h достаточно потребовать существования числа с со свойством |h(x) – h(y)| = |h(z)|·|x – y| с·|x – y|, т.е. |h(z)| c < 1 при любых z [; ]. Итак, для сжимаемости непрерывно дифференцируемого отображения h : [; ] [; ] достаточно, чтобы |h(z)| < 1 (в качестве c достаточно взять этот супремум).
Полученное условие |h(z)| < 1 и необходимо. Действительно, если в некоторой точке x0 [ ; ] будет |f(x0)| > 1, то вблизи x0 выполнено равенство f(x) = f(x0) + f(x0)·(x – x0)+ u(x – x0), где . Выберем x так, чтобы для сколь угодно малого > 0. Тогда |f(x) – f(x0)| = | f(x0)·(x – x0)+ u(x – x0)| | f(x0)·(x – x0)| – |u(x – x0)| > > |f(x0)|·|x – x0| – ·|x – x0| = (|f(x0)| – )·|x – x0| > |x – x0| при < |f(x0)| – 1.
Таким образом, для сжимаемости непрерывно дифференцируемого отображения h: [; ] [, ] необходимо и достаточно выполнение условия |h(z)| < 1.
Конечно, проверить это условие в общем случае ничуть не легче, чем решить проблемы предыдущего пункта. Если предположить монотонность и неизменность выпуклости непрерывно дифференцируемой функции h, то проверка проста:
а) если h > 0, h выпукла вниз, то c = h() < 1;
б) если h > 0, h выпукла вверх, то c = h() < 1;
в) если h < 0, h выпукла вниз, то c = –h() < 1;
г ) если h < 0, h выпукла вверх, то c = –h() < 1
На представленных рисунках красным цветом выделены предельные положения касательных к кривой, допускаемые в каждом из рассматриваемых случаев в точках x = (б и в) и x = (а и г), с угловыми коэффициентами 1 (а и б) и –1 (в и г).
Эти условия применимы, в частности для дважды непрерывно дифференцируемой функции h : [; ] [; ] с условиями неизменности знака производных h и h на [; ] :
если h ·h 0, то c = |h()| < 1 (случаи а) и г) );
если h ·h 0, то c = |h()| < 1 (случаи б) и в) );
К отмеченным четырём случаям можно свести проверку, если отрезок [; ] достаточно мал, а функция h не слишком патологична. Нарушение этих условий, вообще говоря, не означает, что итерационный процесс не будет сходиться. Однако такое несанкционированное применение метода итераций требует анализа в каждой конкретной ситуации.
выбор приближения x0 [; ]. По теореме о неподвижной точке сжимающего отображения, итерационный процесс x1 = h(x0), xn+1 = h(xn) является методом первого порядка и сходится при любом начальном приближении x0 [; ]. Кроме того, |xn – r| , поэтому скорость сходимости последовательности {xn}n N к корню r определяется величиной |x1 – x0| = |h(x0) – x0|, которую в описанных выше четырёх модельных случаях a) – г) можно уменьшить.
Например, за x0 можно брать точку пересечения с осью абсцисс касательной к графику функции y = x – h(x), выпущенной из конца отрезка [; ], в котором достигается минимум модуля производной |h(x)|.
Например, в случае а) минимум модуля производной |h(x)| равен h() < 1. Поэтому пишем уравнение касательной к кривой y = x – h(x) в точке :
y = – h() + (1 – h())·(x – ),
и, приравнивая y к нулю, получаем x0 = . Эта точка принадлежит отрезку [; r] [; ]. Действительно, h(), что верно ввиду h([; ]) [; ]. С другой стороны, функция y = x – h(x) возрастает (y = 1 – h(x) > 0) и выпукла вверх на отрезке [; ]. Поэтому график этой функции лежит под касательной в точке , т.е. x0 – h(x0) 0, x0 r.
Рассуждая аналогично в случаях б), в), г), получим следующие значения для начального приближения x0 :
в случаях а) и г) x0 = ;
в случаях б) и в) x0 = .
За процедуру уточнения начального приближения x0 приходится платить дополнительными вычислениями. Поэтому можно в случаях а) и г) брать x0 = , а в случаях б) или в) – полагать x0 = .
условия выхода из итерационного процесса. Если задана погрешность , то из оценки |xn – r| можно подсчитать количество необходимых итераций: n logc , т.е. . Как правило, поступают грубее, но проще: итерации выполняют, пока |xn+1 – xn| > или |h(x) – x| > , списывая неточности на погрешность метода.
Основные из полученных характеристик метода простой итерации для уравнения h(x) = x приведены в приложении (таблица II).
Примеры: 1. Уточнить корень уравнения 4· = x с точностью до 0,01 на отрезке [4; 9].
Здесь h(x) = 4· , h(x) = > 0, h(x) = – < 0. При этом h(4) = 4· 5,77 [4; 9], h(9) = 4· = 8 [4; 9]. Значит h([4; 9]) [4; 9].
Далее, отображение h удовлетворяет рассмотренному случаю б), оно является сжимающим с коэффициентом c = h(4) = 0,64 меньше 1. Поэтому берём x0 = 9 и производим итерации, пока верно n = |xn+1 – xn| > 0,01 или |4· – x | > 0,01 :
Таким образом, приближённое значение корня уравнения равно 7,46.
Если уточнить приближение x0 по полученным выше формулам, то
x0 = ,
так что итераций потребуется меньше.
2. Уточнить второй положительный корень уравнения 4· = x с точностью 0,01.
Этот корень лежит на отрезке [; ], где > 1, 1 < < 7,46. Ввиду неравенств h > 0, h < 0 для применимости метода должны быть выполнены условия h() , h() , h() < 1.
Удобнее начать с третьего условия: h() < 1 < 1 – 1 > > . Если = 2,6, то h(2,6) = 4· > 2,6.
Осталось найти 2,6 < < 7,46 со свойством h() . Из таблицы предыдущего примера видно, что можно взять = 7,448. Теперь уточняем корень, производя стандартные вычисления:
Приближённое значение корня 7,45. Как видно, оба положительных корня рассмотренного уравнения близки друг к другу.