В этом примере показано, как решить систему дифференциальных уравнений в частных производных, которая использует ступенчатые функции в начальных условиях.
Рассмотрим PDE
1-c).
Уравнения включают постоянные параметры , , , и и определяются для и . Эти уравнения возникают в математической модели первых шагов ангиогенеза, связанного с опухолью [1]. t) представляет плотность клеток эндотелиальных клеток и , t) концентрацию белка, который они выделяют в ответ на опухоль.
Эта проблема имеет постоянное, устойчивое состояние, когда
.
Однако анализ стабильности предсказывает переход системы к неоднородному решению [1]. Таким образом, ступенчатые функции используются в качестве исходных условий для возмущения устойчивого состояния и стимулирования эволюции системы.
Граничные условия требуют, чтобы оба компонента раствора имели нулевой поток при 0 = 1.
=∂∂xc (1, t) = 0.
Чтобы решить эту систему уравнений в MATLAB, необходимо кодировать уравнения, начальные условия и граничные условия, затем выбрать подходящую сетку решения перед вызовом решателя pdepe. Требуемые функции можно либо включить в качестве локальных функций в конце файла (как здесь сделано), либо сохранить их как отдельные именованные файлы в каталоге по пути MATLAB.
Прежде чем кодировать уравнение, необходимо убедиться, что оно в форме, pdepe решатель ожидает:
x,t,u,∂u∂x).
Поскольку в системе ПДЭ существует два уравнения, система ПДЭ может быть переписана как
1-c)].
Значения коэффициентов в уравнении затем
0
11] (только диагональные значения)
n∂c∂x∂c∂x]
+ 1-c)]
Теперь можно создать функцию для кодирования уравнения. Функция должна иметь подпись [c,f,s] = angiopde(x,t,u,dudx):
x является независимой пространственной переменной.
t - независимая переменная времени.
u является зависимой переменной, дифференцируемой по отношению к x и t. Это двухэлементный вектор, где u(1) n t) иu(2) является t).
dudx - частная пространственная производная . Это двухэлементный вектор, где dudx(1) является и dudx(2) является .
Продукция c, f, и s соответствуют коэффициентам в стандартной форме уравнения PDE, ожидаемым pdepe.
В результате уравнения в этом примере могут быть представлены функцией:
function [c,f,s] = angiopde(x,t,u,dudx) d = 1e-3; a = 3.8; S = 3; r = 0.88; N = 1; c = [1; 1]; f = [d*dudx(1) - a*u(1)*dudx(2) dudx(2)]; s = [S*r*u(1)*(N - u(1)); S*(u(1)/(u(1) + 1) - u(2))]; end
(Примечание: Все функции включены в качестве локальных функций в конце примера.)
Затем запишите функцию, которая возвращает начальное условие. Начальное условие применяется при первом значении и предоставляет значение t0) t0) для любого значения x. Используйте сигнатуру функцииu0 = angioic(x) для записи функции.
Эта проблема имеет постоянное, устойчивое состояние, когда
.
Однако анализ стабильности предсказывает эволюцию системы в негомогенное решение [1]. Таким образом, ступенчатые функции используются в качестве исходных условий для возмущения установившегося состояния и стимулирования эволюции системы.
0.3≤x≤0.61.0005u20.3≤x≤0.6
Соответствующая функция:
function u0 = angioic(x) u0 = [1; 0.5]; if x >= 0.3 && x <= 0.6 u0(1) = 1.05 * u0(1); u0(2) = 1.0005 * u0(2); end end
Теперь напишите функцию, которая вычисляет граничные условия
=∂∂xc (1, t) = 0.
Для проблем, возникающих в интервале , граничные условия применяются для всех и a, = b. Стандартная форма для граничных условий, ожидаемых решателем:
x,t,u,∂u∂x) = 0.
Для 0 уравнение граничного условия
Таким образом, коэффициенты:
[00],
[11].
Для 1 граничные условия одинаковы, = [, t) = [11].
Граничная функция должна использовать сигнатуру функции [pl,ql,pr,qr] = angiobc(xl,ul,xr,ur,t), где:
Исходные данные xl и ul соответствуют и для левой границы.
Исходные данные xr и ur соответствуют и для правой границы.
t - независимая переменная времени.
Продукция pl и ql соответствуют u) x, t) для левой (x = 0 для этой задачи).
Продукция pr и qr соответствуют u) x, t) для правой (x = 1 для этой задачи).
Граничные условия в этом примере представлены функцией:
function [pl,ql,pr,qr] = angiobc(xl,ul,xr,ur,t) pl = [0; 0]; ql = [1; 1]; pr = pl; qr = ql; end
Для просмотра ограничивающего поведения уравнений требуется длительный временной интервал, поэтому используйте 10 точек в интервала. Кроме того, предельное распределение t) изменяется только примерно на 0,1% по 0≤x≤1 интервалу, поэтому подходящая относительно тонкая пространственная сетка с 50 точками.
x = linspace(0,1,50); t = linspace(0,200,10);
Наконец, решите уравнение, используя симметрию , уравнение PDE, начальное условие, граничные условия и сетки для и .
m = 0; sol = pdepe(m,@angiopde,@angioic,@angiobc,x,t);
pdepe возвращает решение в массиве 3-D sol, где sol(i,j,k) аппроксимирует kтретий компонент раствора оценен на t(i) и x(j). Извлеките компоненты решения в отдельные переменные.
n = sol(:,:,1); c = sol(:,:,2);
Создайте график поверхности компонентов решения и , построенный в выбранных точках сетки для и .
surf(x,t,c) title('c(x,t): Concentration of Fibronectin') xlabel('Distance x') ylabel('Time t')

surf(x,t,n) title('n(x,t): Density of Endothelial Cells') xlabel('Distance x') ylabel('Time t')

Теперь постройте график только конечных распределений решений при 200. Эти графики соответствуют рисункам 3 и 4 в [1].
plot(x,n(end,:))
title('Final distribution of n(x,t_f)')
plot(x,c(end,:))
title('Final distribution of c(x,t_f)')
[1] Хамфрис, М.Е. и М.А.Дж. Капеллан. «Математическая модель первых шагов ангиогенеза, связанного с опухолью: образование капиллярных ростков и вторичное разветвление». IMA Journal of Mathematics Applied in Medicine & Biology, 13 (1996), стр. 73-98.
Здесь перечислены локальные вспомогательные функции, которые вызывает pdepe решателя PDE для вычисления решения. Кроме того, эти функции можно сохранить в виде собственных файлов в каталоге по пути MATLAB.
function [c,f,s] = angiopde(x,t,u,dudx) % Equation to solve d = 1e-3; a = 3.8; S = 3; r = 0.88; N = 1; c = [1; 1]; f = [d*dudx(1) - a*u(1)*dudx(2) dudx(2)]; s = [S*r*u(1)*(N - u(1)); S*(u(1)/(u(1) + 1) - u(2))]; end % --------------------------------------------- function u0 = angioic(x) % Initial Conditions u0 = [1; 0.5]; if x >= 0.3 && x <= 0.6 u0(1) = 1.05 * u0(1); u0(2) = 1.0005 * u0(2); end end % --------------------------------------------- function [pl,ql,pr,qr] = angiobc(xl,ul,xr,ur,t) % Boundary Conditions pl = [0; 0]; ql = [1; 1]; pr = pl; qr = ql; end % ---------------------------------------------