Решите систему PDE с начальными функциями шага условия

Этот пример показывает, как решить систему дифференциальных уравнений с частными производными, которая использует функции шага в начальных условиях.

Рассмотрите PDE

nt=x[dnx-ancx]+Srn(N-n),ct=2cx2+S(nn+1-c).

Уравнения включают постоянные параметры d, a, S, r, и N, и определены для 0x1 и t0. Эти уравнения возникают в математической модели первых этапов ангиогенеза, связанного с опухолью [1]. n(x,t) представляет плотность камер эндотелиальных камер, и c(x,t) концентрация белка, который они выделяют в ответ на опухоль.

Эта задача имеет постоянное, устойчивое состояние, когда

[n0c0]=[10.5].

Однако анализ устойчивости предсказывает эволюцию системы в неоднородное решение [1]. Таким образом, шаговые функции используются в качестве начальных условий для возмущения устойчивого состояния и стимулирования эволюции системы.

Граничные условия требуют, чтобы оба компонента решения имели нулевой поток x=0 и x=1.

xn(0,t)=xn(1,t)=0,xc(0,t)=xc(1,t)=0.

Чтобы решить эту систему уравнений в MATLAB, необходимо кодировать уравнения, начальные условия и граничные условия, затем выбрать подходящий mesh решения перед вызовом решателя pdepe. Можно либо включить необходимые функции в качестве локальных функций в конце файла (как это сделано здесь), либо сохранить их как отдельные, именованные файлы в директории по пути MATLAB.

Кодовое уравнение

Прежде чем вы сможете кодировать уравнение, необходимо убедиться, что это в том виде, в котором pdepe решатель ожидает:

c(x,t,u,ux)ut=x-mx(xmf(x,t,u,ux))+s(x,t,u,ux).

Поскольку в системе PDE существует два уравнения, система PDE может быть переписана как

[1001]t[nc]=x[dnx-ancxcx]+[Srn(N-n)S(nn+1-c)].

Значения коэффициентов в уравнении тогда

m=0

c(x,t,u,ux)=[11] (только по диагонали)

f(x,t,u,ux)=[dnx-ancxcx]

s(x,t,u,ux)=[Srn(N-n)S(nn+1-c)]

Теперь можно создать функцию, чтобы кодировать уравнение. Функция должна иметь подпись [c,f,s] = angiopde(x,t,u,dudx):

  • x - независимая пространственная переменная.

  • t - независимая временная переменная.

  • u - зависимая переменная, дифференцируемая по отношению к x и t. Это двухэлементный вектор, где u(1) является n(x,t) и u(2) является c(x,t).

  • dudx - частная пространственная производная u/x. Это двухэлементный вектор, где dudx(1) является n/x и dudx(2) является c/x.

  • Выходные выходы c, f, и s соответствуют коэффициентам в стандартной форме уравнения УЧП, ожидаемым по 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

(Примечание. Все функции включены в качестве локальных функций в конце примера.)

Начальные условия кода

Затем напишите функцию, которая возвращает начальное условие. Начальное условие применяется в первый раз и предоставляет значение n(x,t0) и c(x,t0) для любого значения x. Используйте сигнатуру функции u0 = angioic(x) для записи функции.

Эта задача имеет постоянное, устойчивое состояние, когда

[n0c0]=[10.5].

Однако анализ устойчивости предсказывает эволюцию системы в неоднородное решение [1]. Таким образом, шаговые функции используются в качестве начальных условий для возмущения устойчивого состояния и стимулирования эволюции системы.

u(x,0)=[n0c0],u(x,0)={1.05u10.3x0.61.0005u20.3x0.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

Граничные условия кода

Теперь напишите функцию, которая оценивает граничные условия

xn(0,t)=xn(1,t)=0,xc(0,t)=xc(1,t)=0.

Для задач, поставленных на интервале axb, граничные условия применяются для всех t и либо x=a или x=b. Стандартная форма для граничных условий, ожидаемых решателем,

p(x,t,u)+q(x,t)f(x,t,u,ux)=0.

Для x=0, граничное уравнение условия

[00]+[11][dnx-ancxcx]=0.

Таким образом, коэффициенты:

  • pL(x,t,u)=[00],

  • qL(x,t)=[11].

Для x=1 граничные условия совпадают, поэтому pR(x,t,u)=[00] и qR(x,t)=[11].

Граничная функция должна использовать сигнатуру функции [pl,ql,pr,qr] = angiobc(xl,ul,xr,ur,t), где:

  • Входы xl и ul соответствуют u и x для левого контура.

  • Входы xr и ur соответствуют u и x для правого контура.

  • t - независимая временная переменная.

  • Выходные выходы pl и ql соответствуют pL(x,t,u) и qL(x,t) для левого контура (x=0 для этой задачи).

  • Выходные выходы pr и qr соответствуют pR(x,t,u) и qR(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

Выберите Mesh решения

Чтобы увидеть предельное поведение уравнений, требуется длительный временной интервал, поэтому используйте 10 точек в интервале 0t200. Кроме того, предельное распределение c(x,t) изменяется только примерно на 0,1% в течение интервала 0x1таким образом, подходящей является относительно тонкий пространственный mesh с 50 точками.

x = linspace(0,1,50);
t = linspace(0,200,10);

Решение уравнения

Наконец, решите уравнение, используя симметрию m, уравнение УЧП, начальное условие, граничные условия и сетки для x и t.

m = 0;
sol = pdepe(m,@angiopde,@angioic,@angiobc,x,t);

pdepe возвращает решение в трехмерный массив sol, где sol(i,j,k) аппроксимирует kпервый компонент решения uk оценивается в t(i) и x(j). Извлеките компоненты решения в отдельные переменные.

n = sol(:,:,1);
c = sol(:,:,2);

Решение для построения графика

Создать объемную поверхностную диаграмму компонентов решения n и c нанесенный на график в выбранных точках mesh для x и t.

surf(x,t,c)
title('c(x,t): Concentration of Fibronectin')
xlabel('Distance x')
ylabel('Time t')

Figure contains an axes. The axes with title c(x,t): Concentration of Fibronectin contains an object of type surface.

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

Figure contains an axes. The axes with title n(x,t): Density of Endothelial Cells contains an object of type surface.

Теперь постройте график только окончательных распределений решений в tf=200. Эти графики соответствуют Фигурам 3 и 4 в [1].

plot(x,n(end,:))
title('Final distribution of n(x,t_f)')

Figure contains an axes. The axes with title Final distribution of n(x,t_f) contains an object of type line.

plot(x,c(end,:))
title('Final distribution of c(x,t_f)')

Figure contains an axes. The axes with title Final distribution of c(x,t_f) contains an object of type line.

Ссылки

[1] Хамфрис, M.E. и M.A.J. Капеллан. «Математическая модель первых шагов ангиогенеза, связанного с опухолью: Образование капиллярного ростка и вторичное ответвление». IMA Journal of Mathematics Applied in Medicine & Biology, 13 (1996), pp. 73-98.

Локальные функции

Здесь перечислены локальные вспомогательные функции, которые УЧП решателя pdepe вызывает для вычисления решения. Также можно сохранить эти функции как собственные файлы в директории по пути 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
% ---------------------------------------------

См. также

Похожие темы