Решите систему УЧП с начальными ступенчатыми функциями условия

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

Рассмотрите УЧП

nt=(d2nx2-an2cx2)+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).

С тех пор существует два уравнения в системе УЧП, система УЧП может быть переписана как

[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.

  • Выходные параметры cF, и 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

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

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

Затем запишите функцию, которая возвращает начальное условие. Начальное условие применяется в первой временной стоимости и вводит значение 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]p(x,t,u)+[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

Выберите Solution Mesh

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

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

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

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

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

pdepe возвращает решение в трехмерном массиве sol, где sol(i,j,k) аппроксимирует kкомпонент th решения 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')

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

Теперь постройте только итоговые распределения решений в tf=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] Humphreys, M.E. и M.A.J. Капеллан. "Математическая модель первых шагов связанного с опухолью ангиогенеза: Капиллярное формирование ростка и вторичное ответвление". Журнал IMA Математики, Прикладной в Medicine & Biology, 13 (1996), стр 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
% ---------------------------------------------

Смотрите также

Похожие темы