Why this code does not run?
显示 更早的评论
Hi, I am trying to learn how to solve PDEs. Here is the example from MatLab itself. But it did not run. I dont know what is missing . Anyone can help? thanks Ming
[Edit SCd: code formatting]
function [c,f,s] = pdex1pde(x,t,u,DuDx)
c = pi^2;
f = DuDx;
s = 0;
function u0 = pdex1ic(x)
u0 = sin(pi*x);
function [pl,ql,pr,qr] = pdex1bc(xl,ul,xr,ur,t)
pl = ul;
ql = 0;
pr = pi * exp(-t);
qr = 1;
x = linspace(0,1,20);
t = linspace(0,2,5);
m = 0;
sol = pdepe(m,@pdex1pde,@pdex1ic,@pdex1bc,x,t);
u = sol(:,:,1);
surf(x,t,u)
3 个评论
Jan
2011-10-6
"It did not run" dows not contain enough information to understand the cause of the problem. Do you get an error message? How do you cal the function?
sunnoom
2011-10-6
Walter Roberson
2011-10-6
That does sound odd.
I would put a breakpoint in that routine at the first line, and would check to see what parameters did get passed and their sizes.
回答(3 个)
Jan
2011-10-6
0 个投票
"function [c,f,s] = pdex1pde(x,t,u,DuDx)" means, that you have to call the function pdex1pde with 4 input arguments. Did you call it manually without inputs?
Walter Roberson
2011-10-7
Where you have written
function [pl,ql,pr,qr] = pdex1bc(xl,ul,xr,ur,t)
pl = ul;
ql = 0;
pr = pi * exp(-t);
qr = 1;
x = linspace(0,1,20);
t = linspace(0,2,5);
m = 0;
sol = pdepe(m,@pdex1pde,@pdex1ic,@pdex1bc,x,t);
u = sol(:,:,1);
surf(x,t,u)
You need to break this up in to two parts:
function [pl,ql,pr,qr] = pdex1bc(xl,ul,xr,ur,t)
pl = ul;
ql = 0;
pr = pi * exp(-t);
qr = 1;
function sol = runpde
x = linspace(0,1,20);
t = linspace(0,2,5);
m = 0;
sol = pdepe(m,@pdex1pde,@pdex1ic,@pdex1bc,x,t);
u = sol(:,:,1);
surf(x,t,u)
and that new function needs to go first in the file if you are putting all of the routines in the same file.
类别
在 帮助中心 和 File Exchange 中查找有关 Eigenvalue Problems 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!