找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2579|回复: 0
打印 上一主题 下一主题
收起左侧

偏微分方程的MATLAB解法 数学物理方法

[复制链接]
跳转到指定楼层
楼主


偏微分方程的matlab解法

主要讲述如何用MATLAB实现对偏微分方程的仿真求解.MATLAB的偏微分方程工具箱(PDE Toolbox)的出现,为偏微分方程的求解以及定性研究提供了捷径.主要步骤为:

1、设置PDE的定解问题.即设置二维定解区域、边界条件以及方程的形式;和系数
2、用有限元法(FEM)求解PDE.即网格的生成、方程的离散以及求出数值解;
3、解的可视化.

PDEToolbox注意事项
只能解决二维模型,一维的扩成二维,三维的缩成二维,时间维不计算在内
公式类型,只能解决部分偏微分方程,由公式类型决定
边界条件两种,Dirichlet和Neumann
初始条件




第一题

g='circleg';
b='circleb1';
c=1;
a=0;
f=1;
[p,e,t]=initmesh(g,'hmax',1);
figure;
pdemesh(p,e,t); axis equal
er = Inf;
while er > 0.001
    [p,e,t]=refinemesh(g,p,e,t);
    u=assempde(b,p,e,t,c,a,f);
    exact=(1-p(1,:).^2-p(2,:).^2)'/4;
    er=norm(u-exact,'inf');
    fprintf('Error: %e. Number of nodes: %d\n',er,size(p,2));
end
figure;
pdemesh(p,e,t); axis equal
figure;
pdesurf(p,t,u-exact);
figure;
pdesurf(p,t,u);


第二题

a=0;
b=1;
c=0;
d=1;
r='squareg';
z='squareb3';
[p,e,t]=initmesh('squareg');
figure;
pdemesh(p,e,t); axis equal
x=p(1,:)';
y=p(2,:)';
u0=atan(cos(pi/2*x));
ut0=3*sin(pi*x).*exp(sin(pi/2*y));
n=31;
tlist=linspace(0,5,n);
uu=hyperbolic(u0,ut0,tlist,z,p,e,t,b,a,c,d);
figure; set(gcf,'renderer','zbuffer');
delta=-1:0.1:1;
[uxy,tn,a2,a3]=tri2grid(p,t,uu(:,1),delta,delta);
gp=[tn;a2;a3];
newplot;
umax=max(max(uu));
umin=min(min(uu));
for i=1:n
    pdeplot(p,e,t,'xydata',uu(:,i),'zdata',uu(:,i),'zstyle','continuous',...
                  'mesh','off','xygrid','on','gridparam',gp,'colorbar','off');
    axis([-1 1 -1 1 umin umax]); caxis([umin umax]);
    M(i)=getframe;
end
movie(M,1);


第三题

g='squareg';
b='squareb1';
c=1;
a=0;
f=1;
d=1;
[p,e,t]=initmesh(g);
figure;
pdemesh(p,e,t); axis equal
u0=zeros(size(p,2),1);
ix=find(sqrt(p(1,:).^2+p(2,:).^2)<0.4);
u0(ix)=ones(size(ix));
nframes=20;
tlist=linspace(0,0.1,nframes);
u1=parabolic(u0,tlist,b,p,e,t,c,a,f,d);
figure; set(gcf,'Renderer','zbuffer');
newplot;
colormap(cool);
x=linspace(-1,1,31);y=x;
[~,tn,a2,a3]=tri2grid(p,t,u0,x,y);
umax=max(max(u1));
umin=min(min(u1));
for j=1:nframes,
    u=tri2grid(p,t,u1(:,j),tn,a2,a3);i=find(isnan(u));u(i)=zeros(size(i));
    surf(x,y,u);caxis([umin umax]);
    axis([-1 1 -1 1 0 1]);
    shading interp;
    Mv(j) = getframe;
end

全部资料51hei下载地址:
数学物理方法.rar (1.97 MB, 下载次数: 6)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表