偏微分方程—matlab

偏微分方程—matlab
偏微分方程—matlab

基础知识

偏微分方程的定解问题

各种物理性质的定常(即不随时间变化)过程,都可用椭圆型方程来描述。其最典型、最简单的形式是泊松(Poisson)方程

),(2222y x f y

u

x u u =??+??=? (1)

特别地,当 f ( x , y ) ≡ 0 时,即为拉普拉斯(Laplace)方程,又称为调和方程

02222=??+??=?y

u

x u u (2)

带有稳定热源或内部无热源的稳定温度场的温度分布,不可压缩流体的稳定无旋流动及静电场的电势等均满足这类方程。

Poisson 方程的第一边值问题为

??

??

?Ω?=Γ=Ω

∈=??+??=?Γ∈),(),(),(),(),(2222y x y x u y x y x f y u

x u u y x ? (3) 其 中 Ω 为 以 Γ 为 边 界 的 有 界区 域 , Γ 为 分 段 光 滑 曲 线, Ω U Γ 称 为 定 解区 域 ,f (x, y),?(x, y) 分别为 Ω,Γ 上的已知连续函数。

第二类和第三类边界条件可统一表示成

)0(0),(>=?

??

??+??Γ

∈a u n u y x α (4) 其中 n 为边界 Γ 的外法线方向。当α = 0 时为第二类边界条件,α ≠ 0 时为第三类边界条件。

在研究热传导过程,气体扩散现象及电磁场的传播等随时间变化的非定常物理问题时,常常会遇到抛物型方程。其最简单的形式为一维热传导方程

)0(022>=??-??a x

u

a t u (5) 方程(5)可以有两种不同类型的定解问题: 初值问题(也称为 Cauchy 问题)

??

???+∞<<∞-=+∞

<<-∞>=??-??x x x u x t x u

a t

u )()0,(,0022? (6) 初边值问题

????

?

????<<===<<<<=??-??l

x t g t l u t g t u x x u l x T t x u

a t u 0),(),(),(),0()

()0,(0,002

122? (7) 其中?

)(),(),(21x g x g x ?为已知函数,且满足连接条件 )

0()(),0()0(21g l g ==??问题(7)中的边界条件)(),(),(),0(21t g t l u t g t u ==称为第一类界条件。第二类和第三类边界条件为

T t t g u t x u T t t g u t x u l

x x ≤≤=??????-??≤≤=???

???-??==0),()(0),()(22101λλ (8)

其中0,021≥≥λλ。当021==λλ时,为第二类边界条件,否则称为第三类边界条件。 双曲型方程的最简单形式为一阶双曲型方程

0=??+??x

u a t u (9)

物理中常见的一维振动与波动问题可用二阶波动方程

2222x

u

a t u ??=?? (10) 描述,它是双曲型方程的典型形式。方程(10)的初值问题为

?????

????+∞

<<∞-=??+∞<<∞-=+∞<<-∞

2222φ? (11)

边界条件一般也有三类,最简单的初边值问题为

???

?

?

?

??

?≤≤==≤≤=??=<<

a t u t 0)(),(),(),0(0)()()0,(0,0210

2

222φ?

如果偏微分方程定解问题的解存在,唯一且连续依赖于定解数据(即出现在方程和定解条件中的已知函数),则此定解问题是适定的。可以证明,上面所举各种定解问题都是适定的。 §2 偏微分方程的差分解法

差分方法又称为有限差分方法或网格法,是求偏微分方程定解问题的数值解中应用最广泛的方法之一。它的基本思想是:先对求解区域作网格剖分,将自变量的连续变化区域用有限离散点(网格点)集代替;将问题中出现的连续变量的函数用定义在网格点上离散变量的函数代替;通过用网格点上函数的差商代替导数,将含连续变量的偏微分方程定解问题化成只含有限个未知数的代数方程组(称为差分格式)。如果差分格式有解,且当网格无限变小时其解收敛于原微分方程定解问题的解,则差分格式的解就作为原问题的近似解(数值解)。因此,用差分方法求偏微分方程定解问题一般需要解决以下问题:

(i )选取网格;

(ii )对微分方程及定解条件选择差分近似,列出差分格式; (iii )求解差分格式;

(iv )讨论差分格式解对于微分方程解的收敛性及误差估计。 下面我们只对偏微分方程的差分解法作一简要的介绍。 2.1 椭圆型方程第一边值问题的差分解法

以 Poisson 方程(1)为基本模型讨论第一边值问题的差分方法。 考虑 Poisson 方程的第一边值问题(3)

??

???Ω?=Γ=Ω

∈=??+??Γ∈),(),(),(),(),(2222y x y x u y x y x f y u

x

u y x ? 取 h ,τ 分别为 x 方向和 y 方向的步长,以两族平行线 τj y y kh x x j k ====,

),2,1,0,( ±±=j k 将 定 解 区 域 剖 分 成 矩 形 网 格 。 节 点 的 全 体 记 为

,,|),{(τj y kh x y x R j k k k === j i ,为整数} 。定解区域内部的节点称为内点,记内点集

Ω R 为τh Ω 。边界Γ与网格线的交点称为边界点,边界点全体记为 Γ

h τ

。与节点

),(j k y x 沿 x 方向或 y 方向只差一个步长的点),(1j k y x ±和 ),(1±j k y x 称为节点 )

,(j k y x 的相邻节点。如果一个内点的四个相邻节点均属于ΩU Γ,称为正则内点,正则内点的全体记为Ω(1),至少有一个相邻节点不属于ΩU Γ 的内点称为非正则内点,非正则内点的全体记为Ω(2)。我们的问题是要求出问题(3)在全体内点上的数值解。

为简便记,记),(),,(),(),(),(,j k j k j k j k y x f f y x u j k u y x j k ===。对正则内点

)1(),(Ω∈j k ,由二阶中心差商公式

)()

,1(),(2),1(22

),(22h O h

j k u j k u j k u x u j k +-+-+=??

)()

1,(),(2)1,(22

),(22ττ

O j k u j k u j k u y u j k +-+-+=?? Poisson 方程(1)在点),(j k 处可表示为

)

