一类二维抛物型方程的ADI格式

合集下载

2维Schr_dinger方程的高阶紧致ADI格式

2维Schr_dinger方程的高阶紧致ADI格式

=
Bxuk, j , u k, j =
Byuk, j , ux 、u∀x 分别表示向前、向后差商.
证 首先, 将( 5) 式去掉高阶耗散项并改写为
BxB y
(
u
n+ k,
1 j
-
u
n k,
j)
+
i !( By
2 x
+
Bx
2y )
(
unk+,
1 j
+
unk , j ) / 2 =
0.
( 9)
将( 9)
4 22
江西师范大学学报( 自然科学版)
2010 年
下面将 1 维问题推广到 2 维问题上, 有
(1+
h2
2 x
/
12)-
1
2xuk , j +
( 1+
h2
2 y
/
12)-
1
2y uk , j =
f k,j +
O( h4) .
( 2)
通过( 2) 式的空间离散, 可知方程 ( 1) 的半离散近似为
2x /
2)
u
* k
,
j
=
( By +
i!
2 y
/
2)
unk , j
,
( By -
i!
2y / 2)
unk+,
1 j
=
(Bx +
i!
2 x
/
2)
u
* k,
j
.
( 5)
2 稳定性和守恒性分析
为了研究该 格式的稳定性, 选用 Von Neumann 方法分析, 先不妨假设 unk, j =

六点对称法,ADI法,预校法,和LOD法解二维抛物线方程

六点对称法,ADI法,预校法,和LOD法解二维抛物线方程

GAGGAGAGGAFFFFAFAF偏微分數值解法實驗報告實驗名稱:六點對稱格式,ADI 法,預校法,LOD 法解二維拋物線方程的初值問題實驗成員: 吳興 楊敏 姚榮華 于瀟龍 余凡 鄭永亮實驗日期:2013年5月17日 指導老師:張建松一、 實驗內容用六點對稱格式,ADI 法,預校法和LOD 法求解二維拋物線方程的初值問題:21(),(,)(0,1)(0,1),0,4(0,,)(1,,)0,01,0,(,0,)(,1,)0,01,0(,,0)sin cos .xx yy y y u u u x y G t t u y t u y t y t u x t u x t x t u x y x y ππ∂⎧=+∈=⨯>⎪∂⎪⎪==<<>⎨⎪==<<>⎪=⎪⎩已知(精確解為:2(,,)sin cos exp()8u x y t x y t πππ=-)設(0,1,,),(0,1,,),(0,1,,)j k n x jh j J y kh k K t n n N τ======差分解為GAGGAGAGGAFFFFAFAF,nj k u ,則邊值條件為:0,,,0,1,1,0,0,1,,,,0,1,,n n k J k nn n nj j j K j K u u k K u u u u j J-⎧===⎪⎨===⎪⎩初值條件為:0,sin cos j k j k u x y ππ=取空間步長12140h h h ===,時間步長11600τ=網比。

1: ADI 法:由第n 层到第n+1层计算分成两步:先先第n 層到n+1/2層,對uxx 用向后差分逼近,對uyy 用向前差分逼近,對uyy 用向后差分逼近,于是得到了如下格式:11112222,,1,,1,,1,,1221222,,2-22=21()n n n n n n n nj kj kj kj k j kj k j k j k n nx j k y j k hh hτδδ+++++-+-+-+-+=+uu uuuu u u (+) (1)u u1111111222,,1,,1,,1,,12212212,,2-22=21()n n n n n n n n j kj kj kj k j kj k j k j k n n x j k y j k hh hτδδ++++++++-+-++-+-+=+u u uuuu u u (+) (2)u u其中j,k=1,2,…,M-1,n=0,1,2,…,上标n+1/2表示在t=tn+1/2+(n+1/2)τ取值。

二维线性常系数Schrodinger方程的两个ADI格式

二维线性常系数Schrodinger方程的两个ADI格式

