使用有限差分的非均匀热方程的Matlab解

时间:2014-12-09 05:58:04

标签: matlab differential-equations

给出以下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的实施正在做一些令人讨厌的事情。但是我没有看到它。

有什么东西我不见了吗?

提前致谢!

0 个答案:

没有答案