(2222,2

1

,,1,2

,1,,1ττ++=+-+

+--+-+h O f u u u h u u u j k j k j k j k j k j k j k (12)

在式(12)中略去)(22τ+h O ,即得与方程(1)相近似的差分方程

j k j k j k j k j

k j k j k f u u u h

u u u ,2

1

,,1,2

,1,,122=+-+

+--+-+τ

(13)

式(13)中方程的个数等于正则内点的个数,而未知数 j k u ,, 则除了包含正则内点处解u 的近似值,还包含一些非正则内点处u 的近似值,因而方程个数少于未知数个数。在非正则内点处 Poisson 方程的差分近似不能按式(13)给出,需要利用边界条件得到。

边界条件的处理可以有各种方案,下面介绍较简单的两种。 (i) 直接转移 (ii) 线性插值

由式(13)所给出的差分格式称为五点菱形格式,实际计算时经常取h =τ ,此时 五点菱形格式可化为

()j k j k j k j k j k j k f u u u u u h

,,1,1,,1,1241

=-+++-+-+ (14) 简记为

2

1

h j k j k f u ,,= (15) 其中 j k j k j k j k j k j k u u u u u u ,1,1,,1,1,4-+++=-+-+。

求解差分方程组最常用的方法是同步迭代法,同步迭代法是最简单的迭代方式。除 边界节点外,区域内节点的初始值是任意取定的。

例 1 用五点菱形格式求解 Laplace 方程第一边值问题

[]

??

???Ω

?=Γ++=Ω

∈=??+??Γ∈22),(2222)1(lg ),(),(0

y x y x u y x y u x

u y x

其中}1,0|),{(≤≤=Ωy x y x 。取 3

1

=

=τh 。 当τ=h 时,利用点(k, j),(k ±1, j .1),(k ±1, j +1)构造的差分格式

()j k j k j k j k j k j k f u u u u u h ,,1,11,11,11,12

421

=-+++--+--+++ (16) 称为五点矩形格式,简记为

2

21

h j k j k f u ,,= (17) 其中 j k j k j k j k j k j k u u u u u u ,1,11,11,11,1,4-+++=--+--+++。

2.2 抛物型方程的差分解法 以一维热传导方程(5)

)0(022>=??-??a x

u

a t u 为基本模型讨论适用于抛物型方程定解问题的几种差分格式。

首先对xt 平面进行网格剖分。分别取h ,τ 为x 方向与t 方向的步长,用两族平行直 线kh x x k == (k = 0,±1,±2,…) ,τj t t j ==k ( j = 0,1,2, …),将 xt 平面剖分成矩形网格,节点为),(j k y x (k = 0,±1,±2, …, j = 0,1,2, …)。为简便起见,记),,(),(j k y x j k =

),,(),(j k y x u j k u =),(k k x ??=),(11j j t g g =),(22j j t g g =),(11j j t λλ=

)(22j j t λλ=。

2.2.1 微分方程的差分近似

在网格内点(k, j)处,对 t u

??分别采用向前、向后及中心差商公式,对22x

u ??采用二

阶中心差商公式,一维热传导方程(5)可分别表示为

)()

,1(),(2),1(2)1,()1,()()

,1(),(2),1()1,(),()(),1(),(2),1()

,()1,(22

22

2

2

h O h

j k u j k u j k u a j k u j k u h O h

j k u j k u j k u a j k u j k u h O h

j k u j k u j k u a

j k u j k u +=-+-+---++=-+-+---+=-+-+--+ττττττ 由此得到一维热传导方程的不同的差分近似

022

,1,,1,1,=+----++h

u u u a

u u j

k j k j k j

k j k τ

(18)

022

,1,,11

,,=+----+-h u u u a

u u j

k j k j k j k j k τ

(19)

0222

,1,,11

,1,=+----+-+h

u u u a

u u j

k j k j k j k j k τ

(20)

2.2.2 初、边值条件的处理

为用差分方程求解定解问题(6),(7)等,还需对定解条件进行离散化。

对初始条件及第一类边界条件,可直接得到

())1,0,1,0(0,0,n k k x u u k

k k =±===或? (21)

j

j j n j j j g t l u u g t u u 2,1,0),(),0(==== )1,1,0(-=m j (22)

其中 τ

T m h l n ==

,。 对第二、三类边界条件则需用差商近似。下面介绍两种较简单的处理方法。 (i )在左边界(x = 0)处用向前差商近似偏导数 x

u

??,在右边界(l x =)处用向后差商近似偏导数

x

u

??,即

即得边界条件(8)的差分近似为

(ii )用中心差商近似

x

u

??,即

则得边界条件的差分近似为

这样处理边界条件,误差的阶数提高了,但式(24)中出现定解区域外的节点(-1, j)和 (n +1, j),这就需要将解拓展到定解区域外。可以通过用内节点上的u 值插值求出

,也可以假定热传导方程(5)在边界上也成立,将差分方程扩展到边界节点

上,由此消去

2.2.3 几种常用的差分格式

下面我们以热传导方程的初边值问题(7)为例给出几种常用的差分格式。

(i) 古典显式格式

为便于计算,令,式(18)改写成以下形式

将式(18)与(21),(22)结合,我们得到求解问题(7)的一种差分格式

由于第0 层( j = 0)上节点处的u值已知,由式(25)即可算出u在第一层

( j = 1)上节点处的近似值。重复使用式(25),可以逐层计算出各层节点的近似值。

(ii)古典隐式格式

将(19)整理并与式(21),(22)联立,得差分格式如下

其中。虽然第0 层上的u 值仍为已知,但不能由式(30)直接计算以上各层节点上的值故差分格式(26)称为古典隐式格式。

(iii)杜福特—弗兰克尔(DoFort—Frankel)格式

DoFort—Frankel 格式是三层显式格式,它是由式(24)与(25),(26)结合得到

的。具体形式如下:

用这种格式求解时,除了第0 层上的值由初值条件(21)得到,必须先用二层格式求

出第1 层上的值,然后再按格式(27)逐层计算。

2.3 双曲型方程的差分解法

对二阶波动方程(10)

如果令,则方程(10)可化成一阶线性双曲型方程组

记,则方程组(28)可表成矩阵形式

矩阵A有两个不同的特征值λ= ±a,故存在非奇异矩阵P,使得

作变换,方程组(29)可化成

方程组(30)由两个独立的一阶双曲型方程联立而成。因此下面主要讨论一阶双曲型方

程的差分解法。

考虑一阶双曲型方程的初值问题

与抛物型方程的讨论类似,仍将xt平面剖分成矩形网格。取x方向步长为h,t方向步长为τ,网格线为。为简便起见,记。

以不同的差商近似偏导数,可以得到方程(9)的不同的差分近似

结合离散化的初始条件,可以得到几种简单的差分格式。

§3 一维状态空间的偏微分方程的MATLAB 解法

3.1 工具箱命令介绍

MATLAB 提供了一个指令pdepe,用以解以下的PDE 方程式

其中时间介于之间,而位置x则介于[a,b]有限区域之间。m 值表示问题的对称性,

其可为0,1 或2,分别表示平板(slab),圆柱(cylindrical)或球体(spherical)的情形。因而,如果m > 0,则a必等于b,也就是说其具有圆柱或球体的对称关系。同时,式中

一项为流通量(flux),而为来源(source)项。

为偏微分方程的对角线系数矩阵。若某一对角线元素为0,则表示该偏微分方程为椭圆型偏微分方程,若为正值(不为0),则为拋物型偏微分方程。请注意 c 的对角线元素一定不全为0。偏微分方程初始值可表示为

而边界条件为

其中 x 为两端点位置,即 a 或b

用以解含上述初始值及边界值条件的偏微分方程的 MATLAB 命令 pdepe 的用法如 下:

sol = pdepe(m, pdepe,icfun,bcfun, xmesh,tspan,options)

其中

m 为问题之对称参数;

xmesh 为空间变量x 的网格点(mesh)位置向量,即

,其中

tspan 为时间变量t 的向量,即

,其中0t 为起始时间,M t 为 终点

时间。

pdefun 为使用者提供的 pde 函数文件。其函数格式如下:

[c, f , s] = pdefun(x,t,u, dudx)

亦即,使用者仅需提供偏微分方程中的系数向量。 c , f 和 s 均为行(column)向量,而向量 c 即为矩阵 c 的对角线元素。

icfun 提供解u 的起始值,其格式为u = icfun(x)值得注意的是u 为行向量。 bcfun 使用者提供的边界条件函数,格式如下:

[pl, ql, pr, ql] = bcfun(xl,ul, xr,ur,t)

其中ul 和ur 分别表示左边界(xl = b )和右边界(xr = a ) u 的近似解。输出变量中,pl 和 ql 分别表示左边界 p 和 q 的行向量,而 pr 和 qr 则为右边界 p 和 q 的行向量。

sol 为解答输出。sol 为多维的输出向量,sol(:,: i) 为i u 的输出,即=i u sol(:,:,i)。元素

=),(k j u i sol( j, k,i)表示在t = tspan( j)和x = xmesh(k)时i u 之答案。

options 为求解器的相关解法参数。详细说明参见 odeset 的使用方法。 注:

1. MA TLAB PDE 求解器 pdepe 的算法,主要是将原来的椭圆型和拋物线型偏微分 方程转化为一组常微分方程。此转换的过程是基于使用者所指定的 mesh 点,以二阶空 间离散化(spatial discretization)技术为之(Keel and Berzins,1990),然后以 ode15s 的指令 求解。采用 ode15s 的 ode 解法,主要是因为在离散化的过程中,椭圆型偏微分方程被 转化为一组代数方程,而拋物线型的偏微分方程则被转化为一组联立的微分方程。因而, 原偏微分方程被离散化后,变成一组同时伴有微分方程与代数方程的微分代数方程组, 故以 ode15s 便可顺利求解。

2. x 的取点(mesh)位置对解的精确度影响很大,若 pdepe 求解器给出“…has difficulty finding consistent initial considition ”的讯息时,使用者可进一步将 mesh 点取密 一点,即增加 mesh 点数。另外,若状态u 在某些特定点上有较快速的变动时,亦需将 此处的点取密集些,以增加精确度。值得注意的是 pdepe 并不会自动做 xmesh 的自动取 点,使用者必须观察解的特性,自行作取点的操作。一般而言,所取的点数至少需大于 3 以上。

3. tspan 的选取主要是基于使用者对那些特定时间的状态有兴趣而选定。而间距(step size)的控制由程序自动完成。

4. 若要获得特定位置及时间下的解,可配合以 pdeval 命令。使用格式如下:

[uout, duoutdx] = pdeval(m, xmesh,ui, xout)

其中

m 代表问题的对称性。m =0 表示平板;m =1 表示圆柱体;m =2 表示球体。其意义同 pdepe 中的自变量m 。

xmesh 为使用者在 pdepe 中所指定的输出点位置向量。

i u 即sol( j,:,i)。也就是说其为 pdepe 输出中第 i 个输出i u 在各点位置xmesh 处,时间固定

为)(j tspan t j 下的解。

xout 为所欲内插输出点位置向量。此为使用者重新指定的位置向量。 uout 为基于所指定位置 xout ,固定时间f t 下的相对应输出。

duoutdx 为相对应的du /dx 输出值。

ref. Keel,R.D. and M. Berzins,“A Method for the Spatial Discritization of Parabolic Equations in One Space Variable ”,SIAM J. Sci. and Sat. Comput.,V ol.11,pp.1-32,1990.

以下将以数个例子,详细说明 pdepe 的用法。 3.2 求解一维偏微分方程

例 2 试解以下之偏微分方程式

其中0 ≤ x ≤ 1,且满足以下之条件限制式

(i)起始值条件

IC :u(x,0) = sin(π x) (ii)边界条件

注:本问题的解析解为

解 下面将叙述求解的步骤与过程。当完成以下各步骤后,可进一步将其汇总为一主程序 ex20_1.m ,然后求解。

步骤 1 将欲求解的偏微分方程改写成如式的标准式。

此即

和m = 0。

步骤 2 编写偏微分方程的系数向量函数。 function [c,f,s]=ex20_1pdefun(x,t,u,dudx)

f=dudx;

s=0;

步骤3 编写起始值条件。

function u0=ex20_1ic(x)

u0=sin(pi*x);

步骤 4 编写边界条件。在编写之前,先将边界条件改写成标准形式,如式(37),找出相对应的p(.)和q(.)函数,然后写出MATLAB 的边界条件函数,例如,原边界条件可写成

pl = u(0,t), ql = 0,

因而,边界条件函数可编写成

function [pl,ql,pr,qr]=ex20_1bc(xl,ul,xr,ur,t)

pl=ul;

ql=0;

pr=pi*exp(-t);

qr=1;

步骤 5 取点。例如

x=linspace(0,1,20); %x 取20 点

t=linspace(0,2,5); %时间取5 点输出

步骤 6 利用pdepe 求解。

m=0; %依步骤1 之结果

sol=pdepe(m,@ex20_1pdefun,@ex20_1ic,@ex20_1bc,x,t);

步骤7 显示结果。

u=sol(:,:,1);

surf(x,t,u)

title('pde 数值解')

xlabel('位置')

ylabel('时间' )

zlabel('u')

若要显示特定点上的解,可进一步指定x 或t 的位置,以便绘图。例如,欲了解时

间为2(终点)时,各位置下的解,可输入以下指令(利用pdeval 指令):figure(2); %绘成图2

M=length(t); %取终点时间的下标

xout=linspace(0,1,100); %输出点位置

[uout,dudx]=pdeval(m,x,u(M,:),xout);

plot(xout,uout); %绘图

title('时间为2 时,各位置下的解')

ylabel('u')

综合以上各步骤,可写成一个程序求解例2。其参考程序如下:function ex20_1

%************************************

%求解一维热传导偏微分方程的一个综合函数程序

%************************************

m=0;

x=linspace(0,1,20); %xmesh

t=linspace(0,2,20); %tspan

%************

%以pde 求解

%************

sol=pdepe(m,@ex20_1pdefun,@ex20_1ic,@ex20_1bc,x,t);

u=sol(:,:,1); %取出答案

%************

%绘图输出

%************

figure(1)

surf(x,t,u)

title('pde 数值解')

xlabel('位置x')

ylabel('时间t' )

zlabel('数值解u')

%*************

%与解析解做比较

%*************

figure(2)

surf(x,t,exp(-t)'*sin(pi*x));

title('解析解')

xlabel('位置x')

ylabel('时间t' )

zlabel('数值解u')

%*****************

%t=tf=2 时各位置之解

%*****************

figure(3)

M=length(t); %取终点时间的下表

xout=linspace(0,1,100); %输出点位置

[uout,dudx]=pdeval(m,x,u(M,:),xout);

plot(xout,uout); %绘图

title('时间为2 时,各位置下的解')

xlabel('x')

ylabel('u')

%******************

%pde 函数

%******************

function [c,f,s]=ex20_1pdefun(x,t,u,dudx)

c=pi^2;

f=dudx;

s=0;

%******************

%初始条件函数

%******************

function u0=ex20_1ic(x)

u0=sin(pi*x);

%******************

%边界条件函数

%******************

function [pl,ql,pr,qr]=ex20_1bc(xl,ul,xr,ur,t)

pl=ul;

ql=0;

pr=pi*exp(-t);

qr=1;

例 3 试解以下联立的偏微分方程系统

其中且0 ≤x ≤1和t ≥0。此联立

偏微分方程系统满足以下初边值条件。

(i)初值条件

(ii)边值条件

解步骤1:改写偏微分方程为标准式

因此

和m = 0。另外,左边界条件( x = 0处)。写成

同理,右边界条件( x =1处)为

步骤2:编写偏微分方程的系数向量函数。

function [c,f,s]=ex20_2pdefun(x,t,u,dudx)

c=[1 1]';

f=[0.024 0.170]'.*dudx;

y=u(1)-u(2);

F=exp(5.73*y)-exp(-11.47*y);

s=[-F F]';

步骤3:编写初始条件函数

function u0=ex20_2ic(x)

u0=[1 0]';

步骤4:编写边界条件函数

function [pl,ql,pr,qr]=ex20_2bc(xl,ul,xr,ur,t)

pl=[0 ul(2)]';

ql=[1 0]';

pr=[ur(1)-1 0]';

qr=[0 1]';

步骤5:取点。

由于此问题的端点均受边界条件的限制,且时间t 很小时状态的变动很大(由多次求解后的经验得知),故在两端点处的点可稍微密集些。同时对于t 小处亦可取密一些。例如,x=[0 0.005 0.01 0.05 0.1 0.2 0.5 0.7 0.9 0.95 0.99 0.995 1];

t=[0 0.005 0.01 0.05 0.1 0.5 1 1.5 2];

以上几个主要步骤编写完成后,事实上就可直接完成主程序来求解。此问题的参考程序如下:function ex20_2

%***************************************

%求解一维偏微分方程组的一个综合函数程序

%***************************************

m=0;

x=[0 0.005 0.01 0.05 0.1 0.2 0.5 0.7 0.9 0.95 0.99 0.995 1];

t=[0 0.005 0.01 0.05 0.1 0.5 1 1.5 2];

%*************************************

%利用pdepe 求解

%*************************************

sol=pdepe(m,@ex20_2pdefun,@ex20_2ic,@ex20_2bc,x,t);

u1=sol(:,:,1); %第一个状态之数值解输出

u2=sol(:,:,2); %第二个状态之数值解输出

%*************************************

%绘图输出

%*************************************

figure(1)

surf(x,t,u1)

title('u1 之数值解')

xlabel('x')

ylabel('t')

%

figure(2)

surf(x,t,u2)

title('u2 之数值解')

xlabel('x')

ylabel('t')

%***************************************

%pde 函数

%***************************************

function [c,f,s]=ex20_2pdefun(x,t,u,dudx)

c=[1 1]';

f=[0.024 0.170]'.*dudx;

y=u(1)-u(2);

F=exp(5.73*y)-exp(-11.47*y);

s=[-F F]';

%****************************************

%初始条件函数

%****************************************

function u0=ex20_2ic(x)

u0=[1 0]';

%****************************************

%边界条件函数

%****************************************

function [pl,ql,pr,qr]=ex20_2bc(xl,ul,xr,ur,t)

pl=[0 ul(2)]';

ql=[1 0]';

pr=[ur(1)-1 0]';

qr=[0 1]';

3.3 化工应用实例

例 4 触煤反应装置内温度及转换率的分布

以外部热交换式的管形固定层触煤反应装置,进行苯加氢反应产生环己烷。此反应

系统之质量平衡及热平衡方程式如下:

其中T 为温度(℃), f 为反应率,L 为轴向距离,r 为径向距离。此系统的边界条件为

此外,式中之相关数据及操作条件如下:

(i)反应速率式

其中P 表示分压(atm),而速率参数为

上式中,下标B,H 及C 分别代表苯,氢及环己烷。R 为理想气体常数(1.987cal/mol·K)。

(ii)操作条件及物性数据

题意解析:

因反应速率式A r 与分压有关,而分压又与反应率f 有关。故需进一步将A r 由反应率f 表示,方能求解偏微分方程。基于以下的反应方程

则各分压与总压之关系为

将上式,连同反应速率式,带入平衡方程式中,配合边界条件,可利用pdepe 求解。

MATLAB 程序设计

将原方程改写成如式(35)的标准式

因此

和m = +1(圆柱)。另外,左边界条件( r = 0处)写成

同理右边界条件(w r r )可写成

根据以上的分析,可编写 MATLAB 程序求解此 PDE 问题,其参考程序如下: function ex60_3_1

%****************************** % 触媒反应器内温度及转化率的分布 %******************************

global Pt rw Tw G M y0 Mav rho_B Cp dHr h0 u R ke hw De %****************************** % 给定数据

%****************************** Pt=1.25; %总压(atm) rw=0.025; %管径(m) Tw=100+273; %壁温(℃) G=631; %质量流率(kg/m2hr) M=30; y0=0.0323; Mav=4.47; rho_B=1200; Cp=1.74; dHr=-49250; h0=65.8; T0=125+273; Lw=1; u=8.03;

R=1.987;

ke=0.65;

hw=112;

De=0.755;

%********************

m=1;

%********************

% 取点

%********************

r=linspace(0,rw,10);

L=linspace(0,Lw,10);

%***********************

% 利用pdepe 求解

%***********************

sol=pdepe(m,@ex20_3_1pdefun,@ex20_3_1ic,@ex20_3_1bc,r,L); T=sol(:,:,1); %温度

f=sol(:,:,2); %反应率

%***********************

% 绘图输出

%***********************

figure(1)

surf(L,r,T'-273)

title('temp')

xlabel('L')

ylabel('r')

zlabel('temp (0C)')

%

figure(2)

surf(L,r,f')

title('reaction rate')

xlabel('L')

ylabel('r')

zlabel('reaction rate')

%*************************************************

% PDE 函数

%************************************************* function [c1,f1,s1]=ex20_3_1pdefun(r,L,u1,DuDr)

global Pt rw Tw G M y0 Mav rho_B Cp dHr h0 u R ke hw De

T=u1(1);

f=u1(2);

%

k=exp(-12100/(R*T)+32.3/R);

Kh=exp(15500/(R*T)-31.9/R);

Kb=exp(11200/(R*T)-23.1/R);

(完整版)偏微分方程的MATLAB解法

引言 偏微分方程定解问题有着广泛的应用背景。人们用偏微分方程来描述、解释或者预见各种自然现象,并用于科学和工程技术的各个领域fll。然而,对于广大应用工作者来说,从偏微分方程模型出发,使用有限元法或有限差分法求解都要耗费很大的工作量,才能得到数值解。现在,MATLAB PDEToolbox已实现对于空间二维问题高速、准确的求解过程。 偏微分方程 如果一个微分方程中出现的未知函数只含一个自变量,这个方程叫做常微分方程,也简称微分方程;如果一个微分方程中出现多元函数的偏导数,或者说如果未知函数和几个变量有关,而且方程中出现未知函数对几个变量的导数,那么这种微分方程就是偏微分方程。 常用的方法有变分法和有限差分法。变分法是把定解问题转化成变分问题,再求变分问题的近似解;有限差分法是把定解问题转化成代数方程,然后用计算机进行计算;还有一种更有意义的模拟法,它用另一个物理的问题实验研究来代替所研究某个物理问题的定解。虽然物理现象本质不同,但是抽象地表示在数学上是同一个定解问题,如研究某个不规则形状的物体里的稳定温度分布问题,由于求解比较困难,可作相应的静电场或稳恒电流场实验研究,测定场中各处的电势,从而也解决了所研究的稳定温度场中的温度分布问题。 随着物理科学所研究的现象在广度和深度两方面的扩展,偏微分方程的应用范围更广泛。从数学自身的角度看,偏微分方程的求解促使数学在函数论、变分法、级数展开、常微分方程、代数、微分几何等各方面进行发展。从这个角度说,偏微分方程变成了数学的中心。

一、MATLAB方法简介及应用 1.1 MATLAB简介 MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。 1.2 Matlab主要功能 数值分析 数值和符号计算 工程与科学绘图 控制系统的设计与仿真 数字图像处理 数字信号处理 通讯系统设计与仿真 财务与金融工程 1.3 优势特点 1) 高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来; 2) 具有完备的图形处理功能,实现计算结果和编程的可视化; 3) 友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握; 4) 功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,

Matlab求解微分方程(组)及偏微分方程(组)

第四讲 Matlab 求解微分方程(组) 理论介绍:Matlab 求解微分方程(组)命令 求解实例:Matlab 求解微分方程(组)实例 实际应用问题通过数学建模所归纳得到的方程,绝大多数都是微分方程,真正能得到代数方程的机会很少.另一方面,能够求解的微分方程也是十分有限的,特别是高阶方程和偏微分方程(组).这就要求我们必须研究微分方程(组)的解法:解析解法和数值解法. 一.相关函数、命令及简介 1.在Matlab 中,用大写字母D 表示导数,Dy 表示y 关于自变量的一阶导数,D2y 表示y 关于自变量的二阶导数,依此类推.函数dsolve 用来解决常微分方程(组)的求解问题,调用格式为: X=dsolve(‘eqn1’,’eqn2’,…) 函数dsolve 用来解符号常微分方程、方程组,如果没有初始条件,则求出通解,如果有初始条件,则求出特解. 注意,系统缺省的自变量为t 2.函数dsolve 求解的是常微分方程的精确解法,也称为常微分方程的符号解.但是,有大量的常微分方程虽然从理论上讲,其解是存在的,但我们却无法求出其解析解,此时,我们需要寻求方程的数值解,在求常微分方程数值解方面,MATLAB 具有丰富的函数,我们将其统称为solver ,其一般格式为: [T,Y]=solver(odefun,tspan,y0) 说明:(1)solver 为命令ode45、ode23、ode113、ode15s 、ode23s 、ode23t 、ode23tb 、ode15i 之一. (2)odefun 是显示微分方程'(,)y f t y =在积分区间tspan 0[,]f t t =上从0t 到f t

Matlab求解微分方程(组)及偏微分方程(组)

第四讲Matlab求解微分方程(组) 理论介绍:Matlab求解微分方程(组)命令 求解实例:Matlab求解微分方程(组)实例 实际应用问题通过数学建模所归纳得到得方程,绝大多数都就是微分方程,真正能得到代数方程得机会很少、另一方面,能够求解得微分方程也就是十分有限得,特别就是高阶方程与偏微分方程(组)、这就要求我们必须研究微分方程(组)得解法:解析解法与数值解法、 一.相关函数、命令及简介 1、在Matlab中,用大写字母D表示导数,Dy表示y关于自变量得一阶导数,D2y 表示y关于自变量得二阶导数,依此类推、函数dsolve用来解决常微分方程(组)得求解问题,调用格式为: X=dsolve(‘eqn1’,’eqn2’,…) 函数dsolve用来解符号常微分方程、方程组,如果没有初始条件,则求出通解,如果有初始条件,则求出特解、 注意,系统缺省得自变量为t 2、函数dsolve求解得就是常微分方程得精确解法,也称为常微分方程得符号解、但就是,有大量得常微分方程虽然从理论上讲,其解就是存在得,但我们却无法求出其解析解,此时,我们需要寻求方程得数值解,在求常微分方程数值解方 面,MATLAB具有丰富得函数,我们将其统称为solver,其一般格式为: [T,Y]=solver(odefun,tspan,y0) 说明:(1)solver为命令ode45、ode23、ode113、ode15s、ode23s、ode23t、ode23tb、ode15i之一、 (2)odefun就是显示微分方程在积分区间tspan上从到用初始条件求解、 (3)如果要获得微分方程问题在其她指定时间点上得解,则令tspan(要求就是单调得)、 (4)因为没有一种算法可以有效得解决所有得ODE问题,为此,Matlab提供了多种求解器solver,对于不同得ODE问题,采用不同得solver、 表1 Matlab中文本文件读写函数

MatlabPDE工具箱有限元法求解偏微分方程

在科学技术各领域中,有很多问题都可以归结为偏微分方程问题。在物理专业的力学、热学、电学、光学、近代物理课程中都可遇见偏微分方程。 偏微分方程,再加上边界条件、初始条件构成的数学模型,只有在很特殊情况下才可求得解析解。随着计算机技术的发展,采用数值计算方法,可以得到其数值解。 偏微分方程基本形式 而以上的偏微分方程都能利用PDE工具箱求解。 PDE工具箱 PDE工具箱的使用步骤体现了有限元法求解问题的基本思路,包括如下基本步骤: 1) 建立几何模型 2) 定义边界条件 3) 定义PDE类型和PDE系数 4) 三角形网格划分