№ ’ 0嘲盯
第 l 卷第 4 3 期
VO 3 4 Ll Nn
二维缝性 系 c= 方 的 个AI 式 .tf  ̄ 常 数Sri r 程 两 D ,l- J "- hi in d 格
许 东亮 , 良强 周
( 南京航 空航 天大学 金城学院, 苏 南京 2 16 江 1 ) I5
摘 要: 在量子力学 、 等离子物理等许 多学科 中, 均有大量的 S h ̄ i e 型方程 , c r d gr n 其数值求解具有重要的物理 意义 。本 文提 出了数值求解二维线性常系数 S h/ i e 方程的两个 A I e rd gr  ̄n D 格式(—R格 式和 M F P — 格式)通过 V n N u a n , o — em n 方法判 断出这两个格式均是无条件稳定的。运用 T y r 开, ao展 l 得出这两个格式 在 ” 点处 的截断误差分别为 。 ^ 和 O 2 + 的。 数值实验 中, 固定 h 变 动 k 画出每次的误 差曲线 , , , 验证 了该格式的无条件稳 定性 ; 数值实验还表 明, 用这两个交
0 引 言
在 量 子 力 学 、 离 子 物 理 方 程 等 许 多 学 科 中 , 有 大 量 的 S  ̄ ig r 方 程 。 而 抛 物 型 方 程 与 等 均 dl dn e 型 r
S h  ̄ ig r 程 有 着 较 大 的 区 别 , 抛 物 型 方 程 稳 定 的 格 式 对 ie r dn e 方 程 却 不 一 定 稳 定 , 如 一 c r dn e 方 对  ̄ h ig r ; 比
般 显 格 式 对 抛 物 型 方 程 是 条 件 稳 定 的 , 对 S hi ig r 方 程 却 是 恒 不 稳 定 的 I 又 如 对 抛 物 型 方 程 恒 而 c r dn e 型  ̄ l l 。

抛物方程的ADI方法的几点说明

抛物方程的ADI方法的几点说明

抛物方程的ADI方法的几点说明摘要:在此文中,我们介绍了抛物方程的几种新的ADI方法。

从这些方法的构建可以看出, ADI法是一个开放式的算法,具有很强的可重构性。

进而启发我们将日常学习到的理论知识举一反三地应用到实际生产中去。

关键词:ADI方法高精度变系数高维方程产生于上世纪五十年代的交替方向隐式(ADI)方法[1,2,3],在数值数学研究与应用领域占有十分重要的地位。

该方法能把多维问题化为一系列的一维问题处理,而且一维问题所要求解的方程组为三对角的,很容易使用熟知的追赶法在计算机上实现。

该方法具有运算速度快、存储量小、无条件稳定等优点,几十年来一直受到人们的青睐。

下面我们将根据抛物方程的不同形式和实际问题的需求,介绍几种新型的交替方向隐格式。

1 传统的ADI法第一个ADI法是Peaceman和Rachford[1]于1955年提出的。

为了显示其方法,考虑如下的二维热传导方程:4 结语在这篇文章中,依据高等教材中交替方向隐格式的基本算法理论,我们介绍了抛物方程几种新型交替方向隐格式。

从这些差分格式的构建不难看出,交替方向隐格式法不但具有运算速度快、存储量小、无条件稳定等优点,而且还是一种开放式的数值算法,具有很强的可重构性,进而启发我们将日常学习到的理论知识举一反三地应用到实际生产中去。

参考文献[1] Peaceman D W,Rachford Jr H H,The numerical solution of parabolic and ellipfic differential equations, J SIAM,3,1955:28-41.[2] 李荣化,刘播,微分方程数值解法[M].4版.北京:高等教育出版社,2009.[3] 胡健伟,汤怀民.微分方程数值方法[M].北京:科学出版社,2000.[4] 闵涛,张海燕,周宏宇,等.二维变系数热传导方程初边值问题的交替方向隐格式[J].西安工业大学学报,2007,27(2).[5] 葛永斌,田振夫,吴文权.高维热传导方程的高精度交替方向隐式方法[J].上海理工大学学报,2007(29):55-58.[6] 朱琳琳.抛物方程的交替方向隐格式[D].河南师范大学,2007.。

ADI(交替方向隐格式)求解二维抛物方程(含matlab程序)

ADI(交替方向隐格式)求解二维抛物方程(含matlab程序)

ADI 法求解二维抛物方程学校:中国石油大学(华东) 学院:理学院 姓名:张道德 时间:2013.4.271、ADI 法介绍作为模型,考虑二维热传导方程的边值问题:(3.6.1),0,,0(,,0)(,)(0,,)(,,)(,0,)(,,)0t xx yy u u u x y l t u x y x y u y t u l y t u x t u x l t ϕ=+<<>⎧⎪=⎨⎪====⎩取空间步长1hM,时间步长0,作两族平行于坐标轴的网线:,,,0,1,,,j k x x jh y y kh j k M =====将区域0,x y l ≤≤分割成2M 个小矩形。

第一个ADI 算法(交替方向隐格式)是Peaceman 和Rachford (1955)提出的。

