t_comp=0.02;
dx=0.05;
dt=0.001;
x = linspace(0,1,dx);
t = linspace(0,t_comp,dt);
N=length(t);
M=length(x);
u=[];
u(1,:)=sin(2.*pi.*x);
u(:,1)=0;
u(:,M)=0;
for i=1:1:N-1
for j=2:1:M-1
u(i+1,j)=(A.*u(i,j-1)+B.*u(i,j)+c.*u(i,j+1));
end
end
plot(x,u(1,:))
我在这段代码中遇到了一些错误。我写了热方程并插入了边界和初始条件。那么代码有什么问题。
答案 0 :(得分:0)
问题是由M
为0引起的,这是因为x
是一个长度为0的数组,这是由于linspace
的误用。
linspace使用时如下:linspace(x1, x2, n)
生成一个长度为n
的数组,其间距为x1到x2,在您的情况下,n为0.05,向下舍入为0。
我认为你的意思是x = 0:dx:1;
,这将产生一个从0.05到0步为0的数组。
您在此行中遇到同样的问题:t = linspace(0,t_comp,dt);