给出以下PDE(非均匀热方程):
u t (x,t)= c 2 u xx (x,t)+ f(x,t)
u(0,t)= u(l,t)= 0
u(x,0)= g(x)
0< x<我T> 0; c> 0
我在Matlab中编写了以下代码,使用有限差分来解决问题:
syms xj tk
% Manually define this values
c = 9;
f(xj,tk) = xj;
g(xj) = 0*xj;
l = 1;
Tmax = 0.1;
% Grid definition
Nx = 50;
Nt = 50;
hx = 1/Nx;
ht = 1/Nt;
x = 0:hx:l;
t = 0:ht:Tmax;
lambda = c^2*ht/hx^2;
% Our target
u = zeros(Nx+1,Nt+1);
% Initial values
for j=1:Nx,
u(j,1) = g(x(j)); % u(x,0) = g(x)
end
for k=1:Nx,
u(1,k+1) = 0; % border condition u(0,t) = 0
for j=2:Nt,
u(j,k+1) = u(j,k) + lambda*(u(j+1,k)-2*u(j,k)+u(j-1,k)) + ht*f(j,k); % the formula here is ok
end
u(Nt,k+1) = 0; % border condition u(l,t) = 0
end
contour3(u)
由于某些我无法弄清楚的原因,数据只出现在最后一列并且以一种非常奇怪的方式出现。
我猜测BC的实施正在做一些令人讨厌的事情。但是我没有看到它。
有什么东西我不见了吗?
提前致谢!