Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Численные методы.doc
Скачиваний:
37
Добавлен:
14.08.2019
Размер:
4.24 Mб
Скачать

§ 5. Метод простой итерации

Теорема о неподвижной точке сжимающего отображения даёт метод первого порядка для решения уравнения h(x) = x, если h : [; ] [; ] – сжимающее отображение. Здесь, конечно, E = [; ], (x, y) = |xy| – обычное расстояние между точками числовой прямой. Поэтому упомянутую теорему можно использовать для уточнения корней уравнений: для уравнения h(x) = x достаточно выбрать любое приближение x0 [; ] и вычислять последовательно приближения x1 = h(x0), xn+1 = h(xn) (n N).

Э та общая идея нуждается в дополнительной проработке. Необходимо дать ответы на следующие вопросы:

  1. как определить по заданной функции h и отрезку [; ], выполнено ли условие h([; ]) [; ] ?

  2. как определить, будет ли данная функция h : [; ] [; ] сжимающей ?

  3. как выбрать наиболее удачное приближение x0 [; ] ?

  4. каковы условия выхода из итерационного процесса, т.е. сколько нуж­но итераций, чтобы вычислить корень с заданной погрешностью ?

Р ешить их тем более важно, что при несоблюдении условий сжимаемости метод может не давать результата, о чём свидетельствует рисунок слева. В представленной на нём ситуации последовательность приближений зацикливается и не сходится к корню уравнения.

  1. условие 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([; ]) [; ] или постоянство знака производной на этом отрезке.

  1. условие сжимаемости. Для того чтобы заданное отображение h: [; ] [, ] было сжимающим должно выполняться условие с [0; 1) x, y [; ] |h(x) – h(y)| c·|xy|. Если функция h(x) непрерывно дифференцируема на [; ], то (по теореме Лагранжа) x, y [; ] z [x; y] h(x) – h(y) = h(z)·(xy). Поэтому для сжимаемости отображения h достаточно потребовать существования числа с со свойством |h(x) – h(y)| = |h(z)|·|xy| с·|xy|, т.е. |h(z)| c < 1 при любых z [; ]. Итак, для сжимаемости непрерывно дифференцируемого отображения h : [; ] [; ] достаточно, чтобы |h(z)| < 1 (в качестве c достаточно взять этот супремум).

Полученное условие |h(z)| < 1 и необходимо. Действительно, если в некоторой точке x0 [ ; ] будет |f(x0)| > 1, то вблизи x0 выполнено равенство f(x) = f(x0) + f(x0)·(xx0)+ u(xx0), где . Выберем x так, чтобы для сколь угодно малого > 0. Тогда |f(x) – f(x0)| = | f(x0)·(xx0)+ u(xx0)| | f(x0)·(xx0)| – |u(xx0)| > > |f(x0)|·|xx0| – ·|xx0| = (|f(x0)| – )·|xx0| > |xx0| при < |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 не слишком патологична. Нарушение этих условий, вообще говоря, не означает, что итерационный процесс не будет сходиться. Однако такое несанкционированное применение метода итераций требует анализа в каждой конкретной ситуации.

  1. выбор приближения x0 [; ]. По теореме о неподвижной точке сжимающего отображения, итерационный процесс x1 = h(x0), xn+1 = h(xn) является методом первого порядка и сходится при любом начальном приближении x0 [; ]. Кроме того, |xnr| , поэтому скорость сходимости последовательности {xn}n N к корню r определяется величиной |x1x0| = |h(x0) – x0|, которую в описанных выше четырёх модельных случаях a) г) можно уменьшить.

Например, за x0 можно брать точку пересечения с осью абсцисс касательной к графику функции y = xh(x), выпущенной из конца отрезка [; ], в котором достигается минимум модуля производной |h(x)|.

Например, в случае а) минимум модуля производной |h(x)| равен h() < 1. Поэтому пишем уравнение касательной к кривой y = xh(x) в точке :

y = h() + (1 – h())·(x),

и, приравнивая y к нулю, получаем x0 = . Эта точка принадлежит отрезку [; r] [; ]. Действительно, h(), что верно ввиду h([; ]) [; ]. С другой стороны, функция y = xh(x) возрастает (y = 1 – h(x) > 0) и выпукла вверх на отрезке [; ]. Поэтому график этой функции лежит под касательной в точке , т.е. x0 – h(x0) 0, x0 r.

Рассуждая аналогично в случаях б), в), г), получим следующие значения для начального приближения x0 :

в случаях а) и г) x0 = ;

в случаях б) и в) x0 = .

За процедуру уточнения начального приближения x0 приходится платить дополнительными вычислениями. Поэтому можно в случаях а) и г) брать x0 = , а в случаях б) или в) – полагать x0 = .

  1. условия выхода из итерационного процесса. Если задана погрешность , то из оценки |xnr| можно подсчитать количество необходимых итераций: n logc , т.е. . Как правило, поступают грубее, но проще: итерации выполняют, пока |xn+1xn| > или |h(x) – x| > , списывая неточности на погрешность метода.

Основные из полученных характеристик метода простой итерации для уравнения h(x) = x приведены в приложении (таблица II).

Примеры: 1. Уточнить корень уравнения = 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+1xn| > 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. Как видно, оба положительных корня рассмотренного уравнения близки друг к другу.