4.8.2  偏微分方程

在自然科学的很多领域内,都会遇到微分方程初值问题,特别是偏微分方程,它的定解问题是描述自然界及科学现象的最重要的工具。可以说,几乎自然界和各种现象都可以通过微分方程(特别是偏微分方程)来描述。

MATLAB提供了一个专门用于求解偏微分方程的工具箱PDE Toolbox。本小节仅介绍一些最简单、经典的偏微分方程,如椭圆型、双曲型、抛物型等偏微分方程,并给出求解方法。用户可以从中了解其解题的基本方法,从而解决类似的问题。

1.椭圆型问题

assempde函数是PDE工具箱中的一个基本函数,它使用有限元法组合PDE问题。该函数用来有选择地生成PDE问题的解。可以用assempde函数求解下面的标量椭圆型问题:

或系统椭圆型问题:

对于标量的情况,用解的列向量代表解矢量u,列矢量中的值对应于p的对应节点处的解。对于具有np个节点的N维系统,u1的前np行描述u的第1个元素,接下来的np行描述u的第2个元素,依次类推。这样,u的元素就作为N块节点行放到u中。assempde函数的调用语法如下。

(1)u=assempde(b,p,e,t,c,a,f): 通过在线性方程组中剔除Dirichlet边界条件来组合和求解PDE问题。

(2)[K,F]=assempde(b,p,e,t,c,a,f): 通过刚性位移近似Dirichlet边界条件来组合和求解PDE问题。K和F分别为刚性矩阵和右边项。PDE问题的有限元解为u1=K\F。

(3)[K,F,B,ud]=assempde(b,p,e,t,c,a,f):通过从线性方程组剔除Dirichlet边界条件来组合PDE问题。u1=K\F,则返回非Dirichlet点上的解。完整的PDE问题可以通过MATLAB中的表达式u=B*u1+ud求解。

(4)[K,M,F,Q,G,H,R]=assempde(b,p,e,t,c,a,f):给出PDE问题的分离表示。

(5)u=assempde(K,M,F,Q,G,H,R):将PDE问题的分离表示转换为单一矩阵或矢量的形式,然后通过从线性方程组中剔除Dirichlet边界条件来求解。

(6)[K1,F1]=assempde(K,M,F,Q,G,H,R):用很大的常数修改Dirichlet边界条件,从而将PDE问题的分离表示转换为单一矩阵或矢量的形式。

(7)[K1,F1,B,ud]=assempde(K,M,F,Q,G,H,R):从线性方程组中剔除Dirichlet边界条件,从而将PDE问题的分离表示转换为单一矩阵或矢量的形式。

b描述PDE问题的边界条件。b也可以是边界条件矩阵或边界M文件的文件名。PDE问题几何模型由网络数据p,e,t描述。网格数据的生成可以查询help文档中的initmesh函数。

系数c,a,d,f可以通过多种方式给定。这些系数也可以与时间t相关,在assempde函数中可以看到所有选项的列表。

【例4-47】  求解L型薄膜的方程,为Dirichlet边界条件。最后绘图显示结果。

>> [p,e,t]=initmesh('lshapeg','hmax',0.2);    %生成初始三角形网格,hmax指网格大小

>> [p,e,t]=refinemesh('lshapeg',p,e,t);       %  将初始的三角形网格细化

>> u=assempde('lshapeb',p,e,t,1,0,1);         %  求解方程

>> pdesurf(p,t,u)                                %  绘制结果图形

lshapeg和lshapeb分别为表示对象几何模型和边界条件的M文件,为工具箱自带文件。initmesh函数和 refinemesh函数分别对网格模型进行初始化和细化。pdesurf函数绘制解的表面图。L型薄膜泊松方程的解如图4-15所示。

2.抛物型问题

MATLAB提供了parabolic函数求解标量抛物型问题:

图4-15  L型薄膜泊松方程的解

或系统PDE问题:

该函数的调用语法如下。

(1)u1=parabolic(u0,tlist,g,b,p,e,t,c,a,f,d):p,e,t为网格数据,b为边界条件,初值为u0。

