全文预览

基于matlab的偏微分方程差分解法

上传者:你的雨天 |  格式:docx  |  页数:12 |  大小:0KB

文档介绍
x x ? ???解: 第一步:通过联立差分方程及迭代方程编写 MATLAB 程序如下: function U=dirich(a,b,h,tol,maxl) %设 DX=DY=h, 且存在 m ,是的 a=nh 和 b=mh n=fix(a/h)+1; m=fix(b/h)+1; ave=(a*(20+180)+b*(80+0))/(2*a+2*b); U=ave*ones(n,m); U(1,1:m)=80; U(n,1:m)=0; U(1:n,1)=20; U(1:n,m)=180; U(1,1)=(U(1,2)+U(2,1))/2; U(1,m)=(U(1,m-1)+U(2,m))/2; U(n,1)=(U(n-1,1)+U(n,2))/2; U(n,m)=(U(n-1,m)+U(n,m-1))/2; w=4/(2+sqrt(4-(cos(pi/(n-1))+cos(pi/(m-1)))^2)); err=1; cnt=0; while((err>tol)&(cnt<=maxl)) err=0; for j=2:m-1 for i=2:n-1 relx=w*(U(i,j+1)+U(i,j-1)+U(i+1,j)+U(i-1,j)-4*U(i,j))/4; U(i,j)=U(i,j)+relx; if(err<=abs(relx)) err=abs(relx); 9 end end t+1; relx; end U=flipud(U'); figure(1); surf(U); figure(2); contour(U,30); 第二步:输入数值并计算 a =4; b=4; h=0.5; tol=0.1; maxl=20; 执行 dirich( 4,4, 0.5 , 0.1 , 20); 第三步:得出结果并画图入下 1. 等值线结果图 2. 三位结果图

收藏

分享

举报
下载此文档