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

Материал из testwiki
Перейти к навигации Перейти к поиску

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

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

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

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

Введение

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

Ut+j=1mAjUxj=b

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

A=ΩRΛΩL

Где ΩR=ΩL1 — матрица, составленная из правых собственных векторов матрицы A как из столбцов. Λ=diag[λ1,λ2,...,λn] — матрица собственных значений матрицы A.

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

Ut+j=1mFj(U)xj=B

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

Urn+1Urnδt+j=1mFj,r+1/2hjFj,r1/2hjhj=Br

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

Разностные схемы

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

Ut+λUx=0

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

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

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

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

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

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

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

Воспользуемся простейшими формулами для аппроксимации производных и получим: Umn+1Umnτ+λUmnUm1nh=0

Тогда для значения Umn+1 может быть выписано выражение в явном виде:

Umn+1=UmnτλUmnUm1nh

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

Приведенная схема не работает при λ<0.

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

Umn+1=UmnτλUmnUm1nh,λ0 Umn+1=UmnτλUm+1nUmnh,λ<0

Литература

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