(2)u1=parabolic(u0,tlist,b,p,e,t,c,a,f,d,rtol,atol):atol和rtol为绝对和相对容限。

(3)u1=parabolic(u0,tlist,K,F,B,ud,M):生成下面PDE问题的解。

的初始值为u0。

【例4-48】  求解热传导方程:。其中。在的区域内令,在其他区域内令。使用Dirichlet边界条件。要求计算时间linspace(0,0.1,20)处的解。

%  生成初始三角形网格数据

>> [p,e,t]=initmesh('squareg');                %  参数squareg指计算区域是方形的

>> [p,e,t]=refinemesh('squareg',p,e,t);       %  将初始的三角形网格细化

>> u0=zeros(size(p,2),1);

>> ix=find(sqrt(p(1,:).^2+p(2,:).^2)<0.4);    %  查找区域内的元素

>> u0(ix)=ones(size(ix));                       %  令

>> tlist=linspace(0,0.1,20);                   %  时间列表

>> u1=parabolic(u0,tlist,'squareb1',p,e,t,1,0,1,1);   %  求解偏微分方程

本例首先调用initmesh函数生成偏微分方程的初始网格,然后调用parabolic函数求解偏微分方程,运行结束将显示如下信息:

96 successful steps

0 failed attempts

194 function evaluations

1 partial derivatives

20 LU decompositions

193 solutions of linear systems

具体的结果u1是一个665*20的矩阵,这里就略去不显示了。

3.双曲型问题

MATLAB提供了hyperbolic函数来求解标量双曲型问题:

或系统双曲型问题:

hyperbolic函数的调用语法如下。

u1=hyperbolic(u0,ut0,tlist,b,p,e,t,c,a,f,d,rtol,atol):p,e,t为网格数据,b为边界条件,u0为初值,初始导数为ut0。atol和rtol为绝对和相对容限。

u1=hyperbolic(u0,ut0,tlist,K,F,B,ud,M)生成下面PDE问题的解。

u的初始值为u0和ut0。

在MATLAB命令窗口输入:

>> [p,e,t]=initmesh('squareg');                            %   生成初始三角形网格

>> x=p(1,:)';

>> y=p(2,:)';

>> u0=atan(cos(pi/2*x));

>> ut0=3*sin(pi*x).*exp(cos(pi*y));

>> tlist=linspace(0,5,31);                                  %  时间列表

>> uu=hyperbolic(u0,ut0,tlist,'squareb3',p,e,t,1,0,0,1);   %  求解方程

本例首先调用initmesh函数生成偏微分方程的初始网格,然后调用hyperbolic函数求解偏微分方程,运行结束将显示如下信息:

462 successful steps

70 failed attempts

1066 function evaluations

1 partial derivatives

156 LU decompositions

1065 solutions of linear systems

具体的结果uu是一个177*31的矩阵,这里就略去不显示了。

