Московский физико-технический институт
Опубликован: 25.10.2007 | Доступ: свободный | Студентов: 3791 / 1086 | Оценка: 4.50 / 4.33 | Длительность: 24:00:00
ISBN: 978-5-9556-0065-9
Специальности: Программист, Математик

Лекция 11: Численное решение краевых задач для систем обыкновенных дифференциальных уравнений

< Лекция 10 || Лекция 11: 123456789

Теперь, после того как описан прогоночный алгоритм, исследуем его на устойчивость.

Для этого рассмотрим вычисление прогоночного коэффициента pn (т.е. этап прямого хода прогонки). В идеальной арифметике этот коэффициент равен

$  p_{n + 1} = \frac{c_n}{b_n - a_np_n}  $,
в конечноразрядной арифметике — p_{n + 1}^{M} = p_{n + 1} + \Delta_{n + 1} , где \Delta _{n + 1}погрешность, связанная с округлениями на всех предшествующих этапах вычислений. Полагая \Delta _{n + 1} малой, исследуем изменение этой погрешности с ростом n. Для этого запишем соотношение между \Delta _{n} и \Delta _{n + 1} в виде

$  p_{n + 1} + \Delta_{n + 1} = \frac{c_n}{b_n - a_n (p_n + \Delta_n)} + \varepsilon_n, $

где \varepsilon _{n}погрешность вычислений правой части и машинного представления коэффициентов an, bn, cn. Следовательно, \Delta _{n + 1} складывается из двух составляющих — локальной погрешности \varepsilon _{n} и наследственной \Delta _{n + 1}.

Полагая \Delta_n  \ll p_n при \Delta _{n} > 0, p_{n} > 0 и опуская члены порядка O(\Delta ^{2}), получим оценку

$  p_{n + 1} + \Delta_{n + 1}   \approx  \frac{c_n}{b_n - a_n p_n} + \frac{c_n a_n}{{(b_n - a_n p_n)}^2 }\Delta_n + \varepsilon_n .  $

Отсюда, учитывая, что

$  p_{n + 1} = \frac{c_n}{b_n - a_n p_n}  $,
получим требуемую оценку для эволюции погрешности

$  {\Delta_{n + 1} = \frac{a_n}{c_n}p_{n + 1}^2
\Delta_n + \varepsilon_n, n = 0, \ldots , N - 1.}  $ ( 10.2)

Докажем следующую теорему.

Теорема. Если выполнены условия диагонального преобладания \left|{b_n}\right| \ge \left|{a_n}\right| + \left|{c_n}\right| и хотя бы для одной строки матрицы системы имеет место строгое диагональное преобладание \left({\left|{b_n}\right| > \left|{a_n}\right| + \left|{c_n}\right|}\right). Пусть, кроме того, 0 < p1 < 1. Тогда алгоритм прогонки устойчив.

Доказательство.

Докажем утверждение теоремы для случая, когда во всех строках матрицы выполнено условие строгого диагонального преобладания. На случай нестрогих неравенств обобщение доказательства очевидно.

  1. Пусть выполнено условие диагонального преобладания и 0 < p1 < 1. Для определенности положим an > 0, bn > 0, cn > 0.

    Тогда

    $  p_{n + 1} = \frac{c_n}{b_n - a_np_n} > \frac{c_n}{b_n - a_n} > 0  $.

    Кроме того,

    $  p_{n + 1} = \frac{c_n}{b_n - a_n p_n} < \frac{c_n}{a_n + c_n - a_n p_n} = \frac{c_n}{c_n + a_n (1 - p_n)} \le 1  $,
    откуда следует 0 < pn + 1 < 1.

  2. Покажем, что
    $ \frac{a_n}{c_n}  \approx  1 + c\tau , \Delta_1  \le (1 + c\tau )\Delta_0 + \varepsilon   $.

    Для этого вспомним выражения для коэффициентов линейной системы, полученной при разностной аппроксимации исходного уравнения второго порядка.

    \begin{gather*}
a_n = \frac{g_{n - 1/2}}{\tau ^2 } - \frac{h_n}{2\tau }  \approx  \frac{g_{n - 1/2}}{\tau ^2 }, g_{n - 1/2} = g(t_n - \tau /2), \\ 
c_n = \frac{g_{n + 1/2}}{\tau^2} + \frac{h_n}{2\tau} \approx  \frac{g_{n + 1/2}}{\tau^2}, \\ 
\frac{a_n}{c_n}  \approx  \frac{g(t - \tau/2)}{s(t + \tau/2)} = 1 + c\tau.
\end{gather*}

Вернемся к выражению для эволюции погрешности (10.2). С учетом полученных оценок имеем

$  \Delta_{n + 1}  \le \frac{a_n}{c_n}\Delta_n + \varepsilon_n  $.
Так как
$ \frac{a_n}{c_n}  \approx  1 + c\tau  $,
то \Delta_{n + 1}  \le (1 + c\tau )\Delta_n + \varepsilon_n, где c — константа Липшица для функции g(t). Считаем, что на каждом шаге ошибка округления не превосходит предельного значения, т.е. 0 \le \varepsilon_n \le \varepsilon.

Из цепочки неравенств

\begin{gather*}
\Delta_2  \le (1 + c\tau )^2 \Delta_0 + \varepsilon \left[{1 + (1 + c\tau )}\right], \\ 
\Delta_3  \le (1 + c\tau )^3 \Delta_0 + \varepsilon \left[{1 + (1 + c\tau ) + (1 + c\tau )^2 }\right], 
\end{gather*}

будет следовать оценка

$  \Delta_n  \le (1 + c\tau )^{n} \Delta_0 + 
\frac{{(1 + c\tau )^{n}}}{{c\tau }}\varepsilon   $.
Используя известные из математического анализа неравенства, последнюю оценку можно записать в виде

$  \Delta_n  \le e^{c\tau n} \Delta_0 + e^{c\tau n}
\frac{\varepsilon }{{c\tau }}, c\tau n = ct . $

При ct \sim  O(1) погрешности не накапливаются (для краевых задач это реальное условие), поскольку в расчетах \tau  \gg \varepsilon, где \varepsilon — машинный эпсилон (подробнее в "Предмет вычислительной математики. Обусловленность задачи, устойчивость алгоритма, погрешности вычислений. Задача численного дифференцирования" ).

Аналогичное утверждение доказывается и для второго прогоночного коэффициента

$  q_{n + 1} = \frac{a_n q_n - d_n}{b_n - a_n p_n}  $;
алгоритм устойчив при выполнении тех же условий.

Покажем устойчивость обратного хода прогонки.

При обратном ходе вычисления проводятся по формулам un = pn + 1un + 1 + qn + 1, откуда, учитывая, что u_n^{M} = u_n + \Delta_n и u_{n + 1}^{M} = u_{n + 1} + \Delta_{n + 1}, получим \Delta _{n} = p_{n + 1}\Delta _{n + 1} + \varepsilon _{n}, где \Delta _{n} — наследственная погрешность, \varepsilon _{n}погрешность округления на n шаге. Очевидно, что обратный ход прогонки устойчив при выполнении условия 0 < pn < 1, или 0 < p1 < 1.

< Лекция 10 || Лекция 11: 123456789