Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Численное решение дифференциальных уравнений в частных производных.⇐ ПредыдущаяСтр 12 из 12
Для численного решения систем дифференциальных уравнений (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; Нарушение авторского права страницы