方法:由第n 层到第n+1层计算分为两步:(1) 第一步: 12,12n j k xx yy u +从n->n+,求u 对向后差分,u 向前差分,构造出差分格式为:1(3.6.1)11112222,,1,,1,,1,,1221222,,2-22=21()n n n n n n n n j kj kj kj k j kj k j k j k n n x j k y j k hhhτδδ+++++-+-+-+-+=+uu uuuu u u (+)u u(2) 第二步:12,12n j k xx yy u +从n+->n+1,求u 对向前差分,u 向后差分,构造出差分格式为:2(3.6.1)1111111222,,1,,1,,1,,12212212,,2-22=21()n n n n n n n n j kj kj kj k j kj k j k j k n n x j k y j k hh hτδδ++++++++-+-++-+-+=+uu uuuu u u (+)u u其中1211,1,,1,0,1,2,,()22n j k M n n n τ+=-=+=+上表表示在t=t 取值。

一类二维抛物型方程的有限差分方法

一类二维抛物型方程的有限差分方法
第 33卷 第 3期
2013 正 5月
高 师 理 科 学 刊
Journal of Science of Teachers College and University
文章编 号 :1007—9831(2013)03—0007—02
Vo1.33 NO.3 May 2013
一 类二维抛物 型方程 的有 限差分方法
0u a U a U
_ — +’ — +‘ CU
, Y,f)∈
u(x,Y, 0)=o(x, ) 0 ,Y≤ 1 u(O,Y,f)= (y,f) 0 Y≤1: 0 t T u(1,Y,f)=rP2(Y,f) 0≤ Y 1: 0≤t T u(x, 0,f)=o)1( ,f) 0 ≤1: 0≤t T u(x, 1,f)= !( ,f) 0 ≤1: 0≤ t≤T
其中:U o= ; 最 = 一 ; :, =仍; =q; = .
2 稳定性分析
采用 Von Newmann方法up 对式 (3)进行稳定性分析. \、 ●● _、、
令 = e ‘属肌岛 + ,代人差分格式 (3),得
D ,J _
[1+2r一一l2ck 1 r、2(l , e堋)]箭 =f1_2r+_1 十_1r(
收 稿 日期 :2013--01—20 基金项 目:安徽省教育厅 自然科学基金重点项 目 (KJ2010A224);安庆师范学院青年科研基金项 目 (KJ201020) 作 者 简介 :舒 阿秀 (1977一),女 ,安徽 旌德 人 ,副教 授 ,硕 士 ,从 事偏 微分 方程 数值 解 研究 .E—marl
A finite difference method for a kind of two-dim ensional parabolic equation

偏微分课程课件8_抛物型方程的有限差分方法(II)

偏微分课程课件8_抛物型方程的有限差分方法(II)

2 x
2)unjl1
y
2
unjl
利用Taylor展式得
(1
1 4
2a2 h4
x2
2)u(
y
xj
,
yl
,
tn1
)
u(
x
j
,
yl
,
tn
)
ha2(
2 x
2)u(
y
x
j
,
yl
,
tn1 ) 2
u( x
j
,
yl
,
tn
)
O(
2
h2
).
考察格式稳定性,将
(1
1 4
2a2
h4
x2
2)unjl1
y
unjl
ha2(
无条件稳定(绝对稳定)
O( 2 h2 h2 )
unjl
un1 jl
a
1 h2
(
2 x
unjl
u2 n
y jl
)
un1 jl
u
n jl
a 2h2
[
2 x
(unjl1
unjl
)
2 y
(unjl1
unjl
)]
显格式:稳定性限制严格 a 1
2p
一维隐格式:绝对稳定,系数矩阵为三对角矩阵 并可用追赶法求解
x jl
u2 n
y jl
), 其中
h2
截断误差 O( h2 h2 )
Fourier方法分析稳定性: unjl =vneik1 jheik2lh vn+1 ={1+2a( cos k1h 1)+2a( cos k2h 1)}vn

二维抛物线方程数值解法(ADI隐式交替法)方法

二维抛物线方程数值解法(ADI隐式交替法)方法

ADI隐式交替法三种解法及误差分析(一般的教材上只说第一种)理论部分参看孙志忠:偏微分方程数值解法注意:1.最好不要直接看程序,中间很多公式很烦人的(一定要小心),我写了两天,终于写对了。

2.中间:例如r*(u(i-1,m1,k)+u(i+1,m1,k))形式写成分形式:r*u(i-1,m1,k)+r*u(i+1,m1,k)后面会出错,我也不是很清楚为什么,可能由于舍入误差,或者大数吃掉小数的影响。

3.下面有三个程序4.具体理论看书,先仔细看书(孙志忠:偏微分方程数值解法)或者网上搜一些理论。

