Иллюстрированный самоучитель по MatLab

Пакет Partial Differential Equations Toolbox

Специалистов в области численных методов решения дифференциальных уравнений в частных производных несомненно заинтересует обширный пакет Partial Differential Equations Toolbox (PDETB). Хотя этот пакет является самостоятельным приложением и в ядро MATLAB не входит, мы приведем краткое описание некоторых его возможностей с парой примеров. Вы можете вызвать пакет с его графическим интерфейсом командой pdetool.

Поскольку ряд применений пакета – PDETB связан с проблемами анализа и оптимизации трехмерных поверхностей и оболочек, в пакет введены удобные функции для построения их графиков. Они могут использоваться совместно с функцией pdeplot, что иллюстрирует следующий пример:

[p,e,t]=initmesh('Ishapeg');
u=assempde('Ishapeb'p.e.t.1.0.1):
pdeplottp.e.t.'xydata',u.'zdata'.u.'mesh'.'off'):

В состав пакета входит ряд полезных демонстрационных примеров с именами от pdedemo1 до pdedemo8. Их можно запустить как из командной строки (путем указания имени), так из окна демонстрационных примеров Demos. Рекомендуется, однако, сделать это из командной строки, так как примеры ориентированы на управление в командном режиме – в основном оно сводится к нажатию клавиши Enter для прерывания пауз, введенных для просмотра промежуточных результатов вычислений.

Рассмотрим пример pdedemoS, решающий проблему минимизации параболической поверхности решением дифференциального уравнения:

-div(1/sqrt(1+grad|u| ^2) * grad(u)) = 0

При граничном условии u=х*2. Ниже представлен текст файла pdedemo3.m с убранными англоязычными комментариями:

%PDEDEM03 Решение проблемы минимизации параболической поверхности
echo on
clc
g='circleg': % Единичная окружность
b='circleb2': % х ^ 2 - граничное условие
c='1./sqrt(l+ux.*2+uy.*2)':
а=0;
f=0:
rto1=1e-3; % Погрешность вычислений решателем
pause % Пауза в вычислениях
clc
% Генерация поверхности
[p,e,t]=initmesh(g); [p,e.t]-refinemesh(g.p.e.t);
% Решение нелинейной проблемы
u=pdenonlin(b.p.e,t.c.a.f,'tol'.rtol);
pdesurf(p.t.u);
pause % Пауза в вычислениях
echo off

Весьма интересны и поучительны примеры с анимацией: pdedemo2 – появление и распространение волн, pdedemoS – вздутие поверхности (пузырек газа), pdedemo6 – колебания плоскости (гиперболическая проблема) и т. д. К сожалению, они представлены слишком объемными файлами, что не позволяет воспроизвести их в книге учебного характера. Однако вам их несомненно стоит просмотреть самостоятельно.

Что нового мы узнали?

В этом уроке мы научились:

  • Решать системы линейных уравнений точными и приближенными методами.
  • Решать системы линейных уравнений с разреженными матрицами.
  • Вычислять нули функции одной переменной.
  • Минимизировать функции одной и нескольких переменных.
  • Аппроксимировать производные конечными разностями.
  • Вычислять интегралы численными методами.
  • Выполнять операции с полиномами.
  • Использовать решатели ОДУ.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.