热方程Matlab代码中的错误

时间:2016-01-09 22:39:41

标签: matlab

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,:))

我在这段代码中遇到了一些错误。我写了热方程并插入了边界和初始条件。那么代码有什么问题。

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);