5) 有限元求解 6) 解的图形表达 以上步骤充分体现在PDE工具箱的菜单栏和工具栏顺序上,如下 具体实现如下。 打开工具箱 输入pdetool可以打开偏微分方程求解工具箱,如下 首先需要选择应用模式,工具箱根据实际问题的不同提供了很多应用模式,用户可以基于适

当的模式进行建模和分析。 在Options菜单的Application菜单项下可以做选择,如下 或者直接在工具栏上选择,如下 列表框中各应用模式的意义为: ① Generic Scalar:一般标量模式(为默认选项)。 ② Generic System:一般系统模式。 ③ Structural Mech.,Plane Stress:结构力学平面应力。

④ Structural Mech.,Plane Strain:结构力学平面应变。 ⑤ Electrostatics:静电学。 ⑥ Magnetostatics:电磁学。 ⑦ Ac Power Electromagnetics:交流电电磁学。 ⑧ Conductive Media DC:直流导电介质。 ⑨ Heat Tranfer:热传导。 ⑩ Diffusion:扩散。 可以根据自己的具体问题做相应的选择,这里要求解偏微分方程,故使用默认值。此外,对于其他具体的工程应用模式,此工具箱已经发展到了Comsol Multiphysics软件,它提供了更强大的建模、求解功能。 另外,可以在菜单Options下做一些全局的设置,如下 l Grid:显示网格 l Grid Spacing…:控制网格的显示位置 l Snap:建模时捕捉网格节点,建模时可以打开 l Axes Limits…:设置坐标系范围 l Axes Equal:同Matlab的命令axes equal命令

