В partial differential equation (PDE) функция, для которой решается, зависит от нескольких переменных, и дифференциальное уравнение может включать производные с частными производными, взятыми относительно каждой из переменных. Дифференциальные уравнения с частными производными применяются для моделирования волн, теплового потока, дисперсии жидкости и других явлений с пространственным поведением, которое изменяется с течением времени.
MATLAB® УЧП pdepe
решает задачи начального-краевого значения для систем PDE в одной пространственной переменной x и времени t. Можно думать о них как об ОДУ одной переменной, которые также изменяются относительно времени.
pdepe
использует неформальную классификацию для 1-D уравнений, которые он решает:
Уравнения с производной по времени являются parabolic. Примером является тепловое уравнение .
Уравнения без производной по времени являются elliptic. Примером является уравнение Лапласа .
pdepe
требует по меньшей мере одного параболического уравнения в системе. Другими словами, по меньшей мере одно уравнение в системе должно включать производную по времени.
pdepe
также решает некоторые 2-D и 3-D задачи, которые сводятся к 1-D задачам из-за угловой симметрии (см. описание аргумента для константы симметрии m
для получения дополнительной информации.
Partial Differential Equation Toolbox™ расширяет эту функциональность до обобщенных задач в 2-D и 3-D с контуром состояниями Дирихле и Неймана.
1-D УЧП включает u функции (x, t), которая зависит от временных t и одной пространственной переменной x. Решатель MATLAB PDE pdepe
решает системы 1-D параболических и эллиптических PDE вида
Уравнение имеет свойства:
УЧП держится для <reservedrangesplaceholder6> 0 <reservedrangesplaceholder5> <reservedrangesplaceholder4> <reservedrangesplaceholder3> и <reservedrangesplaceholder2> ≤ <reservedrangesplaceholder1> ≤ <reservedrangesplaceholder0>.
Пространственный интервал [a, b] должен быть конечным.
m
может быть 0, 1 или 2, соответствующий плите, цилиндрической или сферической симметрии, соответственно. Если m > 0, то a ≥ 0 также должен удерживаться.
Коэффициент является термином потока и - исходный термин.
Член потока должен зависеть от частной производной ∂ u/ ∂ x.
Связывание частных производных по времени ограничено умножением на диагональную матрицу . Диагональные элементы этой матрицы либо нулевые, либо положительные. Элемент, который равен нулю, соответствует эллиптическому уравнению, и любой другой элемент соответствует параболическому уравнению. Должно быть по крайней мере одно параболическое уравнение. Элемент c, который соответствует параболическому уравнению, может исчезнуть при изолированных значениях x, если они являются узловыми точками (точками, где оценивается решение). Разрывы в c и s из-за интерфейсов материала допускаются при условии, что точка сетки размещена на каждом интерфейсе.
Для решения PDE с pdepe
необходимо задать коэффициенты уравнения для c, f и s, начальных условий, поведения решения на контурах и mesh точек, чтобы вычислить решение на. Вызов функции sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan)
использует эту информацию для вычисления решения в указанном mesh:
Вместе, xmesh
и tspan
векторы образуют 2-D сетку, которая pdepe
оценивает решение на.
Необходимо выразить PDE в стандартной форме, ожидаемой pdepe
. Написанная в этой форме, вы можете считать значения коэффициентов c, f и s.
В MATLAB можно кодировать уравнения с функцией вида
function [c,f,s] = pdefun(x,t,u,dudx) c = 1; f = dudx; s = 0; end
pdefun
определяет уравнение . Если существует несколько уравнений, то c, f и s являются векторами с каждым элементом, соответствующим одному уравнению.В начальное время t = t 0 для всех x компоненты решения удовлетворяют начальным условиям вида
В MATLAB можно кодировать начальные условия с функцией вида
function u0 = icfun(x) u0 = 1; end
u0 = 1
задает начальное условие u 0 (x, t 0) = 1. Если существует несколько уравнений, то u0
является вектором с каждым элементом, определяющим начальное условие одного уравнения.На контуре x = a или x = b, для всех t компоненты решения удовлетворяют граничным условиям вида
q (x, t) является матрицей диагонали с элементами, которые либо равны нулю, либо никогда не равны нулю. Обратите внимание, что граничные условия выражены в терминах f потока, а не частной производной u относительно x. Кроме того, из двух коэффициентов p (x, t, u) и q (x, t), только p могут зависеть от u.
В MATLAB можно кодировать граничные условия с функцией вида
function [pL,qL,pR,qR] = bcfun(xL,uL,xR,uR,t) pL = uL; qL = 0; pR = uR - 1; qR = 0; end
pL
и qL
являются коэффициентами для левого контура, в то время как pR
и qR
являются коэффициентами для правого контура. В этом случае bcfun
определяет граничные условияЕсли существует несколько уравнений, то выходы pL
, qL
, pR
, и qR
являются векторами с каждым элементом, определяющим граничное условие одного уравнения.
Свойства интегрирования по умолчанию в решателе MATLAB PDE выбираются для решения общих задач. В некоторых случаях можно улучшить эффективность решателя, переопределив эти значения по умолчанию. Для этого используйте odeset
для создания options
структура. Затем передайте структуру в pdepe
как последний входной параметр:
sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan,options)
Из опций для базового решателя ОДУ ode15s
, доступны только те, что показаны в следующей таблице для pdepe
.
Категория | Имя опции |
---|---|
Управление ошибками | |
Размер шага | |
Логгирование событий |
После того, как вы решите уравнение с pdepe
MATLAB возвращает решение как трехмерный массив sol
, где sol(i,j,k)
содержит k
первый компонент решения, оцениваемый в t(i)
и x(j)
. В целом можно извлечь k
компонент решения с командой u = sol(:,:,k)
.
Заданная вами временный mesh используется исключительно в выходных целях и не влияет на внутренние временные шаги, предпринятые решателем. Однако заданная вами пространственный mesh может повлиять на качество и скорость решения. После решения уравнения можно использовать pdeval
для оценки структуры решения, возвращенной pdepe
с другим пространственным mesh.
Примером параболического УЧП является тепловое уравнение в одной размерности:
Это уравнение описывает рассеивание тепла для и . Цель - решить для температуры . Температура первоначально ненулевая константа, поэтому начальное условие является
Кроме того, температура равна нулю на левом контуре и ненулевой на правом контуре, поэтому граничные условия
Чтобы решить это уравнение в MATLAB, необходимо кодировать уравнение, начальные условия и граничные условия, затем выбрать подходящий mesh решения перед вызовом решателя pdepe
. Можно либо включить необходимые функции в качестве локальных функций в конце файла (как в этом примере), либо сохранить их как отдельные, именованные файлы в директории по пути MATLAB.
Кодовое уравнение
Прежде чем вы сможете кодировать уравнение, необходимо убедиться, что это в том виде, в котором pdepe
решатель ожидает:
В этой форме тепловое уравнение
Таким образом, значения коэффициентов следующие:
Значение передается как аргумент в pdepe
, в то время как другие коэффициенты закодированы в функции для уравнения, которое
function [c,f,s] = heatpde(x,t,u,dudx) c = 1; f = dudx; s = 0; end
(Примечание. Все функции включены в качестве локальных функций в конце примера.)
Начальное условие кода
Функция начального условия для уравнения тепла присваивает постоянное значение для . Эта функция должна принять вход для , даже если он не используется.
function u0 = heatic(x) u0 = 0.5; end
Граничные условия кода
Стандартная форма для граничных условий, ожидаемых pdepe
решатель есть
Написанные в этой форме, граничные условия для этой задачи
Так что значения для и являются
.
Соответствующая функция тогда
function [pl,ql,pr,qr] = heatbc(xl,ul,xr,ur,t) pl = ul; ql = 0; pr = ur - 1; qr = 0; end
Выберите Mesh решения
Используйте пространственный mesh из 20 точек и временный mesh из 30 точек. Поскольку решение быстро достигает устойчивого состояния, время близко более тесно разделены вместе, чтобы захватить это поведение в выходах.
L = 1; x = linspace(0,L,20); t = [linspace(0,0.05,20), linspace(0.5,5,10)];
Решение уравнения
Наконец, решите уравнение, используя симметрию , уравнение УЧП, начальное условие, граничные условия и сетки для и .
m = 0; sol = pdepe(m,@heatpde,@heatic,@heatbc,x,t);
Решение для построения графика
Использование imagesc
чтобы визуализировать матрицу решения.
colormap hot imagesc(x,t,sol) colorbar xlabel('Distance x','interpreter','latex') ylabel('Time t','interpreter','latex') title('Heat Equation for $0 \le x \le 1$ and $0 \le t \le 5$','interpreter','latex')
Локальные функции
function [c,f,s] = heatpde(x,t,u,dudx) c = 1; f = dudx; s = 0; end function u0 = heatic(x) u0 = 0.5; end function [pl,ql,pr,qr] = heatbc(xl,ul,xr,ur,t) pl = ul; ql = 0; pr = ur - 1; qr = 0; end
Несколько доступных примерных файлов служат отличными начальными точками для большинства распространенных задач 1-D УЧП. Чтобы исследовать и запустить примеры, используйте Примеры дифференциальных уравнений, приложение. Чтобы запустить это приложение, введите
odeexamples
Чтобы открыть отдельный файл для редактирования, введите
edit exampleFileName.m
Чтобы запустить пример, введите
exampleFileName
Эта таблица содержит список доступных файлов примера УЧП.
Пример файла | Описание | Пример ссылки |
---|---|---|
| Простой УЧП, который иллюстрирует формулировку, расчет и графическое изображение решения. | |
| Проблема, которая включает разрывы. | |
| Задача, которая требует вычисления значений частной производной. | |
| Система из два уЧП, решение которой имеет граничные слои на обоих концах интервала и быстро изменяется для малых t. | |
| Система PDE с шагом функционирует как начальные условия. |
[1] Skeel, R. D. and M. Berzins, «A Method for the Spatial Discretization of Parabolic Equations in One Space Variable», SIAM Journal on Scientific and Statistical Computing, Vol., 1990, pp. 1-32.
bvp4c
| ode45
| odeset
| pdepe
| pdeval