有限差分法的Matlab程序

上传人:lis****211 文档编号:176417492 上传时间:2022-12-22 格式:DOCX 页数:3 大小:10.21KB
返回 下载 相关 举报
有限差分法的Matlab程序_第1页
第1页 / 共3页
有限差分法的Matlab程序_第2页
第2页 / 共3页
有限差分法的Matlab程序_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述
有限差分法的Matlab程序(椭圆型方程)function FD_PDE(fun,gun,a,b,c,d)%用有限差分法求解矩形域上的Poisson方程tol=10(-6);% 误差界N=1000; % 最大迭代次数n=20;% x轴方向的网格数m=20; % y轴方向的网格数 h=(b-a)/n; % x轴方向的步长 l=(d-c)/m; % y轴方向的步长 for i=1:n-1x(i)=a+i*h;end %定义网格点坐标for j=1:m-1 y(j)=c+j*l;end %定义网格点坐标u=zeros(nT,m-l); %对 u 赋初值%下面定义几个参数r二h2/l2;s=2*(1+r);k=1;%应用Gauss-Seidel法求解差分方程while knorm; norm=abs(u(i,m1)z);end u(i,m1)=z;end%对右上角的网格点进行处理z=(-h“2*fun(x(n-l),y(m-l)+gun(b,y(m-l)+r*gun(x(n-l),d)+r*u(nT,m- 2)+u(n2,m1)/s;if abs(u(n1,m1)z)normnorm=abs(u(n1,m1)z);endu(n1,m1)=z;% 对不靠近上下边界的网格点进行处理for j=m-2:-1:2% 对靠近左边界的网格点进行处理z=(-h2*fun(x(l),y(j)+gun(a,y(j)+r*u(l,j+l)+r*u(l,j-l)+u(2,j)/s;if abs(u(1,j)-z)norm norm=abs(u(1,j)-z);endu(1,j)=z;% 对不靠近左右边界的网格点进行处理for i=2:n-2z=(-h2*fun(x(i),y(j)+u(i-l,j)+r*u(i,j+l)+r*u(i,j-1)+u(i+1,j)/s;if abs(u(i,j)-z)norm norm=abs(u(i,j)-z);endu(i,j)=z;end% 对靠近右边界的网格点进行处理z=(-h“2*fun(x(n-l),y(j)+gun(b,y(j)+r*u(nT,j+l)+r*u(nT,j-1)+u(n-2,j)/s;Jif abs(u(n-1,j)-z)norm norm=abs(u(n-1,j)-z);endu(n-1,j)=z;end% 对靠近下边界的网格点进行处理%对左下角的网格点进行处理z=(-h2*fun(x(l),y(l)+gun(a,y(l)+r*gun(x(l),c)+r*u(l,2)+u(2,l)/sif abs(u(1,1)-z)norm norm=abs(u(1,1)-z);endu(1,1)=z; %对靠近下边界的除第一点和最后点外网格点进行处理 for i=2:n-2z=(h2*fun(x(i),y(l)+r*gun(x(i),c)+r*u(i,2)+u(i+l,l)+u(iT,1)/s;if abs(u(i,1)-z)normnorm=abs(u(i,1)z);endu(i,1)=z;end%对右下角的网格点进行处理页脚内容2z=(-h“2*fun(x(n-l),y(l)+gun(b,y(l)+r*gun(x(n-l),c)+r*u(nT,2)+u(n -2,1)/s;if abs(u(n-1,1)-z)norm norm=abs(u(n-1,1)-z);end u(n-1,1)=z;% 结果输出 if norm=tolfid = fopen(FDresult.txt, wt);fprintf(fid,n*用有限差分法求解矩形域上Poisson方程的输出 结果 *nn);fprintf(fid,迭代次数:%d 次nn,k);fprintf(fid,x 的值y 的值u 的值u 的真实值|u-u(x,y)|n);for i=1:n-1for j=1:m-1fprintf(fid, %8.3f %8.3f %14.8f%14.8f%14.8fn,x(i),y(j),u(i,j),gun(x(i),y(j),abs(u(i,j)-gun(x(i),y(j);endend fclose(fid);break;%用来结束while循环endk=k+1;end if k=N+1fid = fopen(FDresult.txt, wt);fprin tf(fid,超过最大迭代次数,求解失败!); fclose(fid);end clca1 a2 a3 a4 = textread(F:aa.txt,%f %f %f %f); a = a1 a2 a3;a=a;b=a4; pa,mina,maxa,pb,minb,maxb=premnmx(a,b);net =newrb(pa,pb,0,1.3,24,2); an =sim(net,pa);E = an - pb;m =sse(E)n = mse(E)f1 f2 f3 f4= textread(F:bb.txt,%f %f %f %f); f = f1 f2 f3;f=f;pf = tramnmx(f,mina,maxa);an2 = sim(net,pf);g =postmnmx(an2,minb,maxb);g= g;E2 = g- f4;mm =sse(E2)nn = mse(E2)
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!