Matlab程序:1.function [u u0 p e x y t]=ADI1(h1,h2,m1,m2,n)%ADI解二维抛物线型偏微分方程(P-R交替隐式,截断)%此程序用的是追赶法解线性方程组%h1为空间步长,h2为时间步长%m1,m2分别为x方向,y方向网格数,n为时间网格数%p为精确解,u为数值解,e为误差%定义u0(i,j,k)=u(i,j,k+1/2),因为矩阵中,i,j,k必须全为整数x=(0:m1)*h1+0;%定义x0,y0,t0是为了f(x,t)~=0的情况%y=(0:m2)*h1+0;t=(0:n)*h2+0; t0=(0:n)*h2+1/2*h2;for k=1:n+1for i=1:m2+1for j=1:m1+1f(i,j,k)=-1.5*exp(0.5*(x(j)+y(i))-t0(k));endendendfor i=1:m2+1for j=1:m1+1u(i,j,1)=exp(0.5*(x(j)+y(i)));endendfor k=1:n+1for i=1:m2+1u(i,[1 m1+1],k)=[exp(0.5*y(i)-t(k)) exp(0.5*(1+y(i))-t(k))]; u0(i,[1 m1+1],k)=[exp(0.5*y(i)-t0(k)) exp(0.5*(1+y(i))-t0(k))] ;endendfor k=1:n+1for j=1:m1+1u([1 m2+1],j,k)=[exp(0.5*x(j)-t(k)) exp(0.5*(1+x(j))-t(k))]; u0([1 m2+1],j,k)=[exp(0.5*x(j)-t0(k)) exp(0.5*(1+x(j))-t0(k))];endendr=h2/(h1*h1);r1=2*(1-r);r2=2*(1+r);for k=1:n %外循环,先固定每一时间层,每一时间层上解一线性方程组% for i=2:m2a=-r*ones(1,m1-1);c=a;a(1)=0;c(m1-1)=0;b=r2*ones(1,m1-1);d(1)=r*u0(i,1,k)+r*(u(i-1,2,k)+u(i+1,2,k))+r1*u(i,2,k)+...h2*f(i,2,k);for l=2:m1-2d(l)=r*(u(i-1,l+1,k)+u(i+1,l+1,k))+r1*u(i,l+1,k)+...h2*f(i,l+1,k);%输入部分系数矩阵,为0的矩阵元素不输入%一定要注意输入元素的正确性endd(m1-1)=r*u0(i,m1+1,k)+r*(u(i-1,m1,k)+u(i+1,m1,k))...+r1*u(i,m1,k)+h2*f(i,m1,k);for l=1:m1-2 %开始解线性方程组消元过程a(l+1)=-a(l+1)/b(l);b(l+1)=b(l+1)+a(l+1)*c(l);d(l+1)=d(l+1)+a(l+1)*d(l);endu0(i,m1,k)=d(m1-1)/b(m1-1); %回代过程%for l=m1-2:-1:1u0(i,l+1,k)=(d(l)-c(l)*u0(i,l+2,k))/b(l);endendfor j=2:m1a=-r*ones(1,m2-1);c=a;a(1)=0;c(m2-1)=0;b=r2*ones(1,m2-1);d(1)=r*u(1,j,k+1)+r*(u0(2,j-1,k)+u0(2,j+1,k))+r1*u0(2,j,k)+...h2*f(2,j,k);for l=2:m2-2d(l)=r*(u0(l+1,j-1,k)+u0(l+1,j+1,k))+r1*u0(l+1,j,k)+... h2*f(l+1,j,k);%输入部分系数矩阵,为0的矩阵元素不输入%一定要注意输入元素的正确性endd(m2-1)=r*u(m2+1,j,k+1)+r*(u0(m2,j-1,k)+u0(m2,j+1,k))...+r1*u0(m2,j,k)+h2*f(m2,j,k);for l=1:m2-2 %开始解线性方程组消元过程a(l+1)=-a(l+1)/b(l);b(l+1)=b(l+1)+a(l+1)*c(l);d(l+1)=d(l+1)+a(l+1)*d(l);endu(m2,j,k+1)=d(m2-1)/b(m2-1); %回代过程%for l=m2-2:-1:1u(l+1,j,k+1)=(d(l)-c(l)*u(l+2,j,k+1))/b(l);endendendfor k=1:n+1for i=1:m2+1for j=1:m1+1p(i,j,k)=exp(0.5*(x(j)+y(i))-t(k)); %p为精确解e(i,j,k)=abs(u(i,j,k)-p(i,j,k)); %e为误差endendend2.function [u p e x y t]=ADI2(h1,h2,m1,m2,n)%ADI解二维抛物线型偏微分方程(D'Yakonov交替方向隐格式)%此程序用的是追赶法解线性方程组%h1为空间步长,h2为时间步长%m1,m2分别为x方向,y方向网格数,n为时间网格数%p为精确解,u为数值解,e为误差%定义u0(i,j,k)=u'(i,j,k)(引入的过渡层),因为矩阵中,i,j,k必须全为整数x=(0:m1)*h1+0;y=(0:m2)*h1+0;t=(0:n)*h2+0;t0=(0:n)*h2+1/2*h2;%定义t0是为了f(x,y,t)~=0的情况% for k=1:n+1for i=1:m2+1for j=1:m1+1f(i,j,k)=-1.5*exp(0.5*(x(j)+y(i))-t0(k));%编程时-t0(k)写成了+t0(k),导致错误;endendend%初始条件for i=1:m2+1for j=1:m1+1u(i,j,1)=exp(0.5*(x(j)+y(i)));endend%边界条件for k=1:n+1for i=1:m2+1u(i,[1 m1+1],k)=[exp(0.5*y(i)-t(k)) exp(0.5*(1+y(i))-t(k))];endendr=h2/(h1*h1);r4=1+r;r5=r/2;for k=1:nfor i=2:m2u0(i,[1 m1+1],k)=r4*u(i,[1 m1+1],k+1)-r5*(u(i-1,[1 m1+1],... k+1)+u(i+1,[1 m1+1],k+1));endendfor k=1:n+1for j=1:m1+1u([1 m2+1],j,k)=[exp(0.5*x(j)-t(k)) exp(0.5*(1+x(j))-t(k))];endendr1=r-r*r;r2=2*(r-1)*(r-1);r3=r*r/2;for k=1:n %外循环,先固定每一时间层,每一时间层上解一线性方程组% for i=2:m2a=-r*ones(1,m1-1);c=a;a(1)=0;c(m1-1)=0;b=2*r4*ones(1,m1-1);d(1)=r*u0(i,1,k)+r1*(u(i-1,2,k)+u(i,1,k)+u(i+1,2,k)+...u(i,3,k))+r2*u(i,2,k)+r3*(u(i-1,1,k)+...u(i+1,1,k)+u(i-1,3,k)+u(i+1,3,k))+2*h2*f(i,2,k);for l=2:m1-2d(l)=r1*(u(i-1,l+1,k)+u(i,l,k)+u(i+1,l+1,k)+...u(i,l+2,k))+r2*u(i,l+1,k)+r3*(u(i-1,l,k)+...u(i+1,l,k)+u(i-1,l+2,k)+u(i+1,l+2,k))+2*h2*f(i,l+1,k);%输入部分系数矩阵,为0的矩阵元素不输入%一定要注意输入元素的正确性endd(m1-1)=r*u0(i,m1+1,k)+r1*(u(i-1,m1,k)+u(i,m1-1,k)+...u(i+1,m1,k)+u(i,m1+1,k))+r2*u(i,m1,k)+...r3*(u(i-1,m1-1,k)+...u(i+1,m1-1,k)+u(i-1,m1+1,k)+u(i+1,m1+1,k))+2*h2*f(i,m1,k);for l=1:m1-2 %开始解线性方程组消元过程a(l+1)=-a(l+1)/b(l);b(l+1)=b(l+1)+a(l+1)*c(l);d(l+1)=d(l+1)+a(l+1)*d(l);end%回代过程%u0(i,m1,k)=d(m1-1)/b(m1-1);for l=m1-2:-1:1u0(i,l+1,k)=(d(l)-c(l)*u0(i,l+2,k))/b(l);endendfor j=2:m1a=-r*ones(1,m2-1);c=a;a(1)=0;c(m2-1)=0;b=2*r4*ones(1,m2-1);d(1)=r*u(1,j,k+1)+2*u0(2,j,k);for l=2:m2-2d(l)=2*u0(l+1,j,k);%输入部分系数矩阵,为0的矩阵元素不输入%一定要注意输入元素的正确性endd(m2-1)=2*u0(m2,j,k)+r*u(m2+1,j,k+1);for l=1:m2-2 %开始解线性方程组消元过程a(l+1)=-a(l+1)/b(l);b(l+1)=b(l+1)+a(l+1)*c(l);d(l+1)=d(l+1)+a(l+1)*d(l);endu(m2,j,k+1)=d(m2-1)/b(m2-1); %回代过程%for l=m2-2:-1:1u(l+1,j,k+1)=(d(l)-c(l)*u(l+2,j,k+1))/b(l);endendendfor k=1:n+1for i=1:m2+1for j=1:m1+1p(i,j,k)=exp(0.5*(x(j)+y(i))-t(k)); %p为精确解e(i,j,k)=abs(u(i,j,k)-p(i,j,k)); %e为误差endendend3.function [u u0 p e x y t]=ADI5(h1,h2,m1,m2,n)%ADI解二维抛物线型偏微分方程(P-R交替隐式,未截断)%此程序用的是追赶法解线性方程组%h1为空间步长,h2为时间步长%m1,m2分别为x方向,y方向网格数,n为时间网格数%p为精确解,u为数值解,e为误差%定义u0(i,j,k)=u(i,j,k+1/2),因为矩阵中,i,j,k必须全为整数x=(0:m1)*h1+0;%定义x0,y0,t0是为了f(x,t)~=0的情况%y=(0:m2)*h1+0;t=(0:n)*h2+0; t0=(0:n)*h2+1/2*h2;for k=1:n+1for i=1:m2+1for j=1:m1+1f(i,j,k)=-1.5*exp(0.5*(x(j)+y(i))-t0(k));endendendfor i=1:m2+1for j=1:m1+1u(i,j,1)=exp(0.5*(x(j)+y(i)));endendfor k=1:n+1for i=1:m2+1u(i,[1 m1+1],k)=[exp(0.5*y(i)-t(k)) exp(0.5*(1+y(i))-t(k))]; u1(i,[1 m1+1],k)=[exp(0.5*y(i)-t0(k)) exp(0.5*(1+y(i))-t0(k))] ;endendr=h2/(h1*h1);r1=2*(1-r);r2=r/4;r3=2*(1+r);for k=1:nfor i=2:m2u0(i,[1 m1+1],k)=u1(i,[1 m1+1],k)-r2*(u(i-1,[1 m1+1],k+1)-...2*u(i,[1 m1+1],k+1)+u(i+1,[1 m1+1],k+1)-u(i-1,[1 m1+1],k)+...2*u(i,[1 m1+1],k)-u(i+1,[1 m1+1],k));endendfor k=1:n+1for j=1:m1+1u([1 m2+1],j,k)=[exp(0.5*x(j)-t(k)) exp(0.5*(1+x(j))-t(k))];endendfor k=1:n %外循环,先固定每一时间层,每一时间层上解一线性方程组%for i=2:m2a=-r*ones(1,m1-1);c=a;a(1)=0;c(m1-1)=0;b=r3*ones(1,m1-1);d(1)=r*u0(i,1,k)+r*(u(i-1,2,k)+u(i+1,2,k))+r1*u(i,2,k)+... h2*f(i,2,k);for l=2:m1-2d(l)=r*(u(i-1,l+1,k)+u(i+1,l+1,k))+r1*u(i,l+1,k)+...h2*f(i,l+1,k);%输入部分系数矩阵,为0的矩阵元素不输入%一定要注意输入元素的正确性endd(m1-1)=r*u0(i,m1+1,k)+r*(u(i-1,m1,k)+u(i+1,m1,k))...+r1*u(i,m1,k)+h2*f(i,m1,k);for l=1:m1-2 %开始解线性方程组消元过程a(l+1)=-a(l+1)/b(l);b(l+1)=b(l+1)+a(l+1)*c(l);d(l+1)=d(l+1)+a(l+1)*d(l);endu0(i,m1,k)=d(m1-1)/b(m1-1); %回代过程%for l=m1-2:-1:1u0(i,l+1,k)=(d(l)-c(l)*u0(i,l+2,k))/b(l);endendfor j=2:m1a=-r*ones(1,m2-1);c=a;a(1)=0;c(m2-1)=0;b=r3*ones(1,m2-1);d(1)=r*u(1,j,k+1)+r*(u0(2,j-1,k)+u0(2,j+1,k))+r1*u0(2,j,k)+...h2*f(2,j,k);for l=2:m2-2d(l)=r*(u0(l+1,j-1,k)+u0(l+1,j+1,k))+r1*u0(l+1,j,k)+... h2*f(l+1,j,k);%输入部分系数矩阵,为0的矩阵元素不输入%一定要注意输入元素的正确性endd(m2-1)=r*u(m2+1,j,k+1)+r*(u0(m2,j-1,k)+u0(m2,j+1,k))...+r1*u0(m2,j,k)+h2*f(m2,j,k);for l=1:m2-2 %开始解线性方程组消元过程a(l+1)=-a(l+1)/b(l);b(l+1)=b(l+1)+a(l+1)*c(l);d(l+1)=d(l+1)+a(l+1)*d(l);endu(m2,j,k+1)=d(m2-1)/b(m2-1); %回代过程%for l=m2-2:-1:1u(l+1,j,k+1)=(d(l)-c(l)*u(l+2,j,k+1))/b(l);endendendfor k=1:n+1for i=1:m2+1for j=1:m1+1p(i,j,k)=exp(0.5*(x(j)+y(i))-t(k)); %p为精确解 e(i,j,k)=abs(u(i,j,k)-p(i,j,k)); %e为误差endendend[up e x y t]=ADI2(0.01,0.001,100,100,1000);surf(x,y,e(:,:,1001)) t=1的误差曲面下面是三种方法的误差比较:1.[u u0 p e x y t]=ADI1(0.1,0.1,10,10,10)((P-R交替隐式,截断)截断中间过渡层用u(i,j,k+1/2)代替)(t=1时的误差)2.[u u0 p e x y t]=ADI5(0.1,0.1,10,10,10)(P-R交替隐式,未截断)(未截断过渡层u(i,j,)’=u(i,j,k+1/2)-h2^2/4*dy^2dtu(i,j,k+1/2);)3.[u p e x y t]=ADI2(0.1,0.1,10,10,10)(D'Yakonov交替方向隐格式) surf(x,y,e(:,:,11))(表示t=1时的误差)下面是相关数据:1: [u u0 p e x y t]=ADI1(0.1,0.1,10,10,10)((P-R交替隐式,截断)截断中间过渡层用u(i,j,k+1/2)代替)e(:,:,11) =Columns 1 through 60 0 0 0 0 00 0.00040947 0.00025182 0.00019077 0.00017112 0.000176040 0.00057359 0.00042971 0.00035402 0.00032565 0.000336280 0.00066236 0.00054689 0.00047408 0.00044596 0.000462670 0.00072152 0.00062001 0.00055081 0.00052442 0.000545530 0.00076164 0.0006576 0.00058522 0.00055732 0.000579840 0.00078336 0.00065993 0.00057557 0.00054161 0.000562090 0.00078161 0.00061872 0.00051646 0.00047429 0.000489640 0.00073621 0.0005148 0.00039979 0.00035439 0.000363130 0.00056964 0.00031688 0.00022051 0.0001884 0.000191920 0 0 0 0 02.[u u0 p e x y t]=ADI5(0.1,0.1,10,10,10)(P-R交替隐式,未截断)(未截断过渡层u(i,j,)’=u(i,j,k+1/2)-h2^2/4*dy^2dtu(i,j,k+1/2);)e(:,:,11) =Columns 1 through 60 0 0 0 0 00 0.00027006 0.00016305 0.00012104 0.0001071 0.000109950 0.00037754 0.00027817 0.0002253 0.00020483 0.000211160 0.00043539 0.00035386 0.00030207 0.00028124 0.00029140 0.00047398 0.00040104 0.00035113 0.00033111 0.000344050 0.0005003 0.00042535 0.00037309 0.0003519 0.000365710 0.00051479 0.00042699 0.00036681 0.00034164 0.00035410 0.00051415 0.00040056 0.00032887 0.0002985 0.000307640 0.00048504 0.0003335 0.00025411 0.0002221 0.000227060 0.00037609 0.00020532 0.00013956 0.00011718 0.000119020 0 0 0 0 03.[u p e x y t]=ADI2(0.1,0.1,10,10,10)(D'Yakonov交替方向隐格式)e(:,:,11) =Columns 1 through 60 0 0 0 0 00 8.6469e-006 1.4412e-005 1.8364e-005 2.091e-005 2.2174e-0050 1.4412e-005 2.4777e-005 3.2047e-005 3.6716e-005 3.8961e-0050 1.8364e-005 3.2047e-005 4.1789e-005 4.8054e-005 5.1008e-0050 2.091e-005 3.6716e-005 4.8054e-005 5.5353e-005 5.8764e-0050 2.2174e-005 3.8961e-005 5.1008e-005 5.8764e-005 6.2389e-0050 2.2118e-005 3.8698e-005 5.0523e-005 5.8126e-005 6.171e-0050 2.055e-005 3.5581e-005 4.6157e-005 5.2942e-005 5.6197e-0050 1.707e-005 2.8951e-005 3.7128e-005 4.2365e-005 4.4952e-0050 1.0851e-005 1.7698e-005 2.2265e-005 2.5203e-005 2.672e-0050 0 0 0 0 01.[u u0 p e x y t]=ADI1(0.1,0.1,10,10,10)((P-R交替隐式,截断)截断中间过渡层用u(i,j,k+1/2)代替)Columns 7 through 110 0 0 0 00.00020348 0.00026228 0.00038338 0.00066008 00.00038607 0.00048321 0.00064717 0.00091668 00.00052635 0.00064203 0.00081637 0.0010517 00.0006174 0.00074272 0.00092111 0.0011417 00.00065651 0.00078964 0.00097724 0.0012051 00.00064051 0.00078116 0.00098594 0.0012433 00.00056474 0.00070822 0.00093332 0.0012478 00.00042547 0.00055526 0.00078616 0.0011844 00.00022735 0.00030946 0.00049004 0.00092402 00 0 0 0 02.[u u0 p e x y t]=ADI5(0.1,0.1,10,10,10)(P-R交替隐式,未截断)(未截断过渡层u(i,j,)’=u(i,j,k+1/2)-h2^2/4*dy^2dtu(i,j,k+1/2);)Columns 7 through 110 0 0 0 00.00012826 0.00016798 0.00024986 0.00043637 00.00024444 0.00031023 0.00042173 0.00060513 00.00033401 0.00041257 0.00053179 0.00069358 00.00039216 0.00047742 0.00059986 0.00075263 00.00041704 0.00050761 0.00063642 0.00079439 00.00040657 0.0005021 0.00064226 0.00081984 00.00035784 0.000455 0.00060828 0.00082334 00.00026866 0.00035628 0.00051263 0.0007824 00.00014262 0.00019789 0.00031956 0.0006113 00 0 0 0 0 3.[u p e x y t]=ADI2(0.1,0.1,10,10,10)(D'Yakonov交替方向隐格式) Columns 7 through 110 0 0 0 02.2118e-005 2.055e-005 1.707e-005 1.0851e-005 03.8698e-005 3.5581e-005 2.8951e-005 1.7698e-005 05.0523e-005 4.6157e-005 3.7128e-005 2.2265e-005 05.8126e-005 5.2942e-005 4.2365e-005 2.5203e-005 06.171e-005 5.6197e-005 4.4952e-005 2.672e-005 06.1116e-005 5.5803e-005 4.4817e-005 2.6785e-005 05.5803e-005 5.1239e-005 4.1529e-005 2.5153e-005 04.4817e-005 4.1529e-005 3.42e-005 2.126e-005 02.6785e-005 2.5153e-005 2.126e-005 1.3869e-005 00 0 0 0 0。

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

一类二维抛物型方程的ADI格式
【摘要】本文针对一类二维抛物型方程,建立了一个在空间和时间方向上均具有二阶精度的ADI格式,并分析其稳定性. 比较以往算法,此格式具有精度较高,无条件稳定等优点,同时,该方法通过求解两个线性代数方程得到原问题的解,避免了非线性迭代运算,提高了计算效率.
【关键词】二维抛物型方程;ADI格式;稳定性;截断误差
1.引言
抛物型偏微分方程在研究热传导过程、一些扩散现象及电磁场传播等许多问题中都有广泛的应用,对这一类方程数值解法的研究一直是科研工作者关注的热点问题之一,其中高精度的有限差分方法更是受到了越来越多的重视. 考虑如下的初边值问题[1]:
其中,为常数.
在文献[1]中对问题(1)建立了差分格式,格式的截断误差阶为.本文将在文献[1]的基础上进一步研究问题(1)的高效差分格式,建立了一个高精度的交替方向隐式差分格式(即ADI格式),提高了时间方向上的精度,并给出相应的稳定性分析。

2.差分格式的建立
为了得到问题(1)的有限差分格式,首先将求解区域进行网格剖分,结点为. 选取正整数L和N,并令为方向上的网格步长,为方向上的网格步长,记
假定第层的已知,则由第(Ⅰ)步,通过解一个三对角线性代数方程组求出,再由第(Ⅱ)步,再解一个三对角线性代数方程组即可求出. 所以,只要利用追赶法求解两个三对角线性代数方程组即可,此时计算量与储存量都较小. 另外,在处理边界条件时,为了提高精度,采取中心差分,这样会出现虚拟值,此时,只要再与格式中的方程联立,即可消去虚拟值[2].
3. 稳定性分析
下面采用von Newmann方法[3]对上述D格式进行稳定性分析. 一般地,低阶项不影响差分格式的稳定性,所以不妨略去项,并对(3)、(5)式消去中间变量得:
利用Taylor展开式求误差,可知此处建立的D格式的截断误差阶为.
参考文献:
[1]管秋琴.一类二维抛物型方程的有限差分格式[J]. 赤峰学院学报(自然科学版). 2010,26(1):7.
[2]Richtmyer R D ,Morton KW. Difference methods for initial - value problems (2nd edition)[J ] . John wiley &sons. 1967.
[3]戴嘉尊,邱建贤. 微分方程数值解法[M]. 南京:东南大学出版社.2002.
;安庆师范学院青年科研基金项目(KJ201020)。

相关文档
最新文档