2014-09-30 77 views
0

我一直在試圖解決Matlab中的非維Fisher Kolmagorov方程。我得到的圖表看起來並不像它應該那樣。此外,我得到獨立於spdepe求解器中的源項)值的方程。無論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是否有問題。 – 2014-10-01 04:06:39

+0

我不同意解決方案不依賴於源項 - 我將源項從u *(1-u)更改爲1e3 * u *(1-u),並得到非常不同的圖。 – KevinMc 2014-10-01 04:12:14

+0

謝謝凱文。 – 2014-10-02 13:26:01

0

在增加長度尺度和時間尺度時,我得到了我想要的答案。問題是要解決不同的時間,並看到波傳播。對於小規模的人來說,我只能看到那部分浪潮。