Pdepe function giving a different plot from what I expect

조회 수: 9 (최근 30일)
FRANCESCA PUNZI
FRANCESCA PUNZI 2022년 12월 6일
답변: SAI SRUJAN 2023년 10월 10일
Hi everyone,
I tried to solve a Fisher Kolmogorov pde equation using pdepe. Matlab does not give any sign of error still I don't get what I was supposed to. I include my code:
x=linspace(0,1);
t=linspace(0,8*365);
m = 0;
u= pdepe(m,@heatcyl,@heatic,@heatbc,x,t);
surf(x,t,u)
xlabel('x')
ylabel('t')
zlabel('u(x,t)')
view([150 25])
figure
plot(t,u(100,:));
function [c,f,s]=heatcyl(x,t,u,dudx)
c = 1;
f = dudx;
s = 0.01*(1-u).*u;
end
%initial condition
function u0 = heatic(x)
u0 = 0.3*sech(0.3*x);
end
%boundary conditions
function [pl,ql,pr,qr] = heatbc(xl,ul,xr,ur,t)
pl = 0;
ql = 1;
pr = 0;
qr = 1;
end
I would expect, if I plot the solution at a certain time t , to get the classical plot :
Boundary condition are no flux conditions and the initial condition is the one indicated in the code
I also include the equation I start from:
Thanks in advance to anyone giving advice.

답변 (1개)

SAI SRUJAN
SAI SRUJAN 2023년 10월 10일
Hi Francesca Punzi,
I understand that you facing diffoculty in producing the desired output of Fisher Kolmogorov pde equation.
The following is the Fisher Kolmogorov partial differential equation.
You can follow the below given example to resolve the issue.
x=linspace(0,20);
t=linspace(0,1);
m=0;
u= pdepe(m,@heatcyl,@heatic,@heatbc,x,t);
plot(t,u(2,:),'--');
function [c,f,s]=heatcyl(x,t,u,dudx)
D=0.1;
r=0.5;
c = 1;
f = dudx*D;
s = r*u*(1-u);
end
%initial condition
function u0 = heatic(x)
u0 = sech(x);
end
%boundary conditions
function [pl,ql,pr,qr] = heatbc(xl,ul,xr,ur,t)
pl = 0;
ql = 1;
pr = 0;
qr = 1;
end
In order to effectively accomplish the desired outcome, the process is significantly influenced by the following variables and conditions:
  • Initial conditions.
  • Boundary conditions.
  • The diffusion coefficient, denoted as "D", plays a crucial role in governing the speed at which spatial spreading occurs.
  • The growth rate parameter, represented by "r", determines the rate of population growth.
You can refer to the below documentation to understand more about "pdepe" function in MATLAB.

카테고리

Help CenterFile Exchange에서 PDE Solvers에 대해 자세히 알아보기

제품


릴리스

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by