clear
clc
close all
dx=0.05; %x方向的步长
dt=0.001; %t方向的步长
r=dt/(dx^2); %计算r的值
x=0:dx:1; %得到x的序列
t=0:dt:0.2; %得到t的序列
M=length(x)-1;
N=length(t)-1;
Phi=ones(N+1,M+1);
Phi(1,:)=100; %设置初值条件:Phi(x,0)=100
Phi(2:N+1,1)=0; %设置边界条件:Phi(0,t)=0
Phi(2:N+1,M+1)=0; %设置边界条件:Phi(1,t)=0
%根据差分方程,计算Phi的数值解
for k=1:N
for i=2:M
Phi(k+1,i)=(1-2*r)*Phi(k,i)+r*(Phi(k,i-1)+Phi(k,i+1));
end
end
[x,t]=meshgrid(x,t);
mesh(x,t,Phi) %绘制(x,t,Phi)的三维图
xlabel('x')
ylabel('t')
zlabel('\Phi(x,t)')
title('扩散方程的数值模拟')
评论10