偏微分方程matlab课件,MATLAB偏微分方程相关推荐

  1. 椭圆方程 matlab,五点差分法(matlab)解椭圆型偏微分方程

    <五点差分法(matlab)解椭圆型偏微分方程>由会员分享,可在线阅读,更多相关<五点差分法(matlab)解椭圆型偏微分方程(8页珍藏版)>请在人人文库网上搜索. 1.用差分 ...

  2. matlab抛物偏微分方程,抛物型方程差分求解 跪求MATLAB解抛物型偏微分方程的程序...

    为什么抛物线方程与圆方程联立不能使用韦达定理 很容易了解到,抛物线和圆的交点均在X轴上方\"其实这时你应该注意到一点就是,这两个交点的纵坐标是相等的,所以其实对应的是一个y值,也就是你列的一 ...

  3. 中科院的matlab课件,中科院的matlab课件

    PPT内容 这是中科院的matlab课件,关于微积分问题的计算机求解,包括了微积分问题的解析解,函数的级数展开与级数求和问题求解,数值微分,数值积分问题,曲线积分与曲面积分的计算等内容,欢迎点击下载. ...

  4. 将数学模型用matlab,matlab课件第3章_控制系统的数学模型及其转换.ppt

    matlab课件第3章_控制系统的数学模型及其转换 3.1.1 传递函数 传递函数输入举例 3.1.2 零极点增益形式 3)零极点增益模型: 3.1.3 部分分式形式 2.1.4 状态空间表达式 3. ...

  5. matlab第八章答案,MATLAB课件第八章线性代数基础

    <MATLAB课件第八章线性代数基础>由会员分享,可在线阅读,更多相关<MATLAB课件第八章线性代数基础(15页珍藏版)>请在人人文库网上搜索. 1.第八章 线性代数基础1. ...

  6. 风力发电控制系统的matlab,基于MATLAB的风力发电系统设计ppt课件

    <基于MATLAB的风力发电系统设计ppt课件>由会员分享,可在线阅读,更多相关<基于MATLAB的风力发电系统设计ppt课件(21页珍藏版)>请在人人文库网上搜索. 1.Th ...

  7. 渗流分析 matlab,基于matlab的边坡虹吸排水渗流场分析

    0引言在边坡变形破坏的影响因素中地下水活动是大量滑坡发生的直接原因也是最复杂和变化最频繁的影响因素[1].地下水通过物理的.化学的和力学的等作用改变边坡的结构,从而给坡体施加静水压力和动水压力[2,3 ...

  8. java开源仿真平台除了matlab,除了Matlab,数学物理建模仿真还有更好的选择

    国内工业界搞研发时,使用的通用数学物理建模仿真软件除了Matlab还是Matlab,似乎Matlab已经成为了一种行业标准,找不到比它更牛的了.然而果真如此吗?只能说,Matlab满足绝大多数行业研发 ...

  9. 金属热传导的matlab,热传导matlab代码

    · 昆明学院 2015 届毕业设计(论文) 设计(论文)题目 一维热传导问题的数值解法及其 MATLAB 模拟 子课题题目 无 姓名 学号 所属系 专业年级 指导教师 伍有超 5...... Comp ...

最新文章

  1. struts2 select 默认选中
  2. Node.js学习之路09——Path基本介绍
  3. Oracle错误 1053: 该服务没有响应启动或控制请求
  4. VMWare中CentOS系统不能上网的解决
  5. C++中有string类,string是一个类不是一种类型,c语言中没有
  6. 转 学习:设置Windows live writer “不发布”到博客园随笔
  7. python使用线性回归实现房价预测
  8. 网易前端进阶特训营,邀你免费入营!一举解决面试晋升难题!
  9. 宇宙是什么,有尽头吗,为什么?
  10. 【优化算法】精子群优化算法(SSO)【含Matlab源码 1465期】
  11. u盘重装惠普服务器系统,教你hp惠普u盘重装win10系统
  12. 编程语言c语言vb,c语言和vb语言哪个比较简单
  13. 3D数字孪生大屏怎么做?你需要了解这款数据可视化软件
  14. STM32之提升迷之自信(时钟的制作)
  15. matlab实现kmeans聚类算法
  16. 如何在服务器里面新建文件夹,怎么在云服务器新建文件夹
  17. 【web素材】11—15套免费网站后台管理模板
  18. 继承Thread类来创建多线程
  19. 多卡聚合路由器和普通路由器的区别
  20. 一文看懂Android APK安装的原理

热门文章

  1. 仿苏宁易购完整源码+答辩ppt(java+mysql+JavaScript)资源详细说明
  2. 关于信号功率、增益的表示 dbi dbm
  3. 除了PMP,项目经理还有哪些证书值得考?
  4. 音频编码器为packed(非planar)格式时的说明
  5. REVISITING DYNAMIC CONVOLUTION VIA MATRIXDECOMPOSITION 官方代码解析心得
  6. 从科研切入点到方法论创新、从选刊投稿到写作方法,详细聊聊如何完成一篇学术论文的写作
  7. 月薪集中在8k-17k、厌倦大小周、近三成的人没有跳槽过,中国开发者调查报告发布
  8. 我的世界服务器截图文件在哪个文件夹,迷你世界W7截图保存在哪个文件夹 | 手游网游页游攻略大全...
  9. 据说是美团最缺人的部门了
  10. .nav css,Bootstrap CSS组件之导航(nav)