我一直试图在Matlab中解决非维Fisher Kolmagorov方程。我得到的图表看起来并不像它应该的那样。另外,我得到的等式独立于s
的值(pdepe
求解器中的源项)。无论我在图表中放置的s
的值是什么,都保持不变。
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 :(得分:0)
应该是评论,但可以作为更好格式化的答案。您的分析解决方案,我假设您正在使用与数字答案进行比较来说明图形看起来不应该看起来似乎并不尊重您正在为pdepe提供的初始条件或边界条件,所以我&# 39;如果试图找出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
可能正在解决你给出的等式。
答案 1 :(得分:0)
在增加长度比例和时间尺度时,我得到了我想要的答案。问题是要解决不同的时间,并看到波传播。对于小长度,我只能看到那波的一部分。