m = 0;
x = linspace(0,1,41);
t = linspace(0,200,10);
sol = pdepe(m,@pdex5pde,@pdex5ic,@pdex5bc,x,t);
n = sol(:,:,1);
c = sol(:,:,2);
figure;
surf(x,t,c);
title('Distribution of fibronectin--c(x)');
xlabel('Distance x');
ylabel('Time t');
figure;
surf(x,t,n);
title('Distribution of ECs--n(x)');
xlabel('Distance x');
ylabel('Time t');
figure;
plot(x,n(end,:));
title('Final distribution of n(x).');
figure;
plot(x,c(end,:));
title('Final distribution of c(x).');
% --------------------------------------------------------------------------
function [c,f,s] = pdex5pde(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) ];
s1 = S*r*u(1)*(N - u(1));
s2 = S*(u(1)/(u(1) + 1) - u(2));
s = [s1; s2];
% --------------------------------------------------------------------------
function u0 = pdex5ic(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

댓글 수: 13

Walter Roberson
Walter Roberson 2018년 12월 20일
What error message are you getting?
madhan ravi
madhan ravi 2018년 12월 20일
편집: madhan ravi 2018년 12월 28일
Upload pdex5bc function.
KSSV
KSSV 2018년 12월 20일
YOu should specify your error or problem..so that we can help you straight away if possible. Simply copying a part of code will not help us to help you.
MINATI
MINATI 2018년 12월 20일
Error using pdepe
Too many input arguments.
Error in pdex5
sol = pdepe(m,@pdex5pde,@pdex5ic,@pdex5bc,x,t);
Stephen23
Stephen23 2018년 12월 20일
@MINATI: please show us the output from this command:
which pdepe -all
MINATI
MINATI 2018년 12월 20일
try
edit pdex5
madhan ravi
madhan ravi 2018년 12월 20일
?
Based heavily on this example (scroll to the 2nd example), for those trying to debug
function pdex4
m = 0;
x = [0 0.005 0.01 0.05 0.1 0.2 0.5 0.7 0.9 0.95 0.99 0.995 1];
t = [0 0.005 0.01 0.05 0.1 0.5 1 1.5 2];
sol = pdepe(m,@pdex4pde,@pdex4ic,@pdex4bc,x,t);
u1 = sol(:,:,1);
u2 = sol(:,:,2);
figure
surf(x,t,u1)
title('u1(x,t)')
xlabel('Distance x')
ylabel('Time t')
figure
surf(x,t,u2)
title('u2(x,t)')
xlabel('Distance x')
ylabel('Time t')
% --------------------------------------------------------------
function [c,f,s] = pdex4pde(x,t,u,DuDx)
c = [1; 1];
f = [0.024; 0.17] .* DuDx;
y = u(1) - u(2);
F = exp(5.73*y)-exp(-11.47*y);
s = [-F; F];
% --------------------------------------------------------------
function u0 = pdex4ic(x);
u0 = [1; 0];
% --------------------------------------------------------------
function [pl,ql,pr,qr] = pdex4bc(xl,ul,xr,ur,t)
pl = [0; ul(2)];
ql = [1; 0];
pr = [ur(1)-1; 0];
qr = [0; 1];
If I straight borrow pdex4bc and add it to the code provided above, I get the following warnings/errors:
  • Warning: Failure at t=1.269576e-02. Unable to meet integration tolerances without reducing the step size below the smallest value allowed (2.775558e-17) at time t.
  • Warning: Time integration has failed. Solution is available at requested time points up to t=1.000000e-02.
  • Error using surf (line 71)
  • Data dimensions must agree.
madhan ravi
madhan ravi 2018년 12월 20일
편집: madhan ravi 2018년 12월 20일
Well thank you Cris for digging into a bit deeper , @Minati just two words doesn’t explain anything , you need to explain more plus you completely ignored the comments which were latter to your comment.
MINATI
MINATI 2018년 12월 27일
But Cris
If we run this program:
Error using pdepe
Too many input arguments.
in
sol = pdepe(m,@pdex4pde,@pdex4ic,@pdex4bc,x,t);
Walter Roberson
Walter Roberson 2018년 12월 27일
Which MATLAB release are you using?
MINATI
MINATI 2018년 12월 28일
2016b
Walter Roberson
Walter Roberson 2018년 12월 28일
편집: Walter Roberson 2018년 12월 28일
What shows up for
which -all pdepe
I have tried the example in R2016b, and I tried your code (along with a copy of pdex4bc renamed pdex5bc) in R2016b, and I do not get any problem about too many input arguments for pdepe. I do get the error that Cris mentioned: with that boundary condition, your sol comes out 1 x 41 and you cannot surf() a vector.
You should post the pdex5bc that you are using.

댓글을 달려면 로그인하십시오.

 채택된 답변

Cris LaPierre
Cris LaPierre 2018년 12월 20일
편집: Cris LaPierre 2018년 12월 25일

0 개 추천

The pdex4 variable sol is a 9x13x2, or length(t) x length(x) x 2. The provided code (pdex5?) is 1x41x2. I don't understand your equations, but it looks like your code can't get past the t=0 step.
Can you double check that there is a solution at t=0?
It's worth verifying that your equations have been correctly entered as well.

추가 답변 (0개)

질문:

2018년 12월 20일

편집:

2018년 12월 28일

Community Treasure Hunt

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

Start Hunting!

Translated by