Метод конечных разностей

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

Метод конечных разностей для решения задачи Дирихле

Рассмотрим двухмерное уравнение Лапласа в декартовых координатах. Это уравнение возникает во многих стационарных физических задачах механики, теплопроводности, электростатики, гидравлики, то реализовав его решение один раз, можно будет впоследствии использовать его в различных прикладных физических задачах. Пусть на плоскости (x, y) задана некоторая область G, ограниченная замкнутой кривой Г. Другими словами есть плоскость и есть какой-то контур, вот всё что внутри этого контура это G, а граница это Г.

(1), 

а так же заданно граничное условие 

(2).

Задача (1)-(2) называется задачей Дирихле для уравнения Лапласа. В целом ряде случаев дифференциальные уравнения не имеют полного аналитического решения, то для решения задачи (1)-(2) воспользуемся методом конечных разностей. Для этого введём на области G+Г сетку и аппроксимируем на ней уравнение и краевое условие. 

Аппроксимация

Начнём с аппроксимации уравнения Лапласа. Под аппроксимацией понимается получение приближённого численного значения, видно, что слагаемые из формулы (1) заменяются на их приближённые значения на основе определения производной.

,

где hx и hy это шаг по x и по y соответственно.

Таким образом уравнение Лапласа приведено к разностному уравнению

,

которое определено на пятиклеточном шаблоне «крест», состоящем из точек (x, y), (x — hx, y), (x, y — hy), (x — hx, y), (x, y — hy), изображённом на рис. 1. Значение f(x, y) в центре шаблона есть среднее арифметическое значений остальных узлов шаблона. Эта формула является разностным аналогом формулы среднего значения для гармонической функции.

Схема крест

Рис. 1. Схема крест

Построение области

Для того чтобы построить разностный аналог задачи Дирихле необходимо провести 2 семейства параллельных прямых x = a*hx и y = b*hy, a, b = 0, ±1, … будем считать, что начало координат находится внутри области G. Точки (ahx, bhy) назовём узлами сетки. Два узла называются соседними, если они лежат на прямой параллельной оси Ox или оси Oy, и находятся в расстоянии одного шага, т.е. hx или hy соответственно. Назовём узел регулярным, если все его соседние узлы лежат внутри области G+Г. Если узел лежит внутри G, но хотя бы один его соседний узел находится вне G, то такой узел будем считать нерегулярным. Точки пересечения границы Г с прямыми x = a*hx и y = b*hy назовём граничными узлами. На рис. 2 экземпляр такой области.

Пример области для задачи Дирихле
Рис. 2. Область с регулярными узлами (показанны чёрным), нерегулярными (тёмно-серые точки) и граничными узлами (светло-серые точки)

Будем считать, что сетка обладает свойством связности, т. е. любые два внутренних узла можно соединить ломанной, проходящей через внутренние узлы и состоящей из прямых параллельных оси Ox или оси Oy.

Теперь запишем в регулярных узлах разностное уравнение, а в граничных узлах запишем граничное условие. В нерегулярных узлах запишем уравнения интерполяции второго порядка, т. е. пятиточечную схему на неравномерной сетке. Примеры неравномерных сеток можно увидеть на рис. 3. Тогда значение f(x, y) в нерегулярном узле равно:

, где

,

.

Здесь hi расстояние между центром шаблона и вершиной i.

Пример граничных условий
Рис 3. Примеры неравномерных сеток с одним и двумя внешними узлами

Пусть w — множество всех регулярных узлов сетки, w* — всех нерегулярных узлов сетки, а v — множество граничных узлов сетки, тогда сформулируем разностную задачу:

,

,

.

После всех этих действий получим матрицу узловых значений сетки. Для этого просто впишем область G+Г в прямоугольник и дополним множество узлов внешними узлами, которые лежат в прямоугольнике, но не лежат в области G+Г. Затем запишем построчно значения узлов в матрицу размера равного размеру прямоугольника, если считать за высоту столбца количество узлов по вертикали и за длину строки количество узлов по горизонтали. Значения внешних узлов примем за ноль, поскольку они в вычислениях не участвуют. Неизвестные значения внутренних узлов так же примем за ноль. По сути, при начале вычислений матрица будет заполнена нулями и граничными значениями.

Итоги

Теперь подытоживая вышесказанное. Нам нужно было решить дифференциальное уравнение, которое получено из какой-то физической задачи или процесса (например теплопроводность нагреваемой пластины). Сначала мы выбрали схему. В данном случае это схема крест, но это не единственная схема, просто для данной задачи она наиболее подходящая. Другие схемы я не применял, но может упомяну о них в следующих статьях. В общем, схему выбрали, дифференциальное уравнение аппроксимировали, чтобы можно было считать его. Отлично, дальше нужно область подготовить. Пластина же не обязательно прямоугольник. Это может быть сложный профиль, поэтому следует подготовить граничные значения. В данном случае граничные значения это просто среднее арифметическое. Метод не самый лучший, не самый точной, зато самый просто с реализации.

Comment ( 1 )

  1. Решение задачи Дирихле - BioAPI
    […] предыдущей статье было описан метод конечных разностей для решения задачи Дирихле. Однако, он будет не полным […]

Leave a reply

Your email address will not be published.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.