2014-09-30 5 views
0

Я пытаюсь решить безразмерное уравнение Фишера Колмагорова в Matlab. Я получаю график, который не выглядит так, как должен. Кроме того, я получаю уравнение независимо от значения s (исходный термин в решателе pdepe). Независимо от того, какое значение s Я помещаю в график, остается без изменений.Решение для Fisher Kolmagorov Частичное дифференциальное уравнение

function FK  
m = 0;  
x = linspace(0,1,100);  
t = linspace(0,1,100);  
u = pdepe(m,@FKpde,@FKic,@FKbc,x,t);  
[X,T] = meshgrid(x,t); 

%ANALYTICAL SOLUTION  
% a=(sqrt(2))-1;  
% q=2;  
% s=2/q;  
% b= q /((2*(q+2))^0.5);  
% c= (q+4)/((2*(q+2))^0.5);  
% zeta= X-c*T;  
%y = 1/((1+(a*(exp(b*zeta))))^s);  
%r=(y(:,:)-u(:,:))./y(:,:); % relative error in numerical and analytical value 

figure;  
plot(x,u(10,:),'o',x,u(40,:),'o',x,u(60,:),'o',x,u(end,:),'o')  
title('Numerical Solutions at different times');  
legend('tn=1','tn=5','tn=30','tn=10','ta=20','ta=600','ta=800','ta=1000',0);  
xlabel('Distance x'); 
ylabel('u(x,t)');  

% -------------------------------------------------------------------------- 
function [c,f,s] = FKpde(x,t,u,DuDx)  
c = 1;  
f = DuDx;  
s =u*(1-u); 

% --------------------------------------------------------------------------  
function u0 = FKic(x)  
u0 = 10^(-4); 

% --------------------------------------------------------------------------  
function [pl,ql,pr,qr] = FKbc(xl,ul,xr,ur,t)  
pl = ul-1;  
ql = 0;  
pr = ur;  
qr = 0; 

ответ

0

Может быть, это комментарий, но положил его как ответ для лучшего форматирования. Ваше аналитическое решение, которое, как я полагаю, вы используете для сравнения с численным ответом, чтобы сказать, что график не выглядит так, как должен, не кажется, что он уважает начальные условия или граничные условия, которые вы кормите pdepe, поэтому я бы начал там, если пытаться понять, почему u не похож y

начальные и граничные условия, которые вы настраиваете являются:

u(0, t) = 1 
u(1, t) = 0 
u(x, 0) = 1e-4 

Откладывая, что граничные и начальные условия находятся в конфликте, аналитическое решение, которое вы в кодексе есть

u(0, t) = 1/((1+exp(-b*ct))) 
u(1, t) = 1/((1+exp(b*(1-ct))) 
u(x, 0) = 1/((1+exp(b*x)) 

Поэтому мне кажется, что числовые и аналитические решения должны отличаться друг от друга, и различия, которые вы наблюдаете, вероятно, связаны с установкой IC/BC. Я подозреваю, что pdepe, вероятно, решает уравнение, которое вы ему даете.

+0

Я знаю, что аналитическое решение ошибочно. Я прокомментировал это. (Я знал, что я должен был удалить его, извините!) График pdepe выглядит точно так же, независимо от того, какой исходный термин вы ему дадите. То почему я интересовал если что-то было неправильно с pdepe. –

+0

Я не согласен с тем, что решение не зависит от исходного члена - я изменил исходный член от u * (1-u) до 1e3 * u * (1-u) и получил очень разные графики. – KevinMc

+0

Спасибо, Кевин. –

0

При увеличении масштаба и масштаба времени я получаю ответы, которые я хочу. Проблема заключалась в том, чтобы решить разные времена и увидеть волновую пропаганду. Для небольших длин я мог видеть только часть этой волны.