Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Численное решение дифференциальных уравнений в частных производных.



 

Для численного решения систем дифференциальных уравнений (PDE) второго порядка следует использовать пакет прикладных программ под названием Partial Differential Equations Toolbox. Укажем основные возможности пакета:

 

· автоматический и адаптивный выбор сетки;

· задание смешанных граничных условий, условий Дирихле и Неймана;

· использование нелинейных и адаптивных расчетных схем;

· визуализация решения.

 

Для решения гиперболических PDE, имеющих вид , служит функция hyperbolic. Рассмотрим один из нескольких имеющихся форматов вызова:

 

u1=hyperbolic(u0, ut0, tlist, b, p, e, t, c, a, f, d).

 

Здесь параметры p, e и t описывают сетку расчетной области. Детали можно посмотреть в описании функции initmesh, которая проводит триангуляцию расчетной области.

Параметр b отвечает за постановку граничных условий. Он может быть матрицей или именем m-файла. Граничные условия могут зависеть от времени t. Подробности можно найти в описаниях функций assemb и pdebound.

Коэффициенты c, a, d, и f можно задавать различными способами, они могут также зависеть от времени t. Детали изложены в описании функции assempde.

Параметры u0 и ut0 задают значение функции и производной в начальный момент времени.

В случае единственного уравнения, каждая строка матрицы u1 содержит решение в узлах сетки, координаты которых задаются соответствующим столбцом в p. Каждый столбец в u1 является решением в момент времени, который определяется соответствующей координатой вектора tlist.

Если решается система из N уравнений на сетке из np узлов, то первые np строк из u1 описывают первую компоненту решения u; следующие np строк описывают вторую компоненту u, и так далее.

 

Рассмотрим решение уравнения колебания мембраны

в квадратной области (squareg), с граничными условиями Дирихле

для ,

 

и граничными условиями Неймана

 

для (squareb3).

Положим

 

и .

 

Решение будем искать на временном интервале от 0 до 5 с шагом 1/6.

 

[p, e, t]=initmesh('squareg');

x=p(1, : )'; y=p(2, : )';

u0=atan(cos(pi/2*x));

ut0=3*sin(pi*x).*exp(cos(pi*y));

tlist=linspace(0, 5, 31);

uu=hyperbolic(u0, ut0, tlist, 'squareb3', p, e, t, 1, 0, 0, 1);

 

Построим график решения на третьем временном слое с помощью функции pdeplot:

 

umax=max(max(uu)); umin=min(min(uu)); i=3;

pdeplot(p, e, t, 'xydata', uu(: , i), 'zdata', uu(: , i), 'zstyle', 'continuous', 'mesh', 'on', 'colorbar', 'off');

axis([-1 1 -1 1 umin umax]); caxis([umin umax]);

 

Для решения параболических PDE, имеющих вид , служит функция parabolic.

 

Рассмотрим решение уравнения теплопроводности

 

в квадратной области (squareg), с граничными условиями Дирихле

 

(squareb1).

 

Положим в начальный момент времени

 

при , и в противном случае.

 

Решение будем искать на временном интервале от 0 до 0.1 с шагом 1/20.

 

[p, e, t]=initmesh('squareg');

[p, e, t]=refinemesh('squareg', p, e, t);

u0=zeros(size(p, 2), 1);

ix=find(sqrt(p(1, : ).^2+p(2, : ).^2)< 0.4);

u0(ix)=ones(size(ix));

tlist=linspace(0, 0.1, 21);

uu=parabolic(u0, tlist, 'squareb1', p, e, t, 1, 0, 1, 1);

 

Построим график решения на одиннадцатом шаге по времени с помощью функции pdeplot, используя команды из предыдущего примера:

 

Для решения эллиптических PDE, имеющих вид , служит функция assempde.

 

Решим уравнение

 

в области L – образной формы:

При решении будем использовать однородные граничные условия Дирихле.

Построим триангуляционную сетку узлов:

 

[p, e, t]=initmesh('lshapeg', 'Hmax', 0.2);

[p, e, t]=refinemesh('lshapeg', p, e, t);

pdemesh(p, e, t)

 

 

Решим уравнение Пуассона:

 

u=assempde('lshapeb', p, e, t, 1, 0, 1);

 

Построим график:

 

pdeplot(p, [], t, 'xydata', u, 'xystyle', 'flat', 'zdata', u, 'zstyle', 'continuous', 'mesh', 'on', 'colorbar', 'off');

colormap(cool);

view(164, 28);

 

 

ЛИТЕРАТУРА

 

1. Гультяев А. MATLAB 5.2. Имитационное моделирование в среде Windows. – СПб.: КОРОНА-принт, 1999.

2. Дьяконов В.П., Абраменкова B.В. MATLAB 5.0/5.3. Система символьной математики. – М.: Нолидж, 1999.

3. Дьяконов В.П. MATLAB: учебный курс. - СПб: Питер, 2001.

4. Мартынов Н.Н., Иванов А.П. MATLAB 5.x. Вычисления, визуализация, программирование. – М.: КУДИЦ-ОБРАЗ, 2000.

5. Потемкин В.Г. Система инженерных и научных расчетов MATLAB 5.x. В 2-х т. - М.: ДИАЛОГ-МИФИ, 1999.

6. William W. Broenkow. Introduction to Programming with MATLAB for Scientists and Engineers, 2e. – ML Books, 2001.

7. Gerald W. Recktenwald. Numerical Methods with MATLAB: Implementation and Application. – Prentice Hall, 2000.

8. Peter R. Turner. Guide to Scientific Computing, 2e. – Macmillian Press, 2000.

9. Huiaichen Chen. MATLAB and Its Application Guide in Engineering Courses. – Xidian University Press, 2000.

 

 


Поделиться:



Последнее изменение этой страницы: 2017-03-17; Просмотров: 632; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.023 с.)
Главная | Случайная страница | Обратная связь