В этом примере показано, как сформулировать, вычислите и постройте решение системы двух дифференциальных уравнений с частными производными.
Рассмотрите систему УЧП
(Функция используется в качестве сокращения.)
Уравнение держится интервал в течение многих времен . Начальные условия
Граничные условия
Чтобы решить это уравнение в MATLAB, необходимо закодировать уравнение, начальные условия и граничные условия, затем выбрать подходящую mesh решения прежде, чем вызвать решатель pdepe. Вы любой может включать необходимые функции как локальные функции в конце файла (как сделано здесь) или сохранить их как отдельные, именованные файлы в директории на пути MATLAB.
Прежде чем можно будет закодировать уравнение, необходимо убедиться что именно в форме pdepe решатель ожидает:
В этой форме коэффициенты УЧП с матричным знаком, и уравнение становится
Таким образом, значения коэффициентов в уравнении
(только диагональные значения)
Теперь можно создать функцию, чтобы закодировать уравнение. Функция должна иметь подпись [c,f,s] = pdefun(x,t,u,dudx):
x независимая пространственная переменная.
t независимая переменная времени.
u зависимая переменная, дифференцируемая относительно x и t. Это - двухэлементный вектор где u(1) и u(2) .
dudx частичная пространственная производная . Это - двухэлементный вектор где dudx(1) и dudx(2) .
Выходные параметры cF, и s соответствуйте коэффициентам в стандартной форме уравнения УЧП, ожидаемой pdepe.
В результате уравнения в этом примере могут быть представлены функцией:
function [c,f,s] = pdefun(x,t,u,dudx) c = [1; 1]; f = [0.024; 0.17] .* dudx; y = u(1) - u(2); F = exp(5.73*y)-exp(-11.47*y); s = [-F; F]; end
(Примечание: Все функции включены как локальные функции в конце примера.)
Затем запишите функцию, которая возвращает начальное условие. Начальное условие применяется в первой временной стоимости и вводит значение для любого значения x. Количество начальных условий должно равняться количеству уравнений, таким образом, для этой проблемы существует два начальных условия. Используйте функциональную подпись u0 = pdeic(x) записать функцию.
Начальные условия
Соответствующая функция
function u0 = pdeic(x) u0 = [1; 0]; end
Теперь запишите функцию, которая оценивает граничные условия
Для проблем, созданных на интервале , граничные условия применяются ко всем и также или . Стандартная форма для граничных условий, ожидаемых решателем,
Написанный в этой форме, граничных условиях для частных производных должен быть выражен в терминах потока . Таким образом, граничные условия для этой проблемы
Для , уравнение
Коэффициенты:
Аналогично, для уравнение
Коэффициенты:
Граничная функция должна использовать функциональную подпись [pl,ql,pr,qr] = pdebc(xl,ul,xr,ur,t):
Входные параметры xl и ul соответствовать и для левого контура.
Входные параметры xr и ur соответствовать и для правильного контура.
t независимая переменная времени.
Выходные параметры pl и ql соответствовать и для левого контура ( для этой проблемы).
Выходные параметры pr и qr соответствовать и для правильного контура ( для этой проблемы).
Граничные условия в этом примере представлены функцией:
function [pl,ql,pr,qr] = pdebc(xl,ul,xr,ur,t) pl = [0; ul(2)]; ql = [1; 0]; pr = [ur(1)-1; 0]; qr = [0; 1]; end
Решение этой проблемы изменяется быстро когда мал. Несмотря на то, что pdepe выбирает временной шаг, который является соответствующим, чтобы разрешить резкие изменения, видеть, что поведение в выходе строит вас, должен выбрать соответствующие выходные времена. Для пространственной mesh существуют пограничные слои в решении в обоих концах , таким образом, необходимо задать точки mesh там, чтобы разрешить резкие изменения.
x = [0 0.005 0.01 0.05 0.1 0.2 0.5 0.7 0.9 0.95 0.99 0.995 1]; t = [0 0.005 0.01 0.05 0.1 0.5 1 1.5 2];
Наконец, решите уравнение с помощью симметрии , уравнение УЧП, начальные условия, граничные условия и сетки для и .
m = 0; sol = pdepe(m,@pdefun,@pdeic,@pdebc,x,t);
pdepe возвращает решение в трехмерном массиве sol, где sol(i,j,k) аппроксимирует kкомпонент th решения оцененный в t(i) и x(j). Извлеките каждый компонент решения в отдельную переменную.
u1 = sol(:,:,1); u2 = sol(:,:,2);
Создайте объемные поверхностные диаграммы решений для и построенный в выбранной mesh указывает для и .
surf(x,t,u1) title('u_1(x,t)') xlabel('Distance x') ylabel('Time t')

surf(x,t,u2) title('u_2(x,t)') xlabel('Distance x') ylabel('Time t')

Перечисленный здесь локальные функции помощника что решатель УЧП pdepe вызовы, чтобы вычислить решение. В качестве альтернативы можно сохранить эти функции как их собственные файлы в директории на пути MATLAB.
function [c,f,s] = pdefun(x,t,u,dudx) % Equation to solve c = [1; 1]; f = [0.024; 0.17] .* dudx; y = u(1) - u(2); F = exp(5.73*y)-exp(-11.47*y); s = [-F; F]; end % --------------------------------------------- function u0 = pdeic(x) % Initial Conditions u0 = [1; 0]; end % --------------------------------------------- function [pl,ql,pr,qr] = pdebc(xl,ul,xr,ur,t) % Boundary Conditions pl = [0; ul(2)]; ql = [1; 0]; pr = [ur(1)-1; 0]; qr = [0; 1]; end % ---------------------------------------------