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

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

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

10.3. Краевая разностная задача Штурма - Лиувилля для обыкновенного дифференциального уравнения второго порядка

Задача Штурма-Лиувилля для обыкновенного дифференциального уравнения второго порядка часто встречается в приложениях. Рассмотрим линейную задачу

\begin{gather*} 
\frac{d}{dt}\left[{g\frac{du}{dt}}\right] + h\frac{du}{dt} + su = f,  t \in [a, b],   \\ 
{A\frac{du}{dt} + Bu = D, t = a, }  \\
A^{\prime}\frac{du}{dt} + B^{\prime}u = D^{\prime}, t = b, \end{gather*} ( 10.1)

где коэффициенты g, h, s, вообще говоря, являются функциями независимого переменного t.

Для разностной аппроксимации рассматриваемой краевой задачи введем равномерную разностную сетку \{t_n\}_0^{N}, t_n = n\tau , \tau = (b - a)/N и определим на этой сетке сеточную функцию \{u_n\}_0^{N}.

Коэффициент g, вообще говоря, может не иметь первой производной. Такая задача может возникнуть, например, в случае расчета установившегося распределения температуры в задаче стационарной теплопроводности с контактным разрывом. Представим разностную задачу в виде

\begin{gather*}
\frac{1}{\tau }\left({g_{n + 1/2} \frac{u_{n + 1} - u_n}{\tau } - g_{n - 1/2} \frac{u_n - 
u_{n - 1}}{\tau }}\right) + h_n \frac{u_{n + 1} - u_{n - 1}}{2\tau } + s_n u_n = \\ 
= f_n , n = 1, \ldots , N - 1, \\ 
g_{n + 1/2} = g(t_n + \frac{\tau}{2}), h_n = h(t_n), \\ 
A\frac{u_1 - u_0}{\tau } + Bu_0 = D, t = a, \\ 
A^{\prime}\frac{u_N - u_{N - 1}}{\tau } + B^{\prime}u_N = D^{\prime}, t = b.
\end{gather*}

Контактный разрыв при этом помещается в узел с номером n. В этом случае фактически аппроксимируется тепловой поток через границы ячейки разностной сетки, для уравнения теплопроводности получается консервативная разностная схема — подробнее смотри в лекциях, посвященных численному решению уравнений в частных производных.

Выписанные выше соотношения определяют простейшую разностную схему. Под разностной схемой здесь и ниже понимается совокупность разностных уравнений для определения значений сеточной функции внутри расчетной области, дополненная соответствующими начальными и граничными условиями для этой сеточной функции.

Для определения значений сеточной функции получается СЛАУ с трехдиагональной матрицей

- b0u0 + c0u1 = d0, 
anun - 1 - bnun + cnun - 1 = dn , n = 1, ..., N - 1, 
anuN - 1 - bnun = dn,

где

\begin{gather*} a_n = \frac{{g_{n - 1/2}}}{{\tau ^2 }} - 
\frac{{h_n}}{{2\tau }}, c_n = \frac{{g_{n + 1/2}}}{{\tau ^2 }} + \frac{{h_n}}{{2\tau }}, \\ 
b_n = a_n + c_n - h_n , d_n = f_n , b_0 = \frac{A}{\tau } - \frac{B}{2}, c_0 = \frac{A}{\tau } + \frac{B}{2}, d_0 = D \end{gather*}

Эта СЛАУ представима в каноническом виде A'u = D, где A'матрица

A^{\prime} = \left( \begin{array}{ccccc}
   {- b_0 } & {c_0 } & 0 & \ldots & 0  \\
   {a_1 } & {- b_1 } & {c_1 } & \ldots & 0  \\
   0 & {a_2 } & {- b_2 } & \ldots & 0  \\
    \ldots & \ldots & \ldots & \ldots & \ldots   \\
   0 & 0 & 0 & \ldots & {- b_n}  \\
\end{array} \right),

u, d есть векторы - столбцы

D = (d0, d1, ..., dn)T.

Трехдиагональные матрицы часто возникают при численном решении краевых задач как для обыкновенных дифференциальных уравнений, так и для уравнений в частных производных. Ранее матрица подобной структуры встречалась при построении сплайна Шонберга ( "Интерполяция функций" ). Характерная особенность таких матриц заключается в том, что при большой размерности матрица имеет ленточную структуру — все элементы вне ленты (главная диагональ матрицы и по одной диагонали над и под ней) нулевые. В общем случае численное решение СЛАУ n - го порядка требует O(N3) арифметических действий и O(N2) ячеек памяти. В численных методах большую роль играют экономичные алгоритмы, в которых количество арифметических операций пропорционально количеству неизвестных — O(N).

К таким алгоритмам относится метод трехточечной разностной прогонки, появление которого в России связано с именем И.М.Гельфанда, в англоязычной литературе такая прогонка называется алгоритмом Томаса. Экономия памяти очевидна — необходимо хранить только три диагонали исходной матрицы (три одномерных массива). Рассмотрим экономичный вариант метода Гаусса, предназначенный для решения подобных систем.

Решение ищется в виде прогоночного соотношения

un - 1 = pnun + qn, n = 1, ..., N,

где pn и qn — прогоночные коэффициенты, подлежащие определению.

Левое краевое условие также записывается в виде прогоночного соотношения

$  u_0 = \frac{c_0 }{d_0 }u_1 - \frac{d_0 }{b_0}, $

где p1 = c0/ b0, q1 = - d0/ b0 (заметим, что если A > 0 и B < 0, то b0 > c0, 0 < p < 1 ).

Получим рекуррентные формулы, позволяющие последовательно вычислить p2, q2, p3, q3 и т.д. вплоть до pn, qn.

Подставив равенство u n - 1 = pnun + qn в уравнение anun - 1 - bnun + cnu n + 1 = dn, получим an(pnun + qn) - bnun + cnun + 1 = dn, или

$  u_n = \frac{c_n}{b_n - a_n p_n}u_{n + 1} + \frac{a_n q_n - d_n}{b_n - 
a_n p_n}.  $

Сравнивая эту запись со стандартным видом прогоночного соотношения

un = pn + 1un + 1 + qn + 1,

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

$  p_{n + 1} = \frac{c_n}{b_n - a_n p_n}, \quad q_{n + 1} = \frac{a_n q_n - d_n}{b_n - a_n p_n}.  $

Эти формулы определяют прямой ход прогонки.

Из краевого условия на правом конце отрезка интегрирования anuN - 1 - bNuN = dN и прогоночного соотношения uN - 1 = pNuN + qN находим величину uN.

Далее последовательно вычисляются остальные неизвестные un n = N - 1, ..., 1 un - 1 = pnun + qn. Это — обратный ход алгоритма прогонки.

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