Метод сеток для волнового уравнения

научная статья по теме МЕТОД СЕТОК ДЛЯ РЕШЕНИЯ ВОЛНОВОГО УРАВНЕНИЯ Общие и комплексные проблемы естественных и точных наук

Цена:

Авторы работы:

Научный журнал:

Год выхода:

Текст научной статьи на тему «МЕТОД СЕТОК ДЛЯ РЕШЕНИЯ ВОЛНОВОГО УРАВНЕНИЯ»

Титова Е.В., аспирант Московского педагогического государственного университета

МЕТОД СЕТОК ДЛЯ РЕШЕНИЯ ВОЛНОВОГО УРАВНЕНИЯ

Статья очень актуальна. Она раскрывает алгоритм решения волновых уравнений методом сеток. Этот алгоритм может быть реализован на ЭВМ.

THE METHOD OF NETS FOR SOLUTION OF THE WAVE EQUATION

The article is very topical. It discovers the algorithm of solution of the wave equations by method of nets. This algorithm may be realized on the computer.

Метод сеток (метод конечных разностей) используют для решения краевых задач математической физики.

Рассмотрим уравнение колебаний однородной ограниченной струны

удовлетворяющее краевым условиям:

, , где 0 по теме «Общие и комплексные проблемы естественных и точных наук»

ГАВРИЛОВ Н.М., КШЕВЕЦКИЙ С.П. — 2014 г.

КЕРИМОВ М.К. — 2011 г.

ERSHOV S.N., VAAGEN J.S., ZHUKOV M.V. — 2011 г.

DE MARTINI F., MATALONI P., VALLONE G. — 2010 г.

Спектральный метод на примере простых задач матфизики

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

Одномерная задача распространения тепла по стержню

Для начала рассмотрим простую одномерную задачу распространения тепла в стержне. Уравнение, описывающее распространение тепла при некотором начальном распределении температуры по стержню:

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

Но мы поступим иначе. Распределение температуры есть функция координаты и времени, и в каждый момент времени эта функция может быть представлена в виде суммы ряда Фурье, который в численном виде обрезается на n-ом члене:

Где u^«с крышечкой» — это коэффициенты разложения ряда Фурье. Подставим выражение для ряда в уравнение переноса тепла:

Получаем уравнение для коэффициентов Фурье, в котором отсутствует производная по координате! Теперь это обыкновенное дифференциальное уравнение, а не в частных производных, которое можно решить простым разностным методом. Уже легче, теперь остается найти коэффициенты разложения и в этом нам очень поможет быстрое преобразование Фурье (дальше FFT).

Логика здесь следующая:

1) в начальный момент времени дана функция координаты, описывающая распределение температуры по стержню;
2) разбиваем стержень на сетку из n точек;
3) находим комплексные коэффициенты Фурье с помощью алгоритма FFT, обозначим операцию как F(u);
4) умножаем полученные коэффиценты на -|k| 2 , получаем Фурье-образ второй производной. Аналогично можно получить Фурье-образ производной более высоких порядков p, достаточно умножить на (ik) p ;
5) делаем обратное преобразование Фурье F -1 (u), с помощью алгоритма IFFT, получаем значения второй производной в точках на сетке;
6) делаем шаг по времени, уже обычной разностной, явной или неявной, схемой;
7) повторяем.

Рассмотрим теперь как это работает в программе для Matlab/Octave. В качестве начального распределения температуры возьмем гладкую функцию u0=2+sin(x)+sin(2x), стержень длинной 2π разобьем на 50 точек, с шагом по времени h=0.1, граничные условия периодичные (кольцо).

Стоит отметить особенность алгоритма FFT в Matlab, связанную с тем, что полученные коэффициенты разложения на выходе d=fft(u) идут не по порядку, а смещены, первая половина на месте второй и наоборот. Cначала идут коэффициенты с номерами от 0 до n/2-1, потом с номерами от -n/2 до -1. С этим были проблемы…

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

Двумерное уравнение диффузии

Начальные условия: u0 = 1 + sin(2X) + cos(2Y), где u теперь 2d-массив u(i,j). Используем неявную схему интегрирования по времени (т.е. выразим m+1 шаг через m-й):

Можно доказать, что такая неявная схема никогда не расходится при η>0.5, будем использовать η=1. Таким образом каждое новое значение u m+1 получаем умножением u m на коэффициент μk, зависящий от временного шага и волновых чисел k, т.е. μk — это константа, которую не нужно пересчитывать на каждом шаге!

Двумерное волновое уравнение


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

Периодичные граничные условия:

Фиксированные граничные условия (0 на краях, отражение волн от границ):

Выводы

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

Преимуществами метода являются:

    Хорошая точность для «хороших» функций. С увеличением количества точек сетки n ошибка метода конечных разностей падает как O(N -m )) (где m — некая постоянная, которая зависит от порядка метода и гладкости функции), а для спектрального метода точность может быть экспоненциальной O(c N ), где 0


источники:

http://habr.com/ru/post/267401/