偏微分方程数值解法(1)

合集下载

第十章 偏微分方程数值解法

第十章 偏微分方程数值解法

第十章 偏微分方程数值解法偏微分方程问题,其求解十分困难。

除少数特殊情况外,绝大多数情况均难以求出精确解。

因此,近似解法就显得更为重要。

本章仅介绍求解各类典型偏微分方程定解问题的差分方法。

§1 差分方法的基本概念1.1 几类偏微分方程的定解问题椭圆型方程:其最典型、最简单的形式是泊松(Poisson )方程),(2222y x f yu x u u =∂∂+∂∂=∆ 特别地,当0),(≡y x f 时,即为拉普拉斯(Laplace )方程,又称为调和方程2222=∂∂+∂∂=∆yux u u Poisson 方程的第一边值问题为⎪⎩⎪⎨⎧Ω∂=Γ=Ω∈=∂∂+∂∂Γ∈),(),(),(),(),(2222y x y x u y x y x f y ux u y x ϕ 其中Ω为以Γ为边界的有界区域,Γ为分段光滑曲线,ΓΩ称为定解区域,),(y x f ,),(y x ϕ分别为Ω,Γ上的已知连续函数。

第二类和第三类边界条件可统一表示为),(),(y x u u y x ϕα=⎪⎪⎭⎫ ⎝⎛+∂∂Γ∈n 其中n 为边界Γ的外法线方向。

当0=α时为第二类边界条件, 0≠α时为第三类边界条件。

抛物型方程:其最简单的形式为一维热传导方程220(0)u ua a t x∂∂-=>∂∂ 方程可以有两种不同类型的定解问题:初值问题⎪⎩⎪⎨⎧+∞<<∞-=+∞<<-∞>=∂∂-∂∂x x x u x t x u a tu )()0,(,0022ϕ初边值问题221200,0(,0)()0(0,)(),(,)()0u ua t T x l t x u x x x lu t g t u l t g t t Tϕ⎧∂∂-=<<<<⎪∂∂⎪⎪=≤≤⎨⎪==≤≤⎪⎪⎩其中)(x ϕ,)(1t g ,)(2t g 为已知函数,且满足连接条件)0()(),0()0(21g l g ==ϕϕ边界条件)(),(),(),0(21t g t l u t g t u ==称为第一类边界条件。

偏微分方程的数值解

偏微分方程的数值解

第二十章 偏微分方程的数值解自然科学与工程技术中种种运动发展过程与平衡现象各自遵守一定的规律。

这些规律的定量表述一般地呈现为关于含有未知函数及其导数的方程。

我们将只含有未知多元函数及其偏导数的方程,称之为偏微分方程。

方程中出现的未知函数偏导数的最高阶数称为偏微分方程的阶。

如果方程中对于未知函数和它的所有偏导数都是线性的,这样的方程称为线性偏微分方程,否则称它为非线性偏微分方程。

初始条件和边界条件称为定解条件,未附加定解条件的偏微分方程称为泛定方程。

对于一个具体的问题,定解条件与泛定方程总是同时提出。

定解条件与泛定方程作为一个整体,称为定解问题。

§1 偏微分方程的定解问题各种物理性质的定常(即不随时间变化)过程,都可用椭圆型方程来描述。

其最典型、最简单的形式是泊松(Poisson)方程),(2222y x f y ux u u =∂∂+∂∂=∆ (1)特别地,当0),(≡y x f 时,即为拉普拉斯(Laplace)方程,又称为调和方程02222=∂∂+∂∂=∆yux u u (2)带有稳定热源或内部无热源的稳定温度场的温度分布,不可压缩流体的稳定无旋流动及静电场的电势等均满足这类方程。

Poisson 方程的第一边值问题为⎪⎩⎪⎨⎧Ω∂=Γ=Ω∈=∂∂+∂∂Γ∈),(|),(),(),(),(2222y x y x u y x y x f y uxu y x ϕ (3)其中Ω为以Γ为边界的有界区域,Γ为分段光滑曲线,ΓΩ 称为定解区域,),(),,(y x y x f ϕ分别为ΓΩ,上的已知连续函数。

第二类和第三类边界条件可统一表示成),(),(y x u n u y x ϕα=⎪⎭⎫⎝⎛+∂∂Γ∈ (4)其中n 为边界Γ的外法线方向。

当0=α时为第二类边界条件,0≠α时为第三类边界条件。

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

其最简单的形式为一维热传导方程)0(022>=∂∂-∂∂a xu a t u (5)方程(5)可以有两种不同类型的定解问题:初值问题(也称为Cauchy 问题)⎪⎩⎪⎨⎧+∞<<∞-=+∞<<∞->=∂∂-∂∂x x x u x t x u a t u )()0,(,0022ϕ (6)初边值问题⎪⎪⎪⎩⎪⎪⎪⎨⎧≤≤===<<<<=∂∂-∂∂Tt t g t l u t g t u x x u l x T t x ua t u 0),(),(),(),0()()0,(0,002122ϕ (7) 其中)(),(),(21t g t g x ϕ为已知函数,且满足连接条件)0()(),0()0(21g l g ==ϕϕ问题(7)中的边界条件)(),(),(),0(21t g t l u t g t u ==称为第一类边界条件。

偏微分方程数值解法

偏微分方程数值解法
b[i].y=(i/(N+1))*(1.0/N);
}
}
void boundnote(int bd[],struct xy b[])//找出边界点
{
int i,j=1;
for(i=1;i<NG+1;i++)
{
if(b[i].x==0||b[i].x==1.0||b[i].y==0||b[i].y==1.0)
#define TSTP 0.01 //时间步长
#define TN 100 //时间迭代步数
#define J 1.0/(N*N) //雅可比行列式的绝对值
double u0(double x,double y) //初值函数u0
{
double z;
z=100*x*y*(x-1)*(y-1);
return z;
}
}
void AIJ(double **aij,double aryk[],int **a) //计算单元刚度矩阵
{
int i;
for(i=1;i<LEE+1;i++)
{
aij[i][1]=1.0/(12*N*N)+TSTP+2*TSTP*1.0/(54*N*N)*(aryk[a[i][1]]+aryk[a[i][2]]+aryk[a[i][3]]);// 1 1
//主元太小
}
//交换第ik行和第k行的元素
if(ik!=k)
{
double t;
for(i=k;i<NG+1;i++)
{
t=E[ik][i];
E[ik][i]=E[k][i];

偏微分方程数值解_图文_图文

偏微分方程数值解_图文_图文

估计误差
这种误差称为“局部截断误差”,如图。
局部截断误差是以点 的精确解 而产生的误差。
为出发值,用数值方法推进到下一个点
2.整体截断误差—收敛性
整体截断误差是以点 的初始值 为出发值,用数值方法推进i+1步到点
,所得的近似值 与精确值
的偏差:
称为整体截断误差。
特例,若不计初始误差,即 则
即 3.舍入误差—稳定性
五、线性多步(Linear Multistep Method)法
1. 预备知识:插值多项式
插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况, 估算出函数在其他点处的近似值。
从几何上理解:对一维而言,已知平面上n+1个不同点,要寻找一条n次多项式 曲线通过这些点。插值多项式一般常见的是拉格朗日插值多项式。

代入 中,有
经比较得到
取 为自由参数: 从而得到不同的但都是二阶的R-K方法,对应的有中点法、Heun(亨)法 以及改进的Euler法。
基于相同的过程,通过比较五次Taylor多项式,得到更加复杂的结果,给出了包含 13个未知数的11个方程。得到多组系数,其中常用的是以下四阶R-K法:
改进的Euler法、R-K法以及解析解的比较:
是待定的系数。
Euler法就是
的R-K法。
其系数的确定如下:将 展开成 的幂级数,并与微分方程的精确解
在点 的Taylor展开式相比较,使两者的前
项相同,这样确定的R-K法,
其局部截断误差为
,根据所得关于待定系数的方程组,求出它们的值后
代入公式,就成为一个 阶R-K方法。
例题 以二阶R-K法为例说明上述过程
2. Curtis F.Gerald and Patrick O., Applied Numerical Analysis, Person Education, Inc., 2004.

计算方法5_偏微分方程数值解法

计算方法5_偏微分方程数值解法

菱形格式
uk , j +1 = uk , j −1 + 2 bs( uk+1, j − uk , j +1 − uk , j −1 + uk −1, j ) k = 1,2 , ⋯ , N − 1, j = 0 ,1,2 , ⋯ k = 1,2 , ⋯ , N − 1 uk ,0 = ϕ ( kh) u0 , j = g1 ( jτ ), uN , j = g2 ( jτ ), j = 0 ,1,2 , ⋯
uk , j+1 − uk , j uk+1, j − uk , j +a =0 τ h
(5.2)
加上初始条件, 加上初始条件,构成差分格式
uk , j+1 = uk , j − ar(uk+1, j − uk , j ) uk ,0 = ϕk
差分格式的收敛性和稳定性
差分格式的依赖区域 库朗条件: 库朗条件:差分格式收敛的必要条件是差分格式的依 赖区域应包含微分方程的依赖区域 稳定性
(x, y) ∈ Ω (x, y) ∈ Γ
建立差分格式
将xy平面分割成矩形网格 平面分割成矩形网格
x = x k = kh, k = 0,±1,±2, ⋯ y = y j = jτ, j = 0,±1,±2, ⋯
表示网格节点(x 用(k,j)表示网格节点 k,yj),网格节点上的函数 表示网格节点 , 值为u(k,j) 值为
~ u(k , j + 1) − u(k , j − 1) τ2 ∂u = − u′′′ (k , t ) t 2τ 6 ∂t k , j u(k + 1, j) − u(k − 1, j) h2 ∂u ′ x = − u′x′ (~, j) 2h 6 ∂x k , j

偏微分方程数值解挑战偏微分方程的数值解法与稳定性分析

偏微分方程数值解挑战偏微分方程的数值解法与稳定性分析

偏微分方程数值解挑战偏微分方程的数值解法与稳定性分析偏微分方程数值解挑战——偏微分方程的数值解法与稳定性分析偏微分方程(Partial Differential Equations, PDE)是数学中一个重要的研究领域,广泛应用于各个科学领域和工程实践中。

这些方程描述了动态系统中随时间、空间和其他自变量变化的物理规律,例如热传导、扩散、波动等。

然而,由于这些方程往往难以直接求解,研究者们发展了一系列数值方法来近似求解偏微分方程,并对其稳定性进行分析。

一、有限差分法(Finite Difference Method)有限差分法是最常见的数值解法之一,其基本思想是在求解区域上构建一个网格,将连续的偏微分方程离散化为差分方程,通过迭代求解差分方程来逼近真实解。

在空间上,可以采用中心差分、向前差分或向后差分等方法,以近似对应的偏导数;在时间上,通常采用欧拉显式格式或隐式格式来进行时间步进。

有限差分法简单易懂,适用于较为简单的情况,并且具有较好的稳定性。

二、有限元法(Finite Element Method)有限元法是一种更为广泛适用的数值方法,其基本思想是将求解区域分割成多个小单元,通过在这些小单元上构造插值函数,将偏微分方程转化为代数方程组。

有限元法可以灵活地处理各种几何形状和边界条件,并且对于复杂问题具有较高的适用性。

通常,有限元法需要进行单元划分、构造刚度矩阵和质量矩阵,并通过求解线性或非线性代数方程组来得到数值解。

有限元法在实际工程问题中发挥着重要作用。

三、稳定性分析除了选择合适的数值方法,稳定性分析也是解偏微分方程数值解过程中必不可少的一步。

稳定性分析用于评估数值解法的解是否趋近于真实解,并且在数值计算过程中不会发散或发生不稳定的情况。

一种常用的稳定性条件是Courant-Friedrichs-Lewy (CFL) 条件,它要求数值方法中时间步长和空间步长之间满足一定关系,以确保数值解的稳定性。

高等数学中的偏微分方程数值解法

高等数学中的偏微分方程数值解法

偏微分方程是数学中的一大重要分支,广泛应用于物理、工程、金融等领域。

其求解方法可以分为解析解法和数值解法。

解析解法要求方程具有可积性,适用于一些简单的方程,但是对于复杂的方程往往无法得到解析解。

而数值解法通过将方程离散化,利用数值计算方法得到数值解,是一种弥补解析解法不足的重要手段。

在高等数学中,偏微分方程数值解法主要包括差分法、有限元法和有限差分法。

其中,差分法是最早应用于求解偏微分方程的数值方法之一。

差分法通过将偏微分方程中的导数用差商的形式来近似表示,将连续的问题转化为离散的问题,再通过计算机程序来进行求解。

差分法的优点是简单易懂、计算速度快,适用于一些较为简单的偏微分方程。

但是差分法的精度受到离散化步长的影响,不适用于一些对精度要求较高的问题。

有限元法是一种更为广泛应用的偏微分方程数值解法。

有限元法通过将求解区域分割成有限多个小区域,用简单形状的基函数来逼近真实解,再通过求解线性方程组得到数值解。

有限元法的优点在于适用于复杂的几何形状、能够处理不规则的边界条件,并且精度较高。

有限元法还具有较好的可扩展性,可以处理大规模的求解问题。

因此,有限元法在工程领域的应用非常广泛。

有限差分法是一种通过计算导数来逼近微分方程的数值解法。

有限差分法基于泰勒展开公式,将微分算子在某点处的展开为有限多个导数的差商的线性组合。

通过将微分算子离散化,可以将偏微分方程转化为代数方程组,再通过求解方程组来得到数值解。

有限差分法的优点在于简单易懂,计算速度较快。

但是由于差商的导数逼近误差,有限差分法的精度受到离散化步长的影响,需要选择合适的步长来保证精度。

总的来说,高等数学中的偏微分方程数值解法是研究偏微分方程数值计算的一大热点和难点。

不同的数值方法适用于不同的问题,需要根据具体情况来选择适合的数值方法。

在求解偏微分方程时,还需要注意数值误差对结果的影响,并通过适当选择离散化步长和网格数量等参数来提高数值解的精度。

随着计算机技术的发展,偏微分方程数值解法将会越来越广泛地应用于实际问题的求解中。

偏微分方程数值解

偏微分方程数值解
, 是给定的常数.
2.1 直接差分法
(1) 取 N+1 个节点将 I =[a, b] 分成 N 个小区间:
a x0 x1 L xi L xN b
I i : xi 1 x xi , i 1, 2, L , N
hi xi xi 1 , h max hi .
i
于是,得到 I 的一个网格剖分.
(2) 对 I = [a, b] 进行对偶剖分 取 xi 1 , xi 的中点
x
1 i 2
1 xi 1 xi , 2
i 1, 2,
,N
称为半整数点,则
a x0 x1 x3
2 2
x
1 N 2
xN b
构成 I 的一个对偶剖分. (3) 将方程 (2.1) 在内点 xi 处离散化.
d2 du hi 1 hi dx 2 ( p dx ) 12 i
d 3u 2 p O ( h ) dx3 i
于是得逼近方程 (2.1)~(2.2) 的差分方程:
ui 1 ui ui ui 1 2 p 1 Lhui pi 1 i h h h h i i 1 i 1 i 2 2 i i 1, 2, ui 1 ui qiui fi , hi hi 1 u0 , uN
1 i 2
) W (x
1 i 2
)
x
i
x
1 2
i
1 2
qudx
x
f dx
i
1 2
du W ( x) , dx p ( x)
沿 [ xi 1 , xi ] 积分,得

第十四章SECTION4偏微分方程的数值解法

第十四章SECTION4偏微分方程的数值解法

§4 偏微分方程的数值解法一、 差分法差分法是常用的一种数值解法.它是在微分方程中用差商代替偏导数,得到相应的差分方程,通过解差分方程得到微分方程解的近似值. 1. 网格与差商在平面 (x ,y )上的一以S 为边界的有界区域D 上考虑定解问题.为了用差分法求解,分别作平行于x 轴和y 轴的直线族.⎩⎨⎧====jhy y ihx x i i (i ,j =0,±1,±2,…,±n ) 作成一个正方形网格,这里h 为事先指定的正数,称为步长;网格的交点称为节点,简记为(i ,j ).取一些与边界S 接近的网格节点,用它们连成折线S h ,S h 所围成的区域记作D h .称D h 内的节点为内节点,位于S h 上的节点称为边界节点(图14.7).下面都在网格D h + S h 上考虑问题:寻求各个节点上解的近似值.在边界节点上取与它最接近的边界点上的边值作为解的近似值,而在内节点上,用以下的差商代替偏导数:()()[]()()[]()()()[]()()()[]()()()[]y x u h y x u y h x u h y x u hy x u h y x u y x u h y x u hy u y h x u y x u y h x u h x u y x u h y x u hyu y x u y h x u h x u ,),(,,1,,2,1,,2,1,,1,,122222222++-+-+≈∂∂∂-+-+≈∂∂-+-+≈∂∂-+≈∂∂-+≈∂∂注意, 1︒ 式中的差商()()[]y x u y h x u h ,,1-+称为向后差商,而()()[]y h x u y x u h,,1--称为向前差商,()()[]y h x u y h x u h,,21--+称为中心差商.也可用向前差商或中心差商代替一阶偏导数.2︒ x 轴与y 轴也可分别采用不同的步长h ,l ,即用直线族⎩⎨⎧====jhy y ihx x j i (i,j =0, ±1, ±2 , ) 作一个矩形网格.图14.72. 椭圆型方程的差分方法[五点格式] 考虑拉普拉斯方程的第一边值问题()()⎪⎪⎩⎪⎪⎨⎧=∈=∂∂+∂∂y x u D y x y ux u S ,,02222μ式中μ(x ,y )为定义在D 的边界S 上的已知函数.采用正方形网格,记u (x i ,y j )=u ij ,在节点(i ,j )上分别用差商 u u u h u u u h i j ij i j i j ij i j -+-+-+-+11211222,,,,,代替2222,yux u ∂∂∂∂,对应的差分方程为u u u h u u u hi j ij i j i j ij i j -+-+-++-+=112112220,,,, (1) 或u u u u u ij i j i j i j i j =+++-+-+141111,,,,即任一节点(i ,j )上u ij 的值等于周围相邻节点上解的值的算术平均,这种形式的差分方程称为五点格式,在边界节点上取()()()h j i ij S j i y x u ∈=,,**μ(2) 式中(x i *,y j *)是与节点(i ,j )最接近的S 上的点.于是得到了以所有内节点上的u ij 值为未知量的若干个线性代数方程,由于每一个节点都可列出一个方程,所以未知量的个数与方程的个数都等于节点的总数,于是,可用通常的方法(如高斯消去法)解此线性代数方程组,但当步长不很大时,用高斯消去法将会遇到很大困难,可用下面介绍的其他方法求解. 若h →0时,差分方程的解收敛于微分方程的解,则称差分方程为收敛的.在计算过程中,由于进行四则运算引起舍入误差,每一步计算的舍入误差都会影响以后的计算结果,如果这种影响所产生的计算偏差可以控制,而不至于随着计算次数的增加而无限增大,则称差分方程是稳定的.[迭代法解差分方程] 在五点格式的差分方程中,任意取一组初值{u ij },只要求它们在边界节点(i ,j )上取以已知值μ(x i *,y j *),然后用逐次逼近法(也称迭代法)解五点格式:()()()()()[]() ,2,1,0411,1,,1,11=+++=+-+-+n u u u u u n j i n j i n j i n j i n ij 逐次求出{u ij (n )}.当(i+1,j ),(i -1,j ),(i ,j -1),(i ,j+1)中有一点是边界节点时,每次迭代时,都要在这一点上取最接近的边界点的值.当n →∞时,u ij (n )收敛于差分方程的解,因此n 充分大时,{u ij (n )}可作差分方程的近似解,迭代次数越多,近似解越接近差分方程的解.[用调节余数法求节点上解的近似值] 以差商代替Δu 时,用节点(i+1,j ),(i -1,j ),(i ,j+1),(i ,j -1)上u 的近似值来表示u 在节点(i ,j )的值将产生的误差,称此误差为余数R ij ,即()()()()()ij j i j i j i j i j i R y x u h y x u h y x u y h x u y h x u =--+++-++,4,,,,设在(i ,j )上给u ij 以改变量δu ij ,从上式可见R ij 将减少4δu ij ,而其余含有u (x i ,y j )的差分方程中的余数将增加δu ij ,多次调整δu ij 的值就可将余数调整到许可的有效数字的范围内,这样可获得各节点上u (x ,y )的近似值.这种方法比较简单,特别在对称区域中计算更简捷.例 求Δu =0在内节点A ,B ,C ,D 上解的近似值.设在边界节点1,2,3,4上分别取值为1,2,3,4(图14.8) 解 记u (A )=u A ,点A ,B ,C ,D 的余数分别为-4u A + u B + u c +5=R A u A -4 u B + u D +7=R Bu A-4 u c + u D +3=R Cu B + u c -4u D +5=R D以边界节点的边值的算术平均值作为初次近似值,即u A (0)=u B (0)=u C (0)=u D (0)=2.5则相应的余数为:R A =0, R B =2, R C = -2, R D =0最大余数为±2.先用δu C =-0.5把R C 缩减为零,u C 相应地变为2,这时R A , R D 也同时缩减(-0.5),新余数是R A =-0.5,R B =2,0=C R , R D =-0.5.类似地再变更δu B =0.5,从而 u B 变为3,则得新余数为0====D C B A R R R R .这样便可消去各节点的余数,于是u 在各节点的近似值为:u A =2.5, u B =3, u C =2, u D =2.5现将各次近似值及余数列表如下:次数调 整 值第n 次近似值及余数u A R A u B R B u C R C u D R D 0 1 2δu C = -0.5 δu B = 0.5 2.5 2.5 2.5 0 -0.5 0 2.5 2.5 3 2 2 0 2.5 2 2 -2 0 0 2.5 2.5 2.5 0 -0.5 0 结果近似值2.5322.5[解重调和方程的差分方法] 在矩形D (x 0≤x ≤x 0+a ,y 0≤y ≤y 0+a )中考虑重调和方程024*******=∂∂+∂∂∂+∂∂=yuy x u x u u ∆取步长h an=,引直线族图14.8⎩⎨⎧+=+=jh y y ihx x 00 (i , j = 0, 1, 2,, n ) 作成一个正方形网格.用差商代替偏导数()()()()()[]{()()()()[]()()()()[]}h y x u h y x u y h x u y h x u h y h x u h y h x u h y h x u h y h x u h y x u h y x u y h x u y h x u y x u 2,2,,2,2,,,,2,,,,8201,-+++-++---++-+-++++--+++-++=上式表明了以(x ,y )为中心时,u (x ,y )的函数值与周围各点函数值的关系,但对于邻近边界节点的点(x ,y ),如图14.9中的A ,就不能直接使用上式,此时将划分网格的直线族延伸,在延伸线上定出与边界距离为h 的点,称这些点为外邻边界节点,如图14.9以A 为中心时,点E ,C 为边界节点,点J ,K 为E ,C 的外邻边界节点,用下法补充定义外邻边界节点J 处函数的近似值u J ,便可应用上面的公式.1︒ 边界条件为()()()S P P x uP u SS ∈==21,μ∂∂μ 时,定义u J =u A -2μ2(E )h .2︒ 边界条件为()()()S P P xuP u SS ∈=∂∂=2221,μμ时,定义u J =2μ1(E )-u A -h 2μ2(E ). [其他与Δu 有关的网格] 1︒ 三角网格(图14.10(a ))取P 0(x ,y )为中心,它的周围6个邻近节点分别为:()()⎪⎪⎭⎫⎝⎛-+⎪⎪⎭⎫ ⎝⎛---⎪⎪⎭⎫⎝⎛+-⎪⎪⎭⎫⎝⎛+++h y h x P h y h x P y h x P h y h x P h y h x P y h x P 23,2,23,2,,23,223,2,,654321则 R u h u u u h i i +∆+∆=⎪⎭⎫⎝⎛-∑=226102161632式中u i =u (P i ), u 0=u (P 0),R 表示余项. 2︒ 六角网格(图14.10(b ))取P 0(x ,y )为中心,它的三个邻近节点分别为图14.9()⎪⎪⎭⎫ ⎝⎛-+-⎪⎪⎭⎫ ⎝⎛++h y h x P y h x P h y h x P 23,2,,23,2321则 R u u u h i i +∆=⎪⎭⎫⎝⎛-∑=0312334.图14.103︒ 极坐标系中的网格(图14.10(c ))取P 0(r ,θ)为中心,它的四个邻近节点分别为()()()()l r P h r P l r P h r P ++--θθθθ,,,,,,4321而拉普拉斯方程01122222=∂∂+∂∂+∂∂=θ∆u r r u r ru u的相应的差分方程为()()()011221110222134222312=⎪⎭⎫ ⎝⎛+--++++u l r h u u rh u u l r u u h 3. 抛物型方程的差分方法 考虑热传导方程的边值问题()()()()()()⎪⎪⎪⎩⎪⎪⎪⎨⎧≥==<<=><<=∂∂-∂∂0,,,,00,0,0,0,021222t t t b u t t u bx x x u t b x x u a t u μμϕ 将[0,b ]分为n 等份,每段长为∆x bn=.引两族平行线(图14.11)图14.11x =x i =i ∆x (i =0,1,2,, n )y =y j =j ∆t (j =0,1,2,, ∆t 取值见后)作成一个长方形的网格,记u (x i ,t j )为u ij ,节点(x i ,t j )为(i ,j ),在节点(i ,j )上分别用(),2,1,1,,2,1Δ2,Δ2,1,11,=-=+---++j n i x u u u t u u ji ij j i ij j i 代替22,xut u ∂∂∂∂,于是边值问题化为差分方程()()()()⎪⎪⎪⎩⎪⎪⎪⎨⎧===-===-==+----++ ,2,1,0,Δ,Δ1,,2,1,Δ,2,1,0,1,,2,10Δ2Δ21002,1,121,j t j u t j u n i x i u j n i x u u u a tu u nj j i j i ij j i ijj i μμϕ 记()22x ta ∆∆=λ,差分方程可写成 () ,2,1,1,,2,121,1,11,=-=+-+=-++j n i u u u u ji ij j i j i λλλ (1)由此可按t 增加的方向逐排求解.在第0排上u i 0的值由初值ϕ(i ∆x )确定,j +1排u i ,j +1的值可由第j 排的三点(i +1,j ),(i ,j ),(i -1,j )上的值u i +1,j , u ij ,u i -1,j 确定,而u 0,j +1,u n ,j +1已由边界条件μ1((j +1)∆t )及μ2((j +1)∆t )给定,于是可逐排计算一切节点上的u ij 值.当ϕ(x ), μ1(x )和μ2(x )充分光滑,且λ≤12时,差分方程收敛而且稳定.所以利用差分方程(1)计算时,必须使λ≤12,即()22Δ21Δx at ≤.热传导方程还可用差分方程()0Δ2Δ21,11,1,121,=+---+-++++x u u u a t u u j i j i j i ij j i 代替,此时如已知前j 排u ij 的值,为求第j +1排的u i ,j +1 必须解包含n -1个未知量u u j n j 1111,,,,+-+ 的线性代数方程组,这种差分方程称为隐式格式的差分方程,前面所提的差分方程称为显式格式差分方程.隐式格式差分方程对任意的λ都是稳定的.4. 双曲型方程的差分方法 考虑弦振动方程的第一边值问题()()()()()()⎪⎪⎪⎩⎪⎪⎪⎨⎧≥==<<=∂∂=><<=∂∂-∂∂0,,,,00),()0,(,0,0,0,02122222t t t b u t t u b x x t x u x x u t b x x u a tu μμψϕ 用矩形网格,列出对应的差分方程:()()()()⎪⎪⎪⎩⎪⎪⎪⎨⎧===-=∆=∆-==-==+--+--+-+ ,2,1,0,Δ,Δ1,,2,1),(,Δ,2,1,1,,2,1,0Δ2)(Δ22100102,1,1221,1,j t j u t j u n i x i t u u x i u j n i x u u u a t u u u nj j i i i j i ij j i j i ij j i μμψϕ 记ω=a tx∆∆与上段一样,利用u u n 022,和在第0排及第1排的已知数值(初始条件)u i 0 , u i 1可计算u i 2,然后用已知的u i 1 , u i 2及u u n 033,可计算u i 3,类似地可确定一切节点上的u ij 值.当ϕ(x ),ψ(x ),μ1(x )和μ2(x )充分光滑,且ω≤1时,差分方程收敛且稳定,所以要取∆∆t ax ≤1.二、 变分方法1. 自共轭边值问题将§3定义的共轭微分算子的概念推广到一般方程.设D 是n E 中的有界区域,S 为其边界,在D 上考虑2k 阶线性微分方程()x f x x uaLu km mi i i ni m m i i n n n=∂∂≡∑∑==++201111 ∂ 的齐次边值问题()r j u l Sj ,,2,10==式中f (x )是D 内的已知函数,l j u 是线性微分算子. 将 ⎰DvLud Ω分部积分k 次得()⎰∑⎰⎪⎪⎭⎫ ⎝⎛+=Ω=S j j j D S v R u R v u vLu d ~,Λd k 1 式中Λ(u ,v )是一个D 上的积分,其被积函数包含u ,v 的k 阶导数;R j 和 R j 是定义在边界S 上的两个线性微分算子.再将Λ(u ,v )分部积分k 次得()()⎰∑⎰⎪⎪⎭⎫⎝⎛-Ω=Λ=S k j j j D S u R v R v uL v u d ~d ,1***式中L*是一个2k 阶的微分算子,称为L 的共轭微分算子.若L=L*,则称L 为自共轭微分算子.从上面可推出格林公式()()⎰∑⎰=-=Ω-Skj jjjjDS u R v R v R u R v uL vLu 1***d ~~d 如从l j u |S =l j v |S =0可推出在边界S 上()∑==-kj jjjju R v R v R u R 1**0~~ 则称l j u |S =0为自共轭边界条件.如果微分算子及边界条件都是自共轭的,则称相应的边值问题为自共轭边值问题,此时有()0d ][=Ω-⎰DuLv vLu每个边值问题对应于某希尔伯特空间H (例如L 2(D ),见第九章§7)中的一个算子A ,其定义域M A 是H 中一线性稠密集合,它由足够次连续可微且满足边界条件的函数组成,在M A 上,Au 的数值与Lu 的数值相同,从而求解边值问题化为解算子方程Au f = 的问题.设A 为定义在实的希尔伯特空间H 中的某线性稠密集合M A 上的线性算子.若对于M A 的任意非零元素,,v u 成立(Au ,v )=(u ,Av )则称A 为对称算子.若对任意非零元素u 成立()0,>u Au 则称A 为正算子.如成立更强的不等式(Au ,u )≥r ||u ||2 (r>0)则称A 为正定算子.此处(u ,v )表示希尔伯特空间的内积,||u ||2=(u ,u ). 2. 变分原理与广义解定理 设A 是正定算子,u 是方程Au =f 在M A 上的解的充分必要条件是: u 使泛函F (u )=(Au ,u )-2(f ,u )取极小值.上述将边值问题化为等价的求泛函极值问题的方法称为能量法.在算子的定义域不够大时,泛函F (u )的极值问题可能无解.不过对于正定算子,可以开拓集合M A ,使在开拓了的集合上,泛函的极值问题有解.为开拓M A ,在M A 上引进新的内积[u ,v ]=(Au ,v ),定义模||u ||2=[u ,u ]=(Au ,u ),在模||u ||的意义下,补充极限元素,得到一个新的完备希尔伯特空间H 0,在H 0上,泛函F (u )仍然有意义,而泛函的极值问题有解.但必须注意,此时使泛函F (u )取极小的元素u 0不一定属于M A ,因此它不一定在原来的意义下满足方程Au=f 及边界条件.称u 0为广义解. 3. 极小化序列与里兹方法在处理变分问题中,极小化序列起着重要的作用.考虑泛函F (u )=(Au ,u )-2(f ,u )以d 表示泛函的极小值.设在希尔伯特空间中存在一列元素{u n } (n =1,2 ,),使()d u F n n =∞→lim则称{u n }为极小化序列.定理 若算子A 是正定的,则F (u )的每一个极小化序列既按H 空间的模也按H 0的模收敛于使泛函F (u )取极小的元素.这个定理不但指出利用极小化序列可求问题的解,而且提供一种近似解的求法,即把极小化序列中的每一个元素当作问题的近似解.设算子A 是正定的,构造极小化序列的里兹方法的主要步骤是:(1) 在线性集合M A 中选取H 0中完备的元素序列{ϕi } , (i =1,2 ,) 并要求对任意的n ,ϕ1,ϕ2,…,ϕn 线性无关.称这样的元素为坐标元素.(2) 令u a n k k k n==∑ϕ1 ,其中a k 为待定系数.代入泛函F (u ),得自变量a 1,a 2,…,a n 的函数()()()∑∑==-=nj jjn k j kjkj n f a A a a u F 11,,2,ϕϕϕ(3) 为使函数F (u n )取极小,必须()()n j a u F jn ,,2,10 ==∂∂,从而求出a k (k =1,2,…,n ).序列{u n }即为极小化序列,u n 可作为问题的近似解. 4. 里兹方法在特征值问题上的应用 算子方程Au -λu =0的非零解λ称为算子A 的特征值,对应的非零解u 称为λ所对应的特征函数. 对线性算子A ,若存在常数K ,使对任何M A 的元素ϕ成立(A ϕ,ϕ)≥K ||ϕ||2则称A 为下有界算子,正定算子是下有界的(此时K =0).记(A ϕ,ϕ)/||ϕ||2的下确界为d . 定理1 设A 为下有界对称算子,若存在不为零的元素ϕ0∈M A ,使()d A =200,ϕϕϕ则d 就是A 的最小特征值,ϕ0为对应的特征函数.于是求下有界对称算子的最小特征值问题化为变分问题,即在希尔伯特空间中求使泛函(A ϕ,ϕ)/||ϕ||2取极小的元素,或在||ϕ||=1的条件下求使泛函(A ϕ,ϕ)取极小的元素.定理2 设A 是下有界对称算子,λ1≤λ2≤…≤λn 是它的前n 个特征值,ϕ1,ϕ2,…,ϕn 是对应的标准正交特征函数,如果存在不为零的元素1+n ϕ,在附加条件(ϕ,ϕ)=1, (ϕ,ϕ1)=0, (ϕ,ϕ2)=0, …, (ϕ,ϕn )=0下使泛函(A ϕ,ϕ)取极小,则ϕn +1是算子A 的特征函数,对应的特征值()11,++=n n A ϕϕλ就是除λ1 ,,λn 外的最小的一个特征值.于是求第n +1个特征值就化为变分问题,即在附加条件(ϕ,ϕ)=1, (ϕ,ϕ1)=0, (ϕ,ϕ2)=0 ,, (ϕ,ϕn )=0 下求使泛函(A ϕ,ϕ)取极小的元素.为了利用里兹方法求特征值,在M A 中选取一列在H 0中完备的坐标元素序列{ϕi },(i =1,2 ,), 令u a n k k k n==∑ϕ1,确定a k ,使在条件 (u n ,u n )=1下,(Au n ,u n )取极小,这个问题化为求n个变元a 1,a 2,…,a n 的函数()()∑==nm k m k k m n n a a A u Au 1,,,ϕϕ在条件()()∑===nm k m k m k n n a a u u 1,1,,ϕϕ下的极值问题,一般可用拉格朗日乘数法解(见第九章§3,t ),此时()()()()()()()()()()()()0,,,,,,,,,,,,11222121111111=------n n n n n n n n n n A A A A A A ϕϕλϕϕϕϕλϕϕϕϕλϕϕϕϕλϕϕϕϕλϕϕϕϕλϕϕ的最小的根即为特征值的近似值,如果将上式的根按大小排列,就依次得后面的特征值的近似值,但精确度较差. 对一般算子方程Au -λBu=0如果A 为下有界对称算子,B 为正定算子,则()()()()()()()()()()()()0,,,,,,,,,,,,11222121111111=------n n n n n n n n n n B A B A B A B A B A B A ϕϕλϕϕϕϕλϕϕϕϕλϕϕϕϕλϕϕϕϕλϕϕϕϕλϕϕ的根就是特征值的近似值. 5. 迦辽金方法用里兹方法解数学物理问题有很多限制,最主要的限制是要求算子正定,但很多问题不一定满足这个条件,迦辽金方法弥补了这个缺陷. 迦辽金方法的主要步骤是:(1) 在M A 中选取在空间H 中完备的元素序列{ϕi } (i =1,2 ,),其中任意n 个元素线性无关,称{ϕi } (i =1,2,…)为坐标元素序列. (2) 把方程的近似解表示为u a n k k k n==∑ϕ1式中a k 是待定常数,把u n 代入方程Au=f 中的u ,两端与ϕj (j =1,2,…,n )求内积,得 a k 的n 个代数方程()()()n j f A a j n k j k k,,2,1,,1 ==∑=ϕϕϕ(3) 求出a k ,代回u n 的表达式,便得方程的近似解u n .在自共轭边值问题中,当算子是正定时,由迦辽金方法和里兹方法得到的关于a k 的代数方程组是相同的.。

数值计算中的偏微分方程解法

数值计算中的偏微分方程解法

数值计算中的偏微分方程解法偏微分方程在科学、工程和金融等领域都有广泛的应用。

在现实生活中,许多问题都涉及到偏微分方程的解法,比如天气预报、机器学习和金融衍生品定价等。

然而,解析解并不总是可行的,因此需要数值计算方法来解决这些问题。

在本文中,我们将探讨数值计算中的偏微分方程解法。

一、有限差分法有限差分法是偏微分方程数值解法中最基本的方法之一。

该方法通过将偏微分方程中的导数用差分近似公式表示出来,然后建立一个离散的空间和时间网格。

在网格上求解方程,得到数值解。

例如,考虑一个二维热传导方程:$$ \frac{\partial u}{\partial t}= \alpha \left( \frac{\partial ^2u}{\partial x^2} +\frac{\partial ^2 u}{\partial y^2} \right) $$其中,$u(x,y,t)$是温度分布,$\alpha$是热传导系数。

我们可以将该方程在空间上进行离散化,用差分近似公式表示出导数。

以二阶中心差分为例,有:$$ \frac{\partial ^2 u}{\partial x^2} \approx \frac{u_{i+1,j}-2u_{i,j}+u_{i-1,j}}{\Delta x^2} $$$$ \frac{\partial ^2 u}{\partial y^2} \approx \frac{u_{i,j+1}-2u_{i,j}+u_{i,j-1}}{\Delta y^2} $$其中,$u_{i,j}$表示网格点$(i,j)$处的温度。

同样地,时间上也进行离散化,用前向差分公式表示导数,即:$$ \frac{\partial u}{\partial t} \approx \frac{u_{i,j}^{n+1}-u_{i,j}^n}{\Delta t} $$将上述离散化的结果代入方程中,可以得到:$$ \frac{u_{i,j}^{n+1}-u_{i,j}^n}{\Delta t}= \alpha\left( \frac{u_{i+1,j}^n-2u_{i,j}^n+u_{i-1,j}^n}{\Delta x^2}+\frac{u_{i,j+1}^n-2u_{i,j}^n+u_{i,j-1}^n}{\Delta y^2} \right) $$整理得到:$$ u_{i,j}^{n+1}= u_{i,j}^n+ \frac{\alpha \Delta t}{\Delta x^2} (u_{i+1,j}^n-2u_{i,j}^n+u_{i-1,j}^n)+ \frac{\alpha \Delta t}{\Delta y^2} (u_{i,j+1}^n-2u_{i,j}^n+u_{i,j-1}^n) $$这样,我们就可以用迭代法求解上述方程,得到网格上的温度分布。

偏微分方程数值解

偏微分方程数值解

02
常用的数值解法包括有限差分法、有限元法、 谱方法等。
03
数值解法的精度和稳定性是衡量其好坏的重要 指标。
非线性偏微分方程的有限差分法
有限差分法是一种将偏微分方程转化为差分方程的方法,通过在离散点上逼近偏导数,得到离散化的 数值解。
有限差分法的优点是简单直观,易于实现,适用于规则区域。
有限差分法的缺点是对不规则区域适应性较差,且精度较低。
波动问题
谱方法在求解波动问题中也有广泛应用,如 Helmholtz方程、Wave equation等。
固体力学问题
谱方法在求解固体力学问题中也有应用,如 Elasticity equations等。
05
非线性偏微分方程的数值解 法
非线性偏微分方程的解析解法难度
01
非线性偏微分方程的解析解法通常非常复杂,需要深
02
有限差分法的基本思想是将连 续的偏微分方程转化为离散的 差分方程,通过求解差分方程 得到偏微分方程的近似解。
03
有限差分法的精度取决于离散 点之间的间距,间距越小,精 度越高。
一阶偏微分方程的有限差分法
一阶偏微分方程的有限差分法有 多种形式,如向前差分法、向后 差分法和中心差分法等。
中心差分法是向前差分法和向后 差分法的平均值,具有二阶精度 。
通过将微分转化为差分,将原方程转化为离散的差分方程,然后求解差分方程得到近似解。
有限元法
将连续问题离散化,将微分方程转化为线性方程组,通过求解线性方程组得到近似解。
谱方法
利用函数的谱展开来求解偏微分方程,具有高精度和低数值弥散性的优点。
02
有限差分法
有限差分法的原理
01
有限差分法是一种将偏微分方 程转化为差分方程的方法,通 过在离散点上逼近偏微分方程 的解,得到数值解。

偏微分方程的数值解法

偏微分方程的数值解法

偏微分方程的数值解法1.peEllip5 用五点差分格式解拉普拉斯方程function u = peEllip5(nx,minx,maxx,ny,miny,maxy) format long;hx = (maxx-minx)/(nx-1);hy = (maxy-miny)/(ny-1);u0 = zeros(nx,ny);for j=1:nyu0(j,1) = EllIni2Uxl(minx,miny+(j-1)*hy);u0(j,nx) = EllIni2Uxr(maxx,miny+(j-1)*hy);endfor j=1:nxu0(1,j) = EllIni2Uyl(minx+(j-1)*hx,miny);u0(ny,j) = EllIni2Uyr(minx+(j-1)*hx,maxy);endA = -4*eye((nx-2)*(ny-2),(nx-2)*(ny-2));b = zeros((nx-2)*(ny-2),1);for i=1:(nx-2)*(ny-2)if mod(i,nx-2) == 1if i==1A(1,2) = 1;A(1,nx-1) = 1;b(1) = - u0(1,2) - u0(2,1);elseif i == (ny-3)*(nx-2)+1A(i,i+1) = 1;A(i,i-nx+2) = 1;b(i) = - u0(ny-1,1) - u0(ny,2);elseA(i,i+1) = 1;A(i,i-nx+2) = 1;A(i,i+nx-2) = 1;b(i) = - u0(floor(i/(nx-2))+2,1);endendelseif mod(i,nx-2) == 0if i == nx-2A(i,i-1) = 1;A(i,i+nx-2) = 1;b(i) = - u0(1,nx-1) - u0(2,nx);elseif i == (ny-2)*(nx-2)A(i,i-1) = 1;A(i,i-nx+2) = 1;b(i) = - u0(ny-1,nx) - u0(ny,nx-1);elseA(i,i-1) = 1;A(i,i-nx+2) = 1;A(i,i+nx-2) = 1;b(i) = - u0(floor(i/(nx-2))+1,nx);endendelseif i>1 && i< nx-2A(i,i-1) = 1;A(i,i+nx-2) = 1;A(i,i+1) = 1;b(i) = - u0(1,i+1);elseif i > (ny-3)*(nx-2) && i < (ny-2)*(nx-2)A(i,i-1) = 1;A(i,i-nx+2) = 1;A(i,i+1) = 1;b(i) = - u0(ny,mod(i,(nx-2))+1);elseA(i,i-1) = 1;A(i,i+1) = 1;A(i,i+nx-2) = 1;A(i,i-nx+2) = 1;endendendendendul = A\b;for i=1:(ny-2)for j=1:(nx-2)u(i,j) = ul((i-1)*(nx-2)+j);endendformat short;2.peEllip5m 用工字型差分格式解拉普拉斯方程function u = peEllip5m(nx,minx,maxx,ny,miny,maxy) format long;hx = (maxx-minx)/(nx-1);hy = (maxy-miny)/(ny-1);u0 = zeros(nx,ny);for j=1:nyu0(j,1) = EllIni2Uxl(minx,miny+(j-1)*hy);u0(j,nx) = EllIni2Uxr(maxx,miny+(j-1)*hy);endfor j=1:nxu0(1,j) = EllIni2Uyl(minx+(j-1)*hx,miny);u0(ny,j) = EllIni2Uyr(minx+(j-1)*hx,maxy);endA = -4*eye((nx-2)*(ny-2),(nx-2)*(ny-2));b = zeros((nx-2)*(ny-2),1);for i=1:(nx-2)*(ny-2)if mod(i,nx-2) == 1if i==1A(1,nx) = 1;b(1) = - u0(1,1) - u0(3,1) - u0(1,3);elseif i == (ny-3)*(nx-2)+1A(i,i-nx+1) = 1;b(i) = - u0(ny,1) - u0(ny,3) - u0(ny-2,1);elseA(i,i-nx+3) = 1;A(i,i+nx-1) = 1;b(i) = - u0(floor(i/(nx-2))+1,1) - u0(floor(i/(nx-2))+3,1);endendelseif mod(i,nx-2) == 0if i == nx-2A(i,i+nx-1) = 1;b(i) = - u0(1,nx-2) - u0(1,nx) - u0(3,nx);elseif i == (ny-2)*(nx-2)A(i,i-nx+1) = 1;b(i) = - u0(ny,nx) - u0(ny,nx-2) - u0(ny-2,nx);elseA(i,i-nx+1) = 1;A(i,i+nx-3) = 1;b(i) = - u0(floor(i/(nx-2)),nx) - u0(floor(i/(nx-2))+2,nx);endendelseif i>1 && i< nx-2A(i,i+nx-1) = 1;A(i,i+nx-3) = 1;b(i) = - u0(1,i) - u0(1,i+2);elseif i > (ny-3)*(nx-2) && i < (ny-2)*(nx-2)A(i,i-nx+3) = 1;A(i,i-nx+1) = 1;b(i) = - u0(ny,mod(i,(nx-2))) -u0(ny,mod(i,(nx-2))+2);elseA(i,i-nx+3) = 1;A(i,i+nx-1) = 1;A(i,i+nx-3) = 1;A(i,i-nx+1) = 1;endendendendendul = A\b;for i=1:(ny-2)for j=1:(nx-2)u(i,j) = ul((i-1)*(nx-2)+j);endendformat short;3.peHypbYF 用迎风格式解对流方程function u = peYF(a,dt,n,minx,maxx,M)format long;h = (maxx-minx)/(n-1);if a>0for j=1:(n+M)u0(j) = IniU(minx+(j-M-1)*h);endelsefor j=1:(n+M)u0(j) = IniU(minx+(j-1)*h);endendu1 = u0;for k=1:Mif a>0for i=(k+1):n+Mu1(i) = -dt*a*(u0(i)-u0(i-1))/h+u0(i);endelsefor i=1:n+M-ku1(i) = -dt*a*(u0(i+1)-u0(i))/h+u0(i);endendu0 = u1;endif a>0u = u1((M+1):M+n);elseu = u1(1:n);endformat long;4.peHypbLax 用拉克斯-弗里德里希斯格式解对流方程function u = peHypbLax(a,dt,n,minx,maxx,M)format long;h = (maxx-minx)/(n-1);for j=1:(n+2*M)u0(j) = IniU(minx+(j-M-1)*h);endu1 = u0;for k=1:Mfor i=k+1:n+2*M-ku1(i) = -dt*a*(u0(i+1)-u0(i-1))/h/2+(u0(i+1)+u0(i-1))/2;endu0 = u1;endu = u1((M+1):(M+n));format short;4.peHypbLaxW 用拉克斯-温德洛夫格式解对流方程function u = peLaxW(a,dt,n,minx,maxx,M)format long;h = (maxx-minx)/(n-1);for j=1:(n+2*M)u0(j) = IniU(minx+(j-M-1)*h);endu1 = u0;for k=1:Mfor i=k+1:n+2*M-ku1(i) = dt*dt*a*a*(u0(i+1)-2*u0(i)+u0(i-1))/2/h/h - ...dt*a*(u0(i+1)-u0(i-1))/h/2+u0(i);endu0 = u1;endu = u1((M+1):(M+n));format short;6.peHypbBW 用比姆-沃明格式解对流方程function u = peBW(a,dt,n,minx,maxx,M)format long;h = (maxx-minx)/(n-1);for j=1:(n+2*M)u0(j) = IniU(minx+(j-2*M-1)*h);endu1 = u0;for k=1:Mfor i=2*k+1:n+2*Mu1(i) = u0(i)-dt*a*(u0(i)-u0(i-1))/h-a*dt*(1-a*dt/h)* ...(u0(i)-2*u0(i-1)+u0(i-2))/2/h;endu0 = u1;endu = u1((2*M+1):(2*M+n));format short;7.peHypbRich 用Richtmyer多步格式解对流方程function u = peRich(a,dt,n,minx,maxx,M)format long;h = (maxx-minx)/(n-1);for j=1:(n+4*M)u0(j) = IniU(minx+(j-2*M-1)*h);endfor k=1:Mfor i=2*k+1:n+4*M-2*ktmpU1 = -dt*a*(u0(i+2)-u0(i))/h/4+(u0(i+2)+u0(i))/2;tmpU2 = -dt*a*(u0(i)-u0(i-2))/h/4+(u0(i)+u0(i-2))/2;u1(i) = -dt*a*(tmpU1-tmpU2)/h/2+u0(i);endu0 = u1;endu = u1((2*M+1):(2*M+n));format short;8.peHypbMLW 用拉克斯-温德洛夫多步格式解对流方程function u = peMLW(a,dt,n,minx,maxx,M)format long;h = (maxx-minx)/(n-1);for j=1:(n+2*M)u0(j) = IniU(minx+(j-M-1)*h);endu1 = u0;for k=1:Mfor i=k+1:n+2*M-ktmpU1 = -dt*a*(u0(i+1)-u0(i))/h/2+(u0(i+1)+u0(i))/2;tmpU2 = -dt*a*(u0(i)-u0(i-1))/h/2+(u0(i)+u0(i-1))/2;u1(i) = -dt*a*(tmpU1-tmpU2)/h+u0(i);endu0 = u1;endu = u1((M+1):(M+n));format short;9.peHypbMC 用MacCormack多步格式解对流方程function u = peMC(a,dt,n,minx,maxx,M)format long;h = (maxx-minx)/(n-1);for j=1:(n+2*M)u0(j) = IniU(minx+(j-M-1)*h);endfor k=1:Mfor i=k+1:n+2*M-ktmpU1 = -dt*a*(u0(i+1)-u0(i))/h+u0(i);tmpU2 = -dt*a*(u0(i)-u0(i-1))/h+u0(i-1);u1(i) = -dt*a*(tmpU1-tmpU2)/h/2+(u0(i)+tmpU1)/2;endu0 = u1;endu = u1((M+1):(M+n));format short;10.peHypb2LF 用拉克斯-弗里德里希斯格式解二维对流方程的初值问题function u = pe2LF(a,b,dt,nx,minx,maxx,ny,miny,maxy,M)%啦-佛format long;hx = (maxx-minx)/(nx-1);hy = (maxy-miny)/(ny-1);for i=1:nx+2*Mfor j=1:(ny+2*M)u0(i,j) = Ini2U(minx+(i-M-1)*hx,miny+(j-M-1)*hy);endendu1 = u0;for k=1:Mfor i=k+1:nx+2*M-kfor j=k+1:ny+2*M-ku1(i,j) = (u0(i+1,j)+u0(i-1,j)+u0(i,j+1)+u0(i,j-1))/4 ...-a*dt*(u0(i+1,j)-u0(i-1,j))/2/hx ...-b*dt*(u0(i,j+1)-u0(i,j-1))/2/hy;endendu0 = u1;endu = u1((M+1):(M+nx),(M+1):(M+ny));format short;11.peHypb2FL 用拉克斯-弗里德里希斯格式解二维对流方程的初值问题function u = pe2FL(a,b,dt,nx,minx,maxx,ny,miny,maxy,M)format long;hx = (maxx-minx)/(nx-1);hy = (maxy-miny)/(ny-1);for i=1:nx+4*Mfor j=1:(ny+4*M)u0(i,j) = Ini2U(minx+(i-2*M-1)*hx,miny+(j-2*M-1)*hy);endendu1 = u0;for k=1:Mfor i=2*k+1:nx+4*M-2*kfor j=2*k-1:ny+4*M-2*k+2tmpU(i,j) = u0(i,j) - a*dt*(u0(i+1,j)-u0(i-1,j))/2/hx + ...(a*dt/hx)^2*(u0(i+1,j)-2*u0(i,j)+u0(i-1,j))/2;endendfor i=2*k+1:nx+4*M-2*kfor j=2*k+1:nx+4*M-2*ku1(i,j) = tmpU(i,j) - b*dt*(tmpU(i,j+1)-tmpU(i,j-1))/2/hy + ...(b*dt/hy)^2*(tmpU(i,j+1)-2*tmpU(i,j)+tmpU(i,j-1))/2;endendu0 = u1;endu = u1((2*M+1):(2*M+nx),(2*M+1):(2*M+ny));format short;12.peParabExp 用显式格式解扩散方程的初值问题function u = peParabExp(c,dt,n,minx,maxx,M)format long;h = (maxx-minx)/(n-1);for j=1:(n+2*M)u0(j) = PrIniU(minx+(j-M-1)*h);endu1 = u0;for k=1:Mfor i=k+1:n+2*M-ku1(i) = dt*c*(u0(i+1)-2*u0(i)+u0(i-1))/h/h+u0(i);endendu = u1((M+1):(M+n));format short;13.peParabTD 用跳点格式解扩散方程的初值问题function u = peParabTD(c,dt,n,minx,maxx,M)%跳点format long;h = (maxx-minx)/(n-1);for j=1:(n+2*M)u0(j) = PrIniU(minx+(j-M-1)*h);endu1 = u0;for k=1:Mfor i=k+1:n+2*M-kif mod(n+i,2) == 0u1(i) = u0(i) + c*dt*(u0(i+1) - 2*u0(i) + u0(i-1))/h/h;if i > 2u1(i-1) =(u0(i-1) + c*dt*(u1(i) + u1(i-2))/h/h)/(1 + 2*c*dt/h/h);endendendu0 = u1;endu = u1((M+1):(M+n));format short;14.peParabImp 用隐式格式解扩散方程的初边值问题function u = peParabImp(c,dt,n,minx,maxx,lbu,rbu,M)format long;h = (maxx-minx)/(n-1);u0(1) = lbu;u0(n) = rbu;for j=2:n-1u0(j) = PrIniU(minx+(j-1)*h);endu1 = u0;for k=1:MA = zeros(n-2,n-2);cb = - transpose(u0(2:(n-1)));cb(1) = cb(1) - dt*c*lbu/h/h;cb(n-2) = cb(n-2) - dt*c*rbu/h/h;A(1,1) = -2*dt*c/h/h -1;A(1,2) = dt*c/h/h ;for i=2:n-3A(i,i-1) = dt*c/h/h ;A(i,i) = - 2*dt*c/h/h -1 ;A(i,i+1) = dt*c/h/h ;endA(n-2,n-2) = -2*dt*c/h/h -1;A(n-2,n-3) = dt*c/h/h;u1(2:(n-1)) = A\cb;u0 = u1;endu = u1;format short;15.peParabKN 用克拉克-尼科尔森格式解扩散方程的初边值问题function u = peParabKN(c,dt,n,minx,maxx,lbu,rbu,M)format long;h = (maxx-minx)/(n-1);u0(1) = lbu;u0(n) = rbu;for j=2:n-1u0(j) = PrIniU(minx+(j-1)*h);endu1 = u0;for k=1:MA = zeros(n-2,n-2);cb = zeros(n-2,1);cb(1) = -u0(2) -(u0(3)-2*u0(2)+u0(1))*dt*c*lbu/h/h/2 - dt*c*lbu/h/h/2;cb(n-2) = -u0(n-1) -(u0(n)-2*u0(n-1)+u0(n-2))*dt*c*lbu/h/h/2 - dt*c*rbu/h/h/2;for i=2:n-3cb(i) = -u0(i+1) -(u0(i+2)-2*u0(i+1)+u0(i))*dt*c*lbu/h/h/2;endA(1,1) = -dt*c/h/h -1;A(1,2) = dt*c/h/h/2 ;for i=2:n-3A(i,i-1) = dt*c/h/h/2 ;A(i,i) = - dt*c/h/h -1 ;A(i,i+1) = dt*c/h/h/2 ;endA(n-2,n-2) = -dt*c/h/h -1;A(n-2,n-3) = dt*c/h/h/2;u1(2:(n-1)) = A\cb;u0 = u1;endu = u1;format short;16.peParabWegImp 用加权隐式格式解扩散方程的初边值问题function u = peParabWegImp(c,sita,dt,n,minx,maxx,lbu,rbu,M)format long;h = (maxx-minx)/(n-1);u0(1) = lbu;u0(n) = rbu;for j=2:n-1u0(j) = PrIniU(minx+(j-1)*h);endu1 = u0;for k=1:MA = zeros(n-2,n-2);cb = zeros(n-2,1);cb(1) = -u0(2) -(1 - sita)*(u0(3)-2*u0(2)+u0(1))*dt*c*lbu/h/h/2 ...- sita*dt*c*lbu/h/h;cb(n-2) = -u0(n-1) -(1 - sita)*(u0(n)-2*u0(n-1)+u0(n-2))*dt*c*lbu/h/h/2 ...- sita*dt*c*rbu/h/h;for i=2:n-3cb(i) = -u0(i+1) -(1 - sita)*(u0(i+2)-2*u0(i+1)+u0(i))*dt*c*lbu/h/h;endA(1,1) = -2*sita*dt*c/h/h -1;A(1,2) = sita*dt*c/h/h ;for i=2:n-3A(i,i-1) = sita*dt*c/h/h ;A(i,i) = - 2*sita*dt*c/h/h -1 ;A(i,i+1) = sita*dt*c/h/h ;endA(n-2,n-2) = - 2*sita*dt*c/h/h -1;A(n-2,n-3) = sita*dt*c/h/h;u1(2:(n-1)) = A\cb;u0 = u1;endu = u1;format short;17.peDKExp 用指数型格式解对流扩散方程的初值问题function u = peDKExp(a,b,dt,n,minx,maxx,M)format long;h = (maxx-minx)/(n-1);for j=1:(n+2*M)u0(j) = DKIniU(minx+(j-M-1)*h);endu1 = u0;coff = (exp(a*h/2/b)+exp(-a*h/2/b))/(exp(a*h/2/b)-exp(-a*h/2/b));coff = dt*coff*a*h/2;for k=1:Mfor i=k+1:n+2*M-ku1(i) = coff*(u0(i+1)-2*u0(i)+u0(i-1))+a*dt*(u0(i+1)-u0(i-1))/h/2+u0(i);endu0 = u1;endu = u1((M+1):(M+n));format short;18.peDKSam 用萨马尔斯基格式解对流扩散方程的初值问题function u = peDKSam(a,b,dt,n,minx,maxx,M)format long;h = (maxx-minx)/(n-1);for j=1:(n+2*M)u0(j) = DKIniU(minx+(j-M-1)*h);endu1 = u0;coff = dt*b/(1+a*h/b/2);for k=1:Mfor i=k+1:n+2*M-ku1(i) = coff*(u0(i+1)-2*u0(i)+u0(i-1))+a*dt*(u0(i)-u0(i-1))/h+u0(i);endu0 = u1;endu = u1((M+1):(M+n));format short;。

计算物理学:第六章 偏微分方程的数值解法

计算物理学:第六章 偏微分方程的数值解法

常数: a
format long; h = (maxx-minx)/(n-1); if a>0
精度: O(Δt, Δx)
差分方程的稳定性和收敛性:
收敛性:理论上,h → 0 时,解逼近准确解
稳定性:初值有小干扰的情况下,干扰不会被扩大 传播,而是被“磨灭”
对流方程
迎风格式:
∂u + a ∂u = 0 ∂t ∂x
二层显式格式
un+1 k
=
ukn

aΔt Δx
(uk +1

uk )
un+1 k
区间数: n = 1 = 50 0.02
初始值 : u0 , u1, u2 L, u50
t = 0 时,
⎧10 x + 1 − 0.1 ≤ x ≤ 0
U ( x)
=
⎪ ⎨‐
10
x
+
1
0 ≤ x ≤ 0.1
⎪⎩0
其余
⎧u0 = 1
⎪ ⎪⎪ ⎨
u1 u2
= =
−10 × 0.02 + 1 −10 × 2 × 0.02
h2
2.微分方程离散化: 差分公式:
dui = ui+1 − ui + O(h)
dx
h
dui = ui − ui−1 + O(h)
dx
h
dui = ui+1 − ui−1 + O(h2 )
dx
2h
dui = − ui+2 + 4ui+1 − 3ui + O(h2 )
dx
2h
d 2 ui dx 2

偏微分方程(PDEs)的MATLAB数值解法

偏微分方程(PDEs)的MATLAB数值解法

偏微分方程的MATLAB求解精讲©MA TLAB求解微分/偏微分方程,一直是一个头大的问题,两个字,“难过”,由于MA TLAB对LaTeX的支持有限,所有方程必须化成MA TLAB可接受的标准形式,不支持像其他三个数学软件那样直接傻瓜式输入,这个真把人给累坏了!不抱怨了,还是言归正传,回归我们今天的主体吧!MA TLAB提供了两种方法解决PDE问题,一是pdepe()函数,它可以求解一般的PDEs,据用较大的通用性,但只支持命令行形式调用。

二是PDE工具箱,可以求解特殊PDE问题,PDEtool有较大的局限性,比如只能求解二阶PDE问题,并且不能解决偏微分方程组,但是它提供了GUI界面,从繁杂的编程中解脱出来了,同时还可以通过File->Save As直接生成M代码一、一般偏微分方程组(PDEs)的MA TLAB求解 (3)1、pdepe函数说明 (3)2、实例讲解 (4)二、PDEtool求解特殊PDE问题 (6)1、典型偏微分方程的描述 (6)(1)椭圆型 (6)(2)抛物线型 (6)(3)双曲线型 (6)(4)特征值型 (7)2、偏微分方程边界条件的描述 (8)(1)Dirichlet条件 (8)(2)Neumann条件 (8)3、求解实例 (9)一、一般偏微分方程组(PDEs)的MATLAB 求解1、pdepe 函数说明MA TLAB 语言提供了pdepe()函数,可以直接求解一般偏微分方程(组),它的调用格式为sol=pdepe(m,@pdefun,@pdeic,@pdebc,x,t)【输入参数】@pdefun :是PDE 的问题描述函数,它必须换成下面的标准形式(,,)[(,,,)](,,,)()m m u u u uc x t x x f x t u s x t u x t x x x−∂∂∂∂∂=+∂∂∂∂∂式1 这样,PDE 就可以编写下面的入口函数 [c,f,s]=pdefun(x,t,u,du)m,x,t 就是对应于(式1)中相关参数,du 是u 的一阶导数,由给定的输入变量即可表示出出c,f,s 这三个函数@pdebc :是PDE 的边界条件描述函数,必须先化为下面的形式(,,)(,,).*(,,,)0up x t u q x t u f x t u x∂+=∂ 于是边值条件可以编写下面函数描述为 [pa,qa,pb,qb]=pdebc(x,t,u,du)其中a 表示下边界,b 表示下边界@pdeic :是PDE 的初值条件,必须化为下面的形式00(,)u x t u =我们使用下面的简单的函数来描述为 u0=pdeic(x)m,x,t :就是对应于(式1)中相关参数【输出参数】sol :是一个三维数组,sol(:,:,i)表示u i 的解,换句话说u k 对应x(i)和t(j)时的解为sol(i,j,k)通过sol ,我们可以使用pdeval()直接计算某个点的函数值2、实例讲解试求解下面的偏微分2111222221220.024()0.17()u u F u u t xu u F u u tx ∂∂=−− ∂∂ ∂∂ =−− ∂∂ 其中, 5.7311.46()x x F x e e −=−,且满足初始条件12(,0)1,(,0)0u x u x ==及边界条件1221(0,)0,(0,)0,(1,)1,(1,)0u ut u t u t t x x∂∂====∂∂【解】(1)对照给出的偏微分方程,根据标注形式,则原方程可以改写为111222120.024()1.*1()0.17u u F u u x u u F u u t t x ∂−−∂∂∂=+ ∂−∂∂∂可见m=0,且1122120.024()1,,1()0.17u F u u x c f s u F u u x ∂−− ∂===∂−∂%% 目标PDE 函数function [c,f,s]=pdefun (x,t,u,du) c=[1;1];f=[0.024*du(1);0.17*du(2)]; temp=u(1)-u(2);s=[-1;1].*(exp(5.73*temp)-exp(-11.46*temp));(2)边界条件改写为12011010.*.*00000u f f u −+=+=下边界上边界%% 边界条件函数function [pa,qa,pb,qb]=pdebc(xa,ua,xb,ub,t) %a 表示下边界,b 表示上边界 pa=[0;ua(2)];qa=[1;0]; pb=[ub(1)-1;0]; qb=[0;1];(3)初值条件改写为1210u u =%% 初值条件函数function u0=pdeic(x) u0=[1;0];(4)最后编写主调函数 clcx=0:0.05:1; t=0:0.05:2; m=0;sol=pdepe(m,@pdefun,@pdeic,@pdebc,x,t);figure('numbertitle','off','name','PDE Demo ——by Matlabsky') subplot(211)surf(x,t,sol(:,:,1)) title('The Solution of u_1') xlabel('X') ylabel('T') zlabel('U') subplot(212)surf(x,t,sol(:,:,2)) title('The Solution of u_2') xlabel('X') ylabel('T') zlabel('U')二、PDEtool 求解特殊PDE 问题MATLAB 的偏微分工具箱(PDE toolbox)可以比较规范的求解各种常见的二阶偏微分方程,但是惋惜的是只能求解特殊二阶的PDE 问题,并且不支持偏微分方程组!PDE toolbox 支持命令行形式求解PDE 问题,但是要记住那些命令以及调用形式真的很累人,还好MATLAB 提供了GUI 可视交互界面pdetool ,在pdetool 中可以很方便的求解一个PDE 问题,并且可以帮我们直接生成M 代码(File->Save As)。

偏微分方程与数值解法

偏微分方程与数值解法

偏微分方程与数值解法偏微分方程(Partial Differential Equations, PDE)是数学领域中研究的一类方程,它包含多个变量及其偏导数。

解析解法只适用于部分简单的PDE情况,对于复杂的PDE问题,数值解法成为研究和应用的重要手段。

本文将介绍偏微分方程的基本概念,并探讨数值解法的原理和常用方法。

一、偏微分方程的基本概念偏微分方程是含有未知函数的偏导数的方程。

常见的偏微分方程包括椭圆型方程、抛物型方程和双曲型方程。

其中,椭圆型方程主要描述静态问题,抛物型方程用于描述热传导和扩散问题,双曲型方程则适用于描述波动和传输等动态问题。

根据方程中的变量个数,偏微分方程可分为一维、二维和三维偏微分方程。

二、数值解法的原理数值解法是通过将连续的偏微分方程离散化为有限个代数方程来近似求解。

其基本思想是将偏微分方程所描述的问题的定义域划分为有限个网格节点,然后在这些节点上逼近原方程的解。

常用的数值解法有有限差分法、有限元法和谱方法等。

1. 有限差分法有限差分法是一种将偏导数转化为有限差分运算的方法。

通过将偏微分方程在网格节点上进行近似,利用节点之间的差分来逼近偏导数。

有限差分法的精度和稳定性取决于网格的选择和近似格式的设计。

2. 有限元法有限元法是一种基于变分原理的数值解法。

将偏微分方程中的未知函数表示为一组基函数的线性组合,并通过构建合适的变分问题来逼近原方程的解。

有限元法具有较好的适用性和数值稳定性,适用于各种复杂几何形状和边界条件的问题。

3. 谱方法谱方法基于傅里叶级数展开,将偏微分方程中的未知函数表示为一组傅里叶系数的线性组合。

通过选择适当的基函数以及傅里叶级数的截断长度,可以在整个定义域上获得高精度的数值解。

三、常见的数值解法根据不同的偏微分方程类型和问题特点,常见的数值解法有以下几种:1. 热传导问题的数值解法对于描述热传导问题的抛物型偏微分方程,可采用显式差分法、隐式差分法和Crank-Nicolson方法等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第十章 偏微分方程数值解法一、 典型的偏微分方程介绍 1.椭圆型方程 科学技术中经常遇到一些重要的、典型的偏微分方程。

在研究有热源稳定状态下的热传导,有固定外力作用下薄膜的平衡问题时,都会遇到Poisson 方程D y x y x f yux u ∈=∂∂+∂∂),(),(2222(10.1)其中D 表示平面区域。

特别在没有热源或没有外力时,就得到Laplace 方程02222=∂∂+∂∂y ux u (10.2)此外,当研究不可压缩理想流体无旋流动的速度势以及静电场的电位等,也会遇到(10.1)或(10.2)类型的方程。

2.抛物型方程 在研究热传导过程、气体扩散现象、电磁场的传播等问题中以及在统计物理、概率论和重子力学中,经常遇到抛物型方程。

这类方程中最简单、最典型的是热传导方程。

L x t xu a t u <<>=∂∂-∂∂0,0,022(10.3)其中a 是常数。

它表示长度为L 的细杆内,物体温度分布的规律。

3.双曲型方程 在研究波的传播、物体的振动时,常遇到双曲型方程。

这类方程中最简单、最典型的是波动方程L x t xu a t u <<>=∂∂-∂∂0,0,022222(10.4)它表示长度为L 的弦振动的规律。

二、定解问题偏微分方程(10.1)~(10.4)是描述物理过程的普遍规律的。

要使它们刻划某一特定的物理过程,必须给出附加条件。

把决定方程唯一解所必须给定的初始条件和边界条件叫做定解条件。

定解条件由实际问题提出。

对方程(10.3)来说,初始条件的提法应为)()0,(x f x u =,其中f (x )为已知函数,它表示物体在初始状态下温度分布是已知的。

边界条件的提法应为物体在端点的温度分布为已知,即⎩⎨⎧≥==0)(),()(),0(t t t L u t t u ψϕ (10.5)其中ϕ(t )和ψ(t )为已知函数。

对(10.4)来说,边界条件的提法和(10.5)形式一样,它表示弦在两端振动规律为已知。

初始条件的提法为L x x g x tux f x u ≤≤⎪⎩⎪⎨⎧=∂∂=0)()0,()()0,(其中f (x )和g (x )为已知函数。

它表示在初始时刻弦振动的规律和振动的速度。

对于方程(10.1)和(10.2)来说,因为它们反应稳定状态的情况,与时间无关,所以不需要提初始条件。

边界条件的提法为:),(),(y x y x u s ϕ=其中ϕ (x, y )为已知边界,s 是区域D 的边界。

由偏微分方程和定解条件所构成的问题叫定解问题。

许多实际问题提出的定解问题无法求出解析解,少数问题即使求得解析解,计算过程、解的表达式也可能很复杂。

因此必须寻求方程简单、可以在计算机上计算的数值方法。

本章将对三类典型的偏微分方程定解问题给出数值计算方法。

本章主要针对几个典型的微分方程介绍常用的差分方法和有限元方法。

这些方法基本思想是:把一个连续问题离散化,通过各种手法化成有限形式的线性方程组,然后求其解。

§1 差分法简介 差分法是求偏微分方程数值解的重要方法之一,它的主要做法是把偏微分方程中所有偏导数分别用差商代替,从而得到一代数方程组——差分方程,然后对差分方程求解,并以所得的解作为偏微分方程数值解。

为此,必须对区域进行剖分,用网格点来代替连续区域,因此差分法亦称“网格法”。

我们用一个简单例子来说明差分法的基本思想和具体要求。

取一边长为1的正方形均匀薄板, y π上下侧面绝热,四周保持恒温(如图10 .1), 求板内各点的稳定温定分布。

这个总是如在数学物理方程中所知,它可以化为拉普拉斯方程第一边值问题: 0 u=0 1⎪⎪⎪⎩⎪⎪⎪⎨⎧====<<<<Ω=∂∂+∂∂=∆====yuu u uy x y ux u u x y y x πsin 0)10,10:(011002222 (10.1)一般的来说对这类问题我们无法求出解的解析表达式,有的即便能求出也是很复杂的,在实际问题中往往也并不需要求出u 在区域Ω内每点值,实际上能求出在区域内某些点的近似值也就满足需要了。

在图10.1中作平行于坐标轴间隔为41=h 的两族直线,我们求u 在网格点(落在Ω内两族直线的交点)上的值,并且以后采用下列记号:()()()),(,,,,k i y y x u kh ih y x k i k i ==我们利用u 在这些点满足主程02222=⎪⎪⎭⎫ ⎝⎛∂∂+⎪⎪⎭⎫ ⎝⎛∂∂ikik y u x u (10.2)求出u 在网格点上的值,(10.2)中( )ik 表示u 在(i , k )点上的值。

从方程(10.2)中是无法直接求出u 值,而我们求出u 在网格点上的近似值也就可以了,为此,和常微分方程的差分方法一样,将(10.2)中偏导数用差商代替,则有222),1(),(2),1(h k i u k i u k i u x u ik ++--=⎪⎪⎭⎫ ⎝⎛∂∂ (10.3)222)1,(),(2)1,(h k i u k i u k i u y u ik -+-+=⎪⎪⎭⎫ ⎝⎛∂∂ (10.4)于是就得到u (i , k )的近似u i,k ,所满足的线性代数方程组:()0411,1,,1,12=-+++-+-+ik k i k i k i k i u u u u u h(10.5)其中)3,2,1,(0400====i k u u u i i k ,⎪⎩⎪⎨⎧=====3707.0211707.04sin ;4k k k k u kπ 用迭代法来解方程组(10.5)。

首先将方程组(10.5)化成迭代形式()1;1;;1;141-+-++++=k i k i k i k i ik u u u u u (10.6)然后用下边方法取初始值先用线性插值,注意边界条件()010======k y x u uu给定区域内部的四个网格点的值(表10.1),然后再用(10.6)算出其五个网格点的值,则得到初始值,如表10.2。

计算)1(ik u 时可将(10.6)与成简单迭代形式:())(1;)(1,)(;1)(;1)1(41n k i n k i n k i n k i n ik u u u u u -+-+++++=然后,用(表10.2)中初始值进行计算k=4 k=3 k=2 k=1k=0i =0 i =1i =2i =3i =4u (0)u (1) (简单迭代)u (1) (采德尔迭代)当我们计算)1(ik u 时只要将)0(ik u 周围四个点加起来除以4,将所得的值填表10.3 (i , k )位置上,这样就得到表10.3,再用这个方法由表10.3计算出)2(ik u ,如此下去算到)(n ik u 满足所需要的精度为止。

同样我们也可以用采德尔迭代法来解上述方程组,作法可由左到右,由下到上,从图10.2可知k 小的先作;对固定k ,i 小的先作,于是便有下述迭代公式:())(1,)(,1)1(1,)1(,1)1(41n k i n k i n k i n k i n ik u u u u u +++-+-++++=计算)1(ki u 时初始值仍为表10.2,先由表10.2中的值计算出)1(u 并计入表10.4中位置(1.1)上。

然后用 i-1,k i,k i +1,k 表10.2中(i +1,k ),(i ,k +1)位置)0(u 值和表10.4中(i -1,k ),(i ,k -1)位置上的)1(u 值相加除以4,将所 图 10.2 得的值填入表10.4中(i , k )的位置上,得出表10.4。

如此继续下去就可能计算出)2(u ,)3(u ,……直到所需要的精度为止。

由上面的例子可以看出用差分法解椭圆型方程需要考虑三个问题: 1.选用网格,将微分方程离散化为差分方程。

2.当网格步长h →0时差分方程的准确解是否收敛于微分方程的解? 3.如何解相应的代数方程组? 关于第3个问题,在第三章中已经讨论,这里就不再重复,下面就第1,第2个问题进行讨论。

§2 椭圆型方程的差分解法 椭圆型方程最简单的典型问题就是拉普拉斯方程02222=∂∂+∂∂=∆yux u u和泊松方程),(2222y x f yux u u =∂∂+∂∂=∆下面以泊松方程第一边值问题为例,来建立差分方程。

考虑泊松方程第一边值问题:(10.7)),(),,((10.7) ),(),,(212222⎪⎩⎪⎨⎧Ω∂∈=Ω∈=∂∂+∂∂=∆Ω∂y x y x u y x y x f y ux u u ϕ (一) 矩形网格设Ω为xy 平面上一有界区域,∂Ω为其边界,是分段光滑曲线。

图10.3取定沿x 轴和y 轴方向的步长分别为h 1和h 2。

()2/12221h h h +=。

作为坐标轴平行的两族直线:,1,0,1±==i ih x,1,0,2±==k kh y两族直线的交点(ih 1, kh 2)称为网点或节点,记为(x i ,y k )或(i ,k )。

以(){}Ω∈=Ωk i h y x ,表示所有属于Ω内部节点集合,并称此类节点为内点。

以∂ Ωh 表示网线x = x i 或y = y k 与∂ Ω的交点集合,并称此类的点为边界点。

令h h h Ω∂+Ω=Ω,则h Ω就是代替连续区域Ω∂+Ω=Ω的网点集合。

若两个节点之间距离等于一个步长称此两个节点为邻点。

若内点(x i ,y i )的相邻点都属于Ωh ,就称为正则内点;否则就称做非正则内点。

图10.3中打“〇”号的点为正则内点,打“×”号的点为非正则内点,打“• ”号的点为界点。

(二)五点差分格式 现在假设(i ,k )为正则内点。

沿着x ,y 轴方向分别用二阶中心差商代替u xx ,u yy ,则得ik k i ik k i ki ik k i ik h f hu u u hu u u u =+-++-=∆-+-+221,1,21,1,122(10.8)称(10.8)为差分方程。

式中u ik 表示节点(i ,k )上的网函数。

若以u h ,f h 表示网函数,),(),(,),(k i ik k i h ik k i h y x f f y x f u y x u ===,则差分方程(10.8)可简写成:h h h f u =∆(10.9)利用Taylor 展式),1(),(),(!6!5!4!3!2),(66615551444133312221,1k i k i k i x u h x u h x u h x u h x u h x u h u u k i ik ik ik ik ik ik ki +≤≤⎪⎪⎭⎫ ⎝⎛∂∂+⎪⎪⎭⎫ ⎝⎛∂∂+⎪⎪⎭⎫ ⎝⎛∂∂+⎪⎪⎭⎫⎝⎛∂∂+⎪⎪⎭⎫ ⎝⎛∂∂+⎪⎭⎫⎝⎛∂∂+=+),(),(),1(!6!5!4!3!2),(6661555144413331222121,1k i k i k i x u h x u h x u h x u h x u h x u h u u k i ik ik ik ik ik ik ki ≤'≤-⎪⎪⎭⎫ ⎝⎛∂∂+⎪⎪⎭⎫ ⎝⎛∂∂-⎪⎪⎭⎫ ⎝⎛∂∂+⎪⎪⎭⎫⎝⎛∂∂-⎪⎪⎭⎫ ⎝⎛∂∂+⎪⎭⎫⎝⎛∂∂-=- )1,(),(),(!6!5!4!3!2),(6662555244423332222221,+≤≤⎪⎪⎭⎫ ⎝⎛∂∂+⎪⎪⎭⎫ ⎝⎛∂∂+⎪⎪⎭⎫ ⎝⎛∂∂+⎪⎪⎭⎫ ⎝⎛∂∂+⎪⎪⎭⎫ ⎝⎛∂∂+⎪⎪⎭⎫ ⎝⎛∂∂+=+k i k i k i y u h y u h y u h y u h y u h y u h u u k i ik ik ik ik ik ik k i ),(),()1,(!6!5!4!3!2),(6662555244423332222221,k i k i k i y u h y u h y u h y u h y u h y u h u u k i ik ik ik ik ik ik k i ≤'≤-⎪⎪⎭⎫ ⎝⎛∂∂+⎪⎪⎭⎫ ⎝⎛∂∂-⎪⎪⎭⎫ ⎝⎛∂∂+⎪⎪⎭⎫ ⎝⎛∂∂-⎪⎪⎭⎫ ⎝⎛∂∂+⎪⎪⎭⎫ ⎝⎛∂∂-='- 这四个式子两两相加便有:)(36012261664144212221,1,1h O x u h x u h x u h u u u ikik ik ki ik k i +⎪⎪⎭⎫ ⎝⎛∂∂+⎪⎪⎭⎫ ⎝⎛∂∂+⎪⎪⎭⎫ ⎝⎛∂∂=+--+ (10.10))(360122626642442222221,1,h O y u h y u h y u h u u u ikik ik k i ik k i +⎪⎪⎭⎫ ⎝⎛∂∂+⎪⎪⎭⎫ ⎝⎛∂∂+⎪⎪⎭⎫ ⎝⎛∂∂=+--+ (10.11) 于是可得差分方程(10.9)的截断误差)()(121),(),()(24,44224421h O h O y u h x u h y x u y x u u R ki k i h k i ik =+⎪⎪⎭⎫ ⎝⎛∂∂+∂∂-=∆-∆= 其中u 是方程(10.7)的光滑解。

相关文档
最新文档