有限差分法求解偏微分方程MATLAB

南京理工大学 课程考核论文 课程名称:高等数值分析 论文题目:有限差分法求解偏微分方程姓名:罗晨 学号: 成绩: 有限差分法求解偏微分方程

一、主要内容 1.有限差分法求解偏微分方程,偏微分方程如一般形式的一维抛物线型方程: 22(,)()u u f x t t x αα??-=??其中为常数 具体求解的偏微分方程如下: 22001 (,0)sin()(0,)(1,)00 u u x t x u x x u t u t t π???-=≤≤?????? =??? ==≥??? 2.推导五种差分格式、截断误差并分析其稳定性; 3.编写MATLAB 程序实现五种差分格式对偏微分方程的求解及误差分析; 4.结论及完成本次实验报告的感想。 二、推导几种差分格式的过程: 有限差分法(finite-difference methods )是一种数值方法通过有限个微分方程近似求导从而寻求微分方程的近似解。有限差分法的基本思想是把连续的定解区域用有限个离散点构成的网格来代替;把连续定解区域上的连续变量的函数用在网格上定义的离散变量函数来近似;把原方程和定解条件中的微商用差商来近似,积分用积分和来近似,于是原微分方程和定解条件就近似地代之以代数方程组,即有限差分方程组,解此方程组就可以得到原问题在离散点上的近似解。 推导差分方程的过程中需要用到的泰勒展开公式如下: ()2100000000()()()()()()()......()(()) 1!2!! n n n f x f x f x f x f x x x x x x x o x x n +'''=+-+-++-+- (2-1) 求解区域的网格划分步长参数如下:

Matlab求解微分方程(组)及偏微分方程(组)

第四讲 Matlab 求解微分方程(组) 理论介绍:Matlab 求解微分方程(组)命令 求解实例:Matlab 求解微分方程(组)实例 实际应用问题通过数学建模所归纳得到的方程,绝大多数都是微分方程,真正能得到代数方程的机会很少.另一方面,能够求解的微分方程也是十分有限的,特别是高阶方程和偏微分方程(组).这就要求我们必须研究微分方程(组)的解法:解析解法和数值解法. 一.相关函数、命令及简介 1.在Matlab 中,用大写字母D 表示导数,Dy 表示y 关于自变量的一阶导数,D2y 表示y 关于自变量的二阶导数,依此类推.函数dsolve 用来解决常微分方程(组)的求解问题,调用格式为: X=dsolve(‘eqn1’,’eqn2’,…) 函数dsolve 用来解符号常微分方程、方程组,如果没有初始条件,则求出通解,如果有初始条件,则求出特解. 注意,系统缺省的自变量为t 2.函数dsolve 求解的是常微分方程的精确解法,也称为常微分方程的符号解.但是,有大量的常微分方程虽然从理论上讲,其解是存在的,但我们却无法求出其解析解,此时,我们需要寻求方程的数值解,在求常微分方程数值解方面,MATLAB 具有丰富的函数,我们将其统称为solver ,其一般格式为: [T,Y]=solver(odefun,tspan,y0) 说明:(1)solver 为命令ode45、ode23、ode113、ode15s 、ode23s 、ode23t 、ode23tb 、ode15i 之一. (2)odefun 是显示微分方程'(,)y f t y =在积分区间tspan 0[,]f t t =上从0t 到f t 用初始条件0y 求解. (3)如果要获得微分方程问题在其他指定时间点012,,, ,f t t t t 上的解,则令 tspan 012[,,,]f t t t t =(要求是单调的). (4)因为没有一种算法可以有效的解决所有的ODE 问题,为此,Matlab 提供

《偏微分方程概述及运用matlab求解偏微分方程常见问题》要点

北京航空航天大学 偏微分方程概述及运用matlab求解微分方 程求解常见问题 姓名徐敏 学号57000211 班级380911班 2011年6月

偏微分方程概述及运用matlab求解偏微分 方程常见问题 徐敏 摘要偏微分方程简介,matlab偏微分方程工具箱应用简介,用这个工具箱解方程的过程是:确定待解的偏微分方程;确定边界条件;确定方程所在域的几何形状;划分有限元;解方程 关键词MATLAB 偏微分方程程序 如果一个微分方程中出现的未知函数只含有一个自变量,这个方程叫做常微分方程,也简称微分方程:如果一个微分方程中出现多元函数的偏导数,或者说如果未知函数和几个变量有关,而且方程中出现未知函数对几个变量的导数,那么这种微分方程就是偏微分方程。 一,偏微分方程概述 偏微分方程是反映有关的未知变量关于时间的导数和关于空间变量的导数之间制约关系的等式。许多领域中的数学模型都可以用偏微分方程来描述,很多重要的物理、力学等学科的基本方程本身就是偏微分方程。早在微积分理论刚形成后不久,人们就开始用偏微分方程来描述、解释或预见各种自然现象,并将所得到的研究方法和研究成果运用于各门科学和工程技术中,不断地取得了显著的成效,显示了偏微分方程对于人类认识自然界基本规律的重要性。逐渐地,以物

理、力学等各门科学中的实际问题为背景的偏微分方程的研究成为传统应用数学中的一个最主要的内容,它直接联系着众多自然现象和实际问题,不断地提出和产生出需要解决的新课题和新方法,不断地促进着许多相关数学分支(如泛函分析、微分几何、计算数学等)的发展,并从它们之中引进许多有力的解决问题的工具。偏微分方程已经成为当代数学中的一个重要的组成部分,是纯粹数学的许多分支和自然科学及工程技术等领域之间的一座重要的桥梁。 在国外,对偏微分方程的应用发展是相当重视的。很多大学和研究单位都有应用偏微分方程的研究集体,并得到国家工业、科学部门及军方、航空航天等方面的大力资助。比如在国际上有重大影响的美国的Courant研究所、法国的信息与自动化国立研究所等都集中了相当多的偏微分方程的研究人员,并把数学模型、数学方法、应用软件及实际应用融为一体,在解决实际课题、推动学科发展及加速培养人才等方面都起了很大的作用。 在我国,偏微分方程的研究起步较晚。但解放后,在党和国家的大力号召和积极支持下,我国偏微分方程的研究工作发展比较迅速,涌现出一批在这一领域中做出杰出工作的数学家,如谷超豪院士、李大潜院士等,并在一些研究方向上达到了国际先进水平。但总体来说,偏微分方程的研究队伍的组织和水平、研究工作的广度和深度与世界先进水平相比还有很大的差距。因此,我们必须继续努力,大力加强应用偏微分方程的研究,逐步缩小与世界先进水平的差距 二,偏微分方程的内容

Matlab解微分方程(ODE+PDE)

常微分方程: 1 ODE解算器简介(ode**) 2 微分方程转换 3 刚性/非刚性问题(Stiff/Nonstiff) 4 隐式微分方程(IDE) 5 微分代数方程(DAE) 6 延迟微分方程(DDE) 7 边值问题(BVP) 偏微分方程(PDEs)Matlab解法 偏微分方程: 1 一般偏微分方程组(PDEs)的命令行求解 2 特殊偏微分方程(PDEs)的PDEtool求解 3 陆君安《偏微分方程的MATLAB解法 先来认识下常微分方程(ODE)初值问题解算器(solver) [T,Y,TE,YE,IE] = odesolver(odefun,tspan,y0,options) sxint = deval(sol,xint) Matlab中提供了以下解算器: 输入参数: odefun:微分方程的Matlab语言描述函数,必须是函数句柄或者字符串,必须写成Matlab

规范格式(也就是一阶显示微分方程组),这个具体在后面讲解 tspan=[t0 tf]或者[t0,t1,…tf]:微分变量的范围,两者都是根据t0和tf的值自动选择步长,只是前者返回所有计算点的微分值,而后者只返回指定的点的微分值,一定要注意对于后者tspan必须严格单调,还有就是两者数据存储时使用的内存不同(明显前者多),其它没有任何本质的区别 y0=[y(0),y’(0),y’’(0)…]:微分方程初值,依次输入所有状态变量的初值,什么是状态变量在后面有介绍 options:微分优化参数,是一个结构体,使用odeset可以设置具体参数,详细内容查看帮助 输出参数: T:时间列向量,也就是ode**计算微分方程的值的点 Y:二维数组,第i列表示第i个状态变量的值,行数与T一致 在求解ODE时,我们还会用到deval()函数,deval的作用就是通过结构体solution计算t 对应x值,和polyval之类的很相似! 参数格式如下: sol:就是上次调用ode**函数得道的结构体解 xint:需要计算的点,可以是标量或者向量,但是必须在tspan范围内 该函数的好处就是如果我想知道t=t0时的y值,不需要重新使用ode计算,而直接使用上次计算的得道solution就可以 [教程] 微分方程转换为一阶显示微分方程组方法 好,上面我们把Matlab中的常微分方程(ODE)的解算器讲解的差不多了,下面我们就具体开始介绍如何使用上面的知识吧! 现实总是残酷的,要得到就必须先付出,不可能所有的ODE一拿来就可以直接使用,因此,在使用ODE解算器之前,我们需要做的第一步,也是最重要的一步,借助状态变量将微分

Matlab偏微分方程求解方法

Matlab 偏微分方程求解方法 目录: §1 Function Summary on page 10-87 §2 Initial Value Problems on page 10-88 §3 PDE Solver on page 10-89 §4 Integrator Options on page 10-92 §5 Examples” on page 10-93 §1 Function Summary 1.1 PDE Solver” on page 10-87 1,2 PDE Helper Functi on” on page 10-87 1.3 PDE Solver This is the MATLAB PDE solver. PDE Helper Function §2 Initial Value Problems pdepe solves systems of parabolic and elliptic PDEs in one spatial variable x and time t, of the form )x u ,u ,t ,x (s ))x u ,u ,t ,x (f x (x x t u )x u ,u ,t ,x (c m m ??+????=????- (10-2) The PDEs hold for b x a ,t t t f 0≤≤≤≤.The interval [a, b] must be finite. m

can be 0, 1, or 2, corresponding to slab, cylindrical, or spherical symmetry,respectively. If m > 0, thena ≥0 must also hold. In Equation 10-2,)x /u ,u ,t ,x (f ?? is a flux term and )x /u ,u ,t ,x (s ?? is a source term. The flux term must depend on x /u ??. The coupling of the partial derivatives with respect to time is restricted to multiplication by a diagonal matrix )x /u ,u ,t ,x (c ??. The diagonal elements of this matrix are either identically zero or positive. An element that is identically zero corresponds to an elliptic equation and otherwise to a parabolic equation. There must be at least one parabolic equation. An element of c that corresponds to a parabolic equation can vanish at isolated values of x if they are mesh points.Discontinuities in c and/or s due to material interfaces are permitted provided that a mesh point is placed at each interface. At the initial time t = t0, for all x the solution components satisfy initial conditions of the form )x (u )t ,x (u 00= (10-3) At the boundary x = a or x = b, for all t the solution components satisfy a boundary condition of the form 0)x u ,u ,t ,x (f )t ,x (q )u ,t ,x (p =??+ (10-4) q(x, t) is a diagonal matrix with elements that are either identically zero or never zero. Note that the boundary conditions are expressed in terms of the f rather than partial derivative of u with respect to x-x /u ??. Also, of

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

用差分法解椭圆型偏微分方程 U(0,y)=si n(pi*y),U(2,y)=eA2si n( pi*y); 先自己去看一下关于五点差分法的理论书籍 Matlab 程序: unction [p e u x y k]=wudianchafenfa(h,m,n,kmax,ep) % g-s 迭代法解五点差分法问题 %kmax 为最大迭代次数 %m,n 为x,y 方向的网格数,例如(2-0 ) /0.01=200; %e 为误差,p 为精确解 syms temp ; u=zeros(n+1,m+1); x=0+(0:m)*h; y=0+(0:n)*h; for (i=1:n+1) u(i,1)=sin(pi*y(i)); u(i,m+1)=exp(1)*exp(1)*sin(pi*y(i)); end for (i=1:n) for ( j=1:m) f(i,j)=(pi*pi-1)*exp(x(j))*sin(pi*y(i)); end -(Uxx+Uyy)=(pi*pi-1)eAxsin(pi*y) 0

end t=zeros(n-1,m-1); for (k=1:kmax) for (i=2:n) for ( j=2:m) temp=h*h*f(i,j)/4+(u(i,j+1)+u(i,j-1)+u(i+1,j)+u(i- 1,j))/4; t(i,j)=(temp-u(i,j))*(temp-u(i,j)); u(i,j)=temp; end end t(i,j)=sqrt(t(i,j)); if (k>kmax) break ; end if (max(max(t))

《matlab求解偏微分方程常见问题》

偏微分方程概述及运用matlab求解偏微分 方程常见问题 徐敏 摘要偏微分方程简介,matlab偏微分方程工具箱应用简介,用这个工具箱解方程的过程是:确定待解的偏微分方程;确定边界条件;确定方程所在域的几何形状;划分有限元;解方程 关键词MATLAB 偏微分方程程序 如果一个微分方程中出现的未知函数只含有一个自变量,这个方程叫做常微分方程,也简称微分方程:如果一个微分方程中出现多元函数的偏导数,或者说如果未知函数和几个变量有关,而且方程中出现未知函数对几个变量的导数,那么这种微分方程就是偏微分方程。 一,偏微分方程概述 偏微分方程是反映有关的未知变量关于时间的导数和关于空间变量的导数之间制约关系的等式。许多领域中的数学模型都可以用偏微分方程来描述,很多重要的物理、力学等学科的基本方程本身就是偏微分方程。早在微积分理论刚形成后不久,人们就开始用偏微分方程来描述、解释或预见各种自然现象,并将所得到的研究方法和研究成果运用于各门科学和工程技术中,不断地取得了显著的成效,显示

了偏微分方程对于人类认识自然界基本规律的重要性。逐渐地,以物理、力学等各门科学中的实际问题为背景的偏微分方程的研究成为传统应用数学中的一个最主要的内容,它直接联系着众多自然现象和实际问题,不断地提出和产生出需要解决的新课题和新方法,不断地促进着许多相关数学分支(如泛函分析、微分几何、计算数学等)的发展,并从它们之中引进许多有力的解决问题的工具。偏微分方程已经成为当代数学中的一个重要的组成部分,是纯粹数学的许多分支和自然科学及工程技术等领域之间的一座重要的桥梁。 在国外,对偏微分方程的应用发展是相当重视的。很多大学和研究单位都有应用偏微分方程的研究集体,并得到国家工业、科学部门及军方、航空航天等方面的大力资助。比如在国际上有重大影响的美国的Courant研究所、法国的信息与自动化国立研究所等都集中了相当多的偏微分方程的研究人员,并把数学模型、数学方法、应用软件及实际应用融为一体,在解决实际课题、推动学科发展及加速培养人才等方面都起了很大的作用。 在我国,偏微分方程的研究起步较晚。但解放后,在党和国家的大力号召和积极支持下,我国偏微分方程的研究工作发展比较迅速,涌现出一批在这一领域中做出杰出工作的数学家,如谷超豪院士、李大潜院士等,并在一些研究方向上达到了国际先进水平。但总体来说,偏微分方程的研究队伍的组织和水平、研究工作的广度和深度与世界先进水平相比还有很大的差距。因此,我们必须继续努力,大力加强应用偏微分方程的研究,逐步缩小与世界先进水平的差距

微分方程在MATLAB中的实现

微分方程在MATLAB中的实现 作者:吴建宏 时间:2011.09.20 ********************************************* 作者简介: 吴建宏,男,毕业于哈尔滨工业大学(威海),现就读于同济大学,攻读汽车电子方向,有两年的MATLAB实践经验,个人喜欢建模,编程和电控方面的。真诚愿意和各位志同道合的朋友一起探讨交流,一起搭建广阔的知识平台。 *********************************************

PART ONE 微分方程简介 一、微分方程基本概念 微分方程:未知函数以及它们的某些阶的导数连同自变量都由一已知方程联系在一起的方程称为微分方程。其中,未知函数的最高阶数称为微分方程的阶。 偏微分方程:如果未知函数是多元函数,那么这个微分方程就是偏微分方程。常微分方程:如果未知函数是一元函数,那么这个微分方程就是常微分方程。 二、微分方程的解法 高等数学里讲过,微分方程的解法有分离变量法,常数变易法,特征值法……而在解决工程实际问题时候,利用MATLAB 求解微分方程的方法主要有符号解法和数值解法。其中,符号解法主要可以求解可以用特征值法求解的常系数微分方程和少数特殊的微分方程,有很大的局限性,而且运行时间较长,优点就是可以得到精确的数学表达式。大部分实际的微分方程不得不通过数值解法来求解,优点就是运行时间快,可以解决复杂的线性或者非线性微分方程。缺点就是解是近似值。 PART TWO 微分方程的符号解法(dsolve ) 微分方程的符号解法主要是函数dsolve ,这个函数用起来很简单,最重要的是要知道神马时候能够用dsolve ,神马时候不能用,当运行出错的时候,该怎么处理。接下来进入正文。 一、语法 r =dsolve('eq1,eq2,...','cond1,cond2,...','v') r =dsolve('eq1','eq2',...,'cond1','cond2',...,'v') 二、语法详解 1.eq1,eq2……用来代表看上去能够用高等数学介绍过的手段求解出来的微分方程,如果实在不太熟悉或者忘了,没关系,后面会提供出现错误时候的处理措施;v 代表自变量,默认值为时间t 。边界条件/初始值用cond1,cond2,...来表示。 2.在eq1,eq2……中,用D 来代表变量的微分,例如?y 用Dy 表示,而? ?y 用y D 2来表示。 3.初始值的边界条件用b a y =)(或者b a Dy =)(来表示。如果初始值的个数小于变量的个数,输出的结果中就会出现待定系数。 4.Dsolve 能够接受的最大输入初始条件是12个 5.如果是一个等式一个输出,输出的结果是非线性的符号表达式;如果是多个等式和多个输出,将会按照左边输出参数[y1,y2……]中的顺序输出相应的符号表达式;如果是多等式,单输出,返回一个结构体数组。 出现错误时候怎么处理?如果dsolve 不能找到有限解,它会试图去找方程的隐式解,当找到隐式解得时候,就会返回警告标志;如果既找不到有限解,也找不到隐式解,就会返回empty 的错误警告"warning Warning:explicit solution could not be found"。在这两种情况下都只能通过使用数值解法来解决。

MATLAB精通科学计算-偏微分方程求解

一、Maple V 系统 Maple V是由Waterloo大学开发的数学系统软件,它不但具有精确的数值处理功能,而且具有无以伦比的符号计算功能。Maple V的符号计算能力还是MathCAD和MATLAB等软件的符号处理的核心。Maple提供了2000余种数学函数,涉及范围包括:普通数学、高等数学、线性代数、数论、离散数学、图形学。它还提供了一套内置的编程语言,用户可以开发自己的应用程序,而且Maple自身的2000多种函数,基本上是用此语言开发的。 Maple采用字符行输入方式,输入时需要按照规定的格式输入,虽然与一般常见的数学格式不同,但灵活方便,也很容易理解。输出则可以选择字符方式和图形方式,产生的图形结果可以很方便地剪贴到Windows应用程序内。 二、MATLAB 系统 MATLAB原是矩阵实验室(Matrix Laboratory)在70年代用来提供Linpack和Eispack 软件包的接口程序,采用C语言编写。从80年代出现3.0的DOS版本,逐渐成为科技计算、视图交互系统和程序语言。MATLAB可以运行在十几个操作平台上,比较常见的有基于Wi ndows 9X/NT、OS/2、Macintosh、Sun、Unix、Linux等平台的系统。 MATLAB程序主要由主程序和各种工具包组成,其中主程序包含数百个内部核心函数,工具包则包括复杂系统仿真、信号处理工具包、系统识别工具包、优化工具包、神经网络工具包、控制系统工具包、μ分析和综合工具包、样条工具包、符号数学工具包、图像处理工具包、统计工具包等。而且5.x版本还包含一套几十个的PDF文件,从MATLAB的使用入门到其他专题应用均有详细的介绍。 MATLAB是数值计算的先锋,它以矩阵作为基本数据单位,在应用线性代数、数理统计、自动控制、数字信号处理、动态系统仿真方面已经成为首选工具,同时也是科研工作人员和大学生、研究生进行科学研究的得力工具。MATLAB在输入方面也很方便,可以使用内部的Editor或者其他任何字符处理器,同时它还可以与Word6.0/7.0结合在一起,在Word的页面里直接调用MATLAB的大部分功能,使Word具有特殊的计算能力。 三、MathCAD 系统 MathCAD是美国Mathsoft公司推出的一个交互式的数学系统软件。从早期的DOS下的1.0和Windows下的4.0版本,到今日的8.0版本,功能也从简单的数值计算,直至引用Maple强大的符号计算能力,使得它发生了一个质的飞跃。 MathCAD是集文本编辑、数学计算、程序编辑和仿真于一体的软件。MathCAD7.0 Pro fessional(专业版)运行在Win9X/NT下,它的主要特点是输入格式与人们习惯的数学书写格式很近似,采用WYSWYG(所见所得)界面,特别适合一般无须进行复杂编程或要求比较特殊的计算。MathCAD 7.0 Professional 还带有一个程序编辑器,对于一般比较短小,或者要求计算速度比较低时,采用它也是可以的。这个程序编辑器的优点是语法特别简单。 MathCAD可以看作是一个功能强大的计算器,没有很复杂的规则;同时它也可以和W ord、Lotus、WPS2000等字处理软件很好地配合使用,可以把它当作一个出色的全屏幕数学公式编辑器。 四、Mathematica 系统 Mathematica是由美国物理学家Stephen Wolfram领导的Wolfram Research开发的数学系统软件。它拥有强大的数值计算和符号计算能力,在这一方面与Maple类似,但它的

(整理)Matlab解微分方程.

第十六章 偏微分方程的数值解法 科学研究和工程技术中的许多问题可建立偏微分方程的数学模型。包含多个自变量的微分方程称为偏微分方程(partial differential equation),简称PDE 。偏微分方程问题,其求解是十分困难的。除少数特殊情况外,绝大多数情况均难以求出精确解。因此,近似解法就显得更为重要。本章仅介绍求解各类典型偏微分方程定解问题的差分方法。 16.1 几类偏微分方程的定解问题 一个偏微分方程的表示通常如下: (,,,,)x x x y y y x y A B C f x y Φ+Φ+Φ=ΦΦΦ (16.1.1) 式中,,,A B C 是常数,称为拟线性(quasilinear)数。通常,存在3种拟线性方程: 双曲型(hyperbolic)方程:240B AC ->; 抛物线型(parabolic)方程:240B AC -=; 椭圆型(ellliptic)方程:240B AC -<。 16.1.2 双曲型方程 最简单形式为一阶双曲型方程: 0u u a t x ??+=?? (16.1.2) 物理中常见的一维振动与波动问题可用二阶波动方程: 22222u u a t x ??=?? (16.1.3) 描述,它是双曲型方程的典型形式。方程的初值问题为:

222220 0,(,0)()()t u u a t x t x u x x u x x t ?ψ=???=>-∞<<+∞ ????? =?? ??=-∞<<+∞ ??? (16.1.4) 边界条件一般有三类,最简单的初边值问题为: 22222120 00,0(,0)(0,)(),(,)()0()t u u a t T x l t x u x l u t g t u l t g t t T u x x t ?ψ=???==<<<?? (16.1.8) 方程可以有两种不同类型的定解问题: (1) 初值问题: 2200,(,0)()u u a t x t x u x x x ????-=>-∞<<+∞? ????=-∞<<+∞ ? (16.1.6) (2) 初边值问题: 2212 00,0(,0)()0(0,)(),(,)()0u u a t T x l t x u x x x l u t g t u l t g t t T ????-=<<<

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

用差分法解椭圆型偏微分方程 -(Uxx+Uyy)=(pi*pi-1)e^xsin(pi*y) 0kmax) break; end if(max(max(t))

偏微分方程数值解法的MATLAB源码

[原创]偏微分方程数值解法的MATLAB源码【更新完毕】 说明:由于偏微分的程序都比较长,比其他的算法稍复杂一些,所以另开一贴,专门上传偏微分的程序谢谢大家的支持! 其他的数值算法见: ..//Announce/Announce.asp?BoardID=209&id=8245004 1、古典显式格式求解抛物型偏微分方程(一维热传导方程) function [U x t]=PDEParabolicClassicalExplicit(uX,uT,phi,psi1,psi2,M,N,C) %古典显式格式求解抛物型偏微分方程 %[U x t]=PDEParabolicClassicalExplicit(uX,uT,phi,psi1,psi2,M,N,C) % %方程:u_t=C*u_xx 0 <= x <= uX,0 <= t <= uT %初值条件:u(x,0)=phi(x) %边值条件:u(0,t)=psi1(t), u(uX,t)=psi2(t) % %输出参数:U -解矩阵,第一行表示初值,第一列和最后一列表示边值,第二行表示第2层…… % x -空间变量 % t -时间变量 %输入参数:uX -空间变量x的取值上限 % uT -时间变量t的取值上限 % phi -初值条件,定义为内联函数 % psi1 -边值条件,定义为内联函数 % psi2 -边值条件,定义为内联函数 % M -沿x轴的等分区间数 % N -沿t轴的等分区间数 % C -系数,默认情况下C=1 % %应用举例: %uX=1;uT=0.2;M=15;N=100;C=1; %phi=inline('sin(pi*x)');psi1=inline('0');psi2=inline('0'); %[U x t]=PDEParabolicClassicalExplicit(uX,uT,phi,psi1,psi2,M,N,C); %设置参数C的默认值 if nargin==7 C=1; end %计算步长 dx=uX/M;%x的步长 dt=uT/N;%t的步长

Matlab求解微分方程组及偏微分方程

第四讲 Matlab 求解微分方程(组) 理论介绍:Matlab 求解微分方程(组)命令 求解实例:Matlab 求解微分方程(组)实例 实际应用问题通过数学建模所归纳得到的方程,绝大多数都就是微分方程,真正能得到代数方程的机会很少、另一方面,能够求解的微分方程也就是十分有限的,特别就是高阶方程与偏微分方程(组)、这就要求我们必须研究微分方程(组)的解法:解析解法与数值解法、 一.相关函数、命令及简介 1、在Matlab 中,用大写字母D 表示导数,Dy 表示y 关于自变量的一阶导数,D2y 表示y 关于自变量的二阶导数,依此类推、函数dsolve 用来解决常微分方程(组)的求解问题,调用格式为: X=dsolve(‘eqn1’,’eqn2’,…) 函数dsolve 用来解符号常微分方程、方程组,如果没有初始条件,则求出通解,如果有初始条件,则求出特解、 注意,系统缺省的自变量为t 2、函数dsolve 求解的就是常微分方程的精确解法,也称为常微分方程的符号解、但就是,有大量的常微分方程虽然从理论上讲,其解就是存在的,但我们却无法求出其解析解,此时,我们需要寻求方程的数值解,在求常微分方程数值解方面,MATLAB 具有丰富的函数,我们将其统称为solver,其一般格式为: [T,Y]=solver(odefun,tspan,y0) 说明:(1)solver 为命令ode45、ode23、ode113、ode15s 、ode23s 、ode23t 、ode23tb 、ode15i 之一、 (2)odefun 就是显示微分方程'(,)y f t y =在积分区间tspan 0[,]f t t =上从0t 到f t 用初始条件0y 求解、 (3)如果要获得微分方程问题在其她指定时间点012,,,,f t t t t L 上的解,则令tspan 012[,,,]f t t t t =L (要求就是单调的)、 (4)因为没有一种算法可以有效的解决所有的ODE 问题,为此,Matlab 提供了多种求解器solver,对于不同的ODE 问题,采用不同的solver 、

相关文档
最新文档