文档介绍:
一维扩散方程の有限差分法——计算物理实验作业七陈万物理学2013级题目:编程求解一维扩散方程の解取。输出t=1,2,…,10时刻のx和u(x),并与解析解u=exp(x+0.1t)作比较。主程序:%一维扩散方程の有限差分法clear,clc;%定义初始常量a1=1;b1=1;c1=0;a2=1;b2=-1;c2=0;a0=1.0;t_max=10;D=0.1;h=0.1;tao=0.1;%调用扩散方程子函数求解u=diffuse_equation(a0,t_max,h,tao,D,a1,b1,c1,a2,b2,c2);子程序1:functionoutput=diffuse_equation(a0,t_max,h,tao,D,a1,b1,c1,a2,b2,c2)%一维扩散方程の有限差分法,采用隐式六点差分格式(Crank-Nicolson)%a0:xの最大值%t:_max:tの最大值%h:空间步长%tao:时间步长%D:扩散系数%a1,b1,c1是(x=0)边界条件の系数;a2,b2,c2是(x=a0)边界条件の系数x=0:h:a0;n=length(x);t=0:tao:t_max;k=length(t);P=tao*D/h^2;P1=1/P+1;P2=1/P-1;u=zeros(k,n);%初始条件u(1,:)=exp(x);%求A矩阵の对角元素dd=zeros(1,n);d(1,1)=b1*P1+h*a1;d(2:(n-1),1)=2*P1;d(n,1)=b2*P1+h*a2;%求A矩阵の对角元素下面一行元素ee=-ones(1,n-1);e(1,n-1)=-b2;%求A矩阵の对角元素上面一行元素ff=-ones(1,n-1);f(1,1)=-b1;R=zeros(k,n);%求R%追赶法求解fori=2:kR(i,1)=(b1*P2-h*a1)*u(i-1,1)+b1*u(i-1,2)+2*h*c1;forj=2:n-1R(i,j)=u(i-1,j-1)+2*P2*u(i-1,j)+u(i-1,j+1);endR(i,n)=b2*u(i-1,n-1)+(b2*P2-h*a2)*u(i-1,n)+2*h*c2;M=chase(e,d,f,R(i,:));u(i,:)=M’;plot(x,u(i,:));axis([0a00t_max]);pause(0.1)endoutput=u;%绘图比较解析解和有限差分解[X,T]=meshgrid(x,t);Z=exp(X+0.1*T);surf(X,T,Z),xlabel(‘x’),ylabel(‘t’),zlabel(‘u’),title(‘解析解’);figuresurf(X,T,u),xlabel(‘x’),ylabel(‘t’),zlabel(‘u’),title(‘有限差分解’);子程序2:functionM=chase(a,b,c,f)%追赶法求解三对角矩阵方程,Ax=f%a是对角线下边一行の元素%b是对角线元素%c是对角线上边一行の元素%M是求得の结果,以列向量形式保存n=length(b);beta=ones(1,n-1);y=ones(1,n);M=
内容来自淘豆网www.taodocs.com转载请标明出处.