too many input arguments when using pdepe
4 views (last 30 days)
Show older comments
Hi, I meet a problem when using pdepe, and I tried many ways but can't solve this. Could you help me with this?
I got errors like 'too many/ not enough argument when using pdepe' when modifying
sol = pdepe(m,@(t,u) wave_ode1(x,t,u,dudx,p),@pdeic2,@pdebc2,x);
my code is below:
Thank you!
clear all
close all
hx = 0.1;%need try 0.01
L = 10;%
x = 0:hx:L;
t = [0:0.1:200];
Da=0.1;
Db=10;
m = 0;
p=[Da;Db];
sol = pdepe(m,@(t,u) wave_ode1(x,t,u,dudx,p),@pdeic2,@pdebc2,x);
u1 = sol(:,:,1);
u2 = sol(:,:,2);
surf(x,t,u1)
title('u_1(x,t)')
xlabel('Distance x')
ylabel('Time t')
surf(x,t,u2)
title('u_2(x,t)')
xlabel('Distance x')
ylabel('Time t')
function [c,f,s] = wave_ode1(x,t,u,dudx,p) % Equation to solve
c = [1; 1];
f = [Da; Db] .* dudx;
y = u(1) - u(2);
F = exp(5.73*y)-exp(-11.47*y);
s = [-F; F];
end
function u0 = pdeic2(x) % Initial Conditions
u0 = [1; 0];
end
function [pl,ql,pr,qr] = pdebc2(xl,ul,xr,ur,t) % Boundary Conditions
pl = [0; ul(2)];
ql = [1; 0];
pr = [ur(1)-1; 0];
qr = [0; 1];
end
0 Comments
Accepted Answer
Torsten
on 25 Mar 2022
sol = pdepe(m,@(x,t,u,dudx) wave_ode1(x,t,u,dudx,p),@pdeic2,@pdebc2,x,t);
function [c,f,s] = wave_ode1(x,t,u,dudx,p) % Equation to solve
c = [1; 1];
f = [p(1); p(2)] .* dudx;
y = u(1) - u(2);
F = exp(5.73*y)-exp(-11.47*y);
s = [-F; F];
end
5 Comments
More Answers (1)
Walter Roberson
on 25 Mar 2022
sol = pdepe(m,@(t,u) wave_ode1(x,t,u,dudx,p),@pdeic2,@pdebc2,x);
pdepe needs m, then three function handles, then x mesh, and then time span.
You have m, then three function handles, then x mesh... and no time span.
2 Comments
Walter Roberson
on 25 Mar 2022
The pdefun (first function handle) will be passed x, t, u, dudx. Your @(t,u) function handle expects to receive only two parameters.
See Also
Categories
Find more on Data Import and Analysis in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!