Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2011-02-22, 21:36   #1
aiyubaozi
初级会员
 
aiyubaozi 的头像
 
注册日期: 2011-02-22
住址: 南京
年龄: 38
帖子: 1
声望力: 0
aiyubaozi 正向着好的方向发展
微笑 MATLBA有限差分程序分享

有问题请联系QQ: 291873404
function [U,err,zuidaERR,Ujingque]=tuoyuan1(jingqueu1,f1,phi1,phi2,phi3,phi4,a,b,c,d,m,n,epsilon)
%此程序用于求解差分方程-[D2u(x)+D2u(y)]=f(x,y)的解
%u(a,y)=phi1,u(b,y)=phi2,u(x,c)=phi3,u(x,d)=phi4
%差分剖分x方向m等分,差分剖分y方向n等分
h1=(b-a)/m;
h2=(d-c)/n;
h=2*[1/h1.^2+1/h2.^2];
x=a:h1:b;
y=c:h2:d;
%u为迭代初始矩阵
u=ones(m+1,n+1);U=zeros(m+1,n+1);
u(1,1:1:n+1)=feval(phi1,y); U(1,1:1:n+1)=feval(phi1,y);
u(1+m,1:1:n+1)=feval(phi2,y); U(1+m,1:1:n+1)=feval(phi2,y);
u(1:m+1,1)=[feval(phi3,x)]'; U(1:m+1,1)=[feval(phi3,x)]';
u(1:m+1,n+1)=[feval(phi4,x)]';U(1:m+1,n+1)=[feval(phi4,x)]';
fanshu=1;
while (fanshu>epsilon)
for i=2:m
j=2:n;
U(i,j)=[feval(f1,a+(i-1)*h1,c+h2:h2:d-h2)+(U(i,j-1)+u(i,j+1))/h2.^2+(U(i-1,j)+u(i+1,j))/h1.^2]/h;
end
fanshu=norm(u-U,inf);
u=U;
end
for i=1:m+1
j=1:n+1;
Ujingque(i,j)=feval(jingqueu1,a+(i-1)*h1,y);
end
err=abs(U-Ujingque);
zuidaERR=max(max(err));
zuidaERR=vpa(zuidaERR,4);
%U=[U(m/4+1,n/4+1),U(m/2+1,n/4+1),U(m*3/4+1,n/4+1),U(m/4+1,n/2+1),U(m/2+1,n/2+1)];
%U=vpa(U,7);
%ERR=[err(m/4+1,n/4+1),err(m/2+1,n/4+1),err(m*3/4+1,n/4+1),err(m/4+1,n/2+1),err(m/2+1,n/2+1)];
%ERR=vpa(ERR,4);
aiyubaozi 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 16:27


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.