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

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

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

10.4. Пятиточечная прогонка

При численном решении краевых задач для обыкновенных дифференциальных уравнений 4 - го порядка возникают СЛАУ с пятидиагональной матрицей вида:

c0u0 - d0u1 + e0u2 = f0, 
- b1 u0 + c1 u1 - d1 u2 + e1 u3 = f1, 
anun - 2 - bnun - 1 + cnun - dnun + 1 + enun + 2 = fn, n = 2, ... , N - 2, 
aN - 1 uN - 3 - bN - 1 uN - 2 + cN - 1 uN - 1 - dN - 1 un = fN - 1,
an uN - 2 - bn uN - 1 + cn un = fn .

Алгоритм решения таких систем — пятиточечная прогонка, формулы которой выводятся аналогично формулам для трехточечной прогонки. Приведем их окончательный вид. В прогоночном соотношении появятся три коэффициента (p, q, r):

un = pn + 1 un + 1 - qn + 1un + 2 + rn + 1, 
uN - 1 = pn un + rn, 
un = rN + 1.

Прогоночные коэффициенты находятся по формулам

p_{n + 1} = [d_{n} + q_{n}(a_{n} p_{n - 1} - b_{n})]/D_{n} , n = 2, 3, \dots  , N - 1, \setminus \setminus  
\\
p_{1} = d_{0} /c_{0}, p_{2} = (d_{1} - q_{1} b_{1} )/D_{1}, 
\\
r_{n + 1} = [f_{n} - a_{n} r_{n - 1} - r_{n} (a_{n} p_{n - 1} - b_{n})]/D_{n}, n = 2, 3, \dots  , N, 
\\
r_{1} = f_{0} /c_{0}, r_{2} = (f_{1} + b_{1} r_{1} )/D_{1}, 
\\
q_{n + 1} = e_{n} /D_{n} , n = 1, 2, 3, \dots  , N - 2, q_{1} = e_{0} /c_{0}, 
\\
D_{n} = c_{n} - a_{n} q_{n - 1} + p_{n} (a_{n} p_{n - 1} - b_{n}), n = 2, 3, \dots  , N, 
\\
\Delta _{1} = c_{1} - b_{1} p_{1} .

Достаточными условиями устойчивости пятиточечной прогонки являются диагональное преобразование и неравенства

\left|{p_n}\right| + \left|{q_n}\right| \le 1, n = 1, \ldots , N - 1, \left|{p_n}\right| \le 
1.

10.5. Матричная прогонка

Представим прогоночные соотношения для системы уравнений второго порядка

- B0u0 - C0u1 = D0, 
Anun - 1 - Bnun + Cnun + 1 = Dn, n = 1, 2, 3, ..., N - 1, 
An{u} - Bnun = Dn,

где un и Dn — векторы, Cn, An, Bn — матрицы.

Обратный ход прогонки выполняется в соответствии с формулами

un = Pn + 1un + 1 + qn + 1, 
un = qN+ 1.

Здесь Pn + 1матрица, qn + 1вектор.

Окончательный вид формул для прямого хода матричной прогонки будет

\begin{gather*}
P_{n + 1} = {(B_n - A_nP_n)}^{ - 1}C_n, n = 1, 2, 3, \ldots , N - 1, \\ 
P_1 = B_0^{- 1}C_0 ; \\ 
q_n = {(B_n - A_nP_n)}^{ - 1}(A_nq_n - D_n), n = 1, 2, 3, \ldots , N, \\ 
q_1 = B_0^{- 1}D_0.
\end{gather*}

Этот алгоритм называется методом матричной прогонки. Можно показать, что алгоритм матричной прогонки устойчив, если || Pn || < 1 для 1 \le n \le N ; матрицы B_0 и (Bn - AnPn) невырождены.

10.6. Численное решение нелинейных краевых задач

10.6.1. Метод стрельбы

Рассмотрим систему нелинейных ОДУ:

\left\{\begin{array}{l}
 \frac{d{u}}{dt} = f(u);\quad t \in [0, L], \\
 F\left[{u(0), {u}(L)}\right] = 0, \quad {u}, f, F \in R^n.   \\
 \end{array}\right.  $

Введем пока неизвестный вектор \alpha размерности n такой, что

\left\{\begin{array}{l}
 \frac{d{u}}{dt} = f(u), \\
 u(0) = \alpha \\
 \end{array}\right.  $

и решим соответствующую задачу Коши, например, методом Рунге - Кутты; получим решение u(t, \alpha ). Используя краевые условия, получаем нелинейную систему алгебраических уравнений

F(\alpha , u (L, \alpha)) = 0, \quad\mbox{или}\quad F(\alpha ) = 0,

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

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