Решение систем дифференциальных уравнений

Материал из Викиучебника

Перейти к: навигация, поиск
Вычислительная математика:

Интерполяция и аппроксимация функций
Решение систем скалярных уравнений
Решение систем дифференциальных уравнений
Решение систем интегро-дифференциальных уравнений

Численные методы математической статистики

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

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

Часто для получения такого приближения используют т. н. сеточную аппроксимацию функций. То есть вместо функций непрерывного аргумента вводят функции дискретного аргумента. А вместо дифференциальных операторов — разностные. Будем называть параметром сетки такую величину h, что расстояние между любыми двумя соседними узлами сетки не превосходит h.

Содержание

[править] Гиперболические уравнения

[править] Введение

Системы гиперболических уравнений возникают во многих задачах вычислительной физики. Хороший и весьма глубоко проработанный пример — газовая динамика. В приложениях часто используются гиперболические системы уравнений, представляемые в виде:


\frac{\partial \vec U}{\partial t} + \sum_{j=1}^m A_j\frac{\partial \vec U}{\partial x_j} = \vec b

Где матрица A имеет полный набор собственных векторов и, соответственно, представима в виде

A = ΩRΛΩL

Где  \Omega_R=\Omega_L^{-1} — матрица, составленная из правых собственных векторов матрицы A как из столбцов. Λ = diag12,...,λn] — матрица собственных значений матрицы A.

Эта форма записи называется неконсервативной, в противовес не менее часто используемой консервативной форме, связанной с физическими законами сохранения в явном виде:


\frac{\partial \vec U}{\partial t} + \sum_{j=1}^m \frac{\partial F_j(\vec U)}{\partial x_j} = \vec B

Дело в том, разностная схема для консервативной формы уравнений, записанная в виде


\frac{\vec U^{n+1}_{\vec r}-\vec U^n_{\vec r}}{\delta t} + \sum_{j=1}^m \frac{F_{j,\vec r+1/2\vec h_j} - F_{j,\vec r-1/2\vec h_j} }{h_j} = \vec B_{\vec r}

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

[править] Разностные схемы

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

\frac{\partial U}{\partial t}+\lambda\frac{\partial U}{\partial x}=0

Где U — искомая функция переменных (x,t). λ — некоторая постоянная.

Это уравнение очень удобно уже тем, что нам хорошо известно его аналитическое решение:

U(x,t) = U0(x − λt)

где U0(x) — произвольная функция.

Первый и естественный вопрос, который сразу же возникает — а зачем численно решать уравнение, для которого известно аналитическое решение? Ответ прост — дело в том, что это уравнение будет «вылезать» из решения сложных многомерных систем, и параметры, которые в него входят будут меняться в зависимости от решения да и заданы будут не всюду, а лишь в некоторых точках, что делает прямое применение аналитического решения невозможным.

Итак, приступим к построению простейшей схемы для данного уравнения.

Пусть функция U задана на узлах пространственной сетки xm в момент времени tn и мы хотим получить ее значения в тех же узлах в момент tn + 1.

Воспользуемся простейшими формулами для аппроксимации производных и получим: 
\frac{U^{n+1}_m-U^n_m}{\tau} + \lambda \frac{U^n_m-U^n_{m-1}}{h} = 0

Тогда для значения U^{n+1}_m может быть выписано выражение в явном виде:


U^{n+1}_m=U_m^n-\tau \lambda \frac{U^n_m-U^n_{m-1}}{h}

Эта простейшая схема может быть легко реализована и запущена. См пункт реализация.

Читатель может легко убедиться, что приведенная схема не работает при λ < 0. Вопрос — почему?

Ответ достаточно очевиден — «перенос» справа налево не работает в схеме, в которой нет точек справа. Хотелось бы добавить в схему что-то вроде Um + 1. Как это сделать? Простейший способ — построить «комбинированную» схему:


U^{n+1}_m=U_m^n-\tau \lambda \frac{U^n_m-U^n_{m-1}}{h}, \lambda\ge 0

U^{n+1}_m=U_m^n-\tau \lambda \frac{U^n_{m+1}-U^n_m}{h}, \lambda<0

[править] Литература

  • Куликовский А. Г., Погорелов Н. В., Семенов А. Ю. Математические вопросы численного решения гиперболических систем уравнений. — М.:ФИЗМАТЛИТ,2001. — 608с. — ISBN 5-9221-0194-3