偏微分方程数值及matlab实验报告(8)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
偏微分方程数值实验报告八
实验题目:利用有限差分法求解
.
0)1(,0)1(),()()(==-=+''-u u x f x u x u 真解为
)
1()(22
x e x u x -=-实现算法:对于两点边值问题
,
)(,)(,,d 22βα==∈=-b u a u l x f dx
u
(1)
其中),(b a l =f b a ),(<为],[b a l =上的连续函数,βα,为给定常数.
其相应的有限差分法的算法如下:
1.对求解区域做网格剖分,得到计算网格.在这里我们对区间l 均匀剖分n 段,每个剖分单元的剖分步长记为n
a
b h -=
.2.对微分方程中的各阶导数进行差分离散,得到差分方程.运用的离散方法有:方法一:用待定系数和泰勒展开进行离散
)()()()(d )
(d 11112
2++--++≈i i i i i i i i x u x u x u x x u ααα方法二:利用差商逼近导数
2
112
2)
()(2)()(d )(d h x u x u x u x x u i i i i i -++-≈(2)
将(2)带入(1)可以得到
)()()
()(2)(2
11u R x f h x u x u x u i i i i i +=+--
-+,
其中)(u R i 为无穷小量,这时我们丢弃)(u R i ,则有在i x 处满足的计算公式:
1,...,1)()
()(2)(2
11-==+--
-+n i x f h
x u x u x u i i i i ,(3)
3.根据边界条件,进行边界处理.由(1)可得
β
α==n u u ,0(4)
称(3)(4)为逼近(1)的差分方程,并称相应的数值解向量1-n U 为差分解,i u 为)(i x u 的近似值.4.最后求解线性代数方程组,得到数值解向量1
-n U .
实验题目:用Lax-Wendroff 格式求解方程:
.
4sin 1),1(],
1,0[,2sin 1)0,(,
0),1,0(,02t t u x x x u t x u u x t ππ+=∈+=>∈=- (1) (精确解).2(2sin 1t x u ++=π) 数值边值条件分别为: (a )).(20101
n 0
n
n n
u u h
u u -+
=+τ (b ).1n 0n
u u =
(c ).02-1
2111
n 0
=++++n n u u u
请将计算结果与精确解进行比较。
实现算法: 1.网格剖分:
对求解区域],0()1,0(G T ⨯=作均匀网格剖分. 节点: ,jh x j = N j ,...,1,0= ,jh t k = M k ,...,1,0= 其中空间和时间步长:.,1M
T N h ==τ 2.算法实现
将),(1+k i t x u 在节点),(k i t x 处作泰勒级数展开
)(][!2][),(),(32221τττO t
u t u t x u t x u k
i k i k i k i +∂∂+∂∂+=+ (2)
考虑在节点),(k j t x 处(1)的微分方程,有:
.0=∂∂-∂∂x
u a t u .)()(2
2
222x u a t u x a x u a t t u ∂∂=∂∂∂∂-=∂∂-∂∂=∂∂ 将上述两式代入(2)式,得
)(][2][),(),(322221τττO x
u a x u a t x u t x u k
i k i k i k i +∂∂+∂∂-=+
对x 的一阶、二阶导数用中心差商代替
)
(
))]
,
(
)
,
(
[(
2
1
]
[2
1
1
h
O
t
x
u
t
x
u
h
x
u
k
i
k
i
k
i
+
-
=
∂
∂
-
+
)
(
))]
,
(
)
,
(
2
)
,
(
[(
1
]
[2
1
1
2
2
2
h
O
t
x
u
t
x
u
t
x
u
h
x
u
k
i
k
i
k
i
k
i
+
+
-
=
∂
∂
-
+
代入整理后得到
)
(
)
(
)
(
)]
,
(
)
,
(
2
)
,
(
[
2
)]
,
(
)
,
(
[
2
)
,
(
)
,
(
3
2
2
2
1
1
2
2
2
1
1
1
τ
τ
τ
τ
τ
O
h
O
h
O
t
x
u
t
x
u
t
x
u
h
a
t
x
u
t
x
u
h
a
t
x
u
t
x
u
k
i
k
i
k
i
k
i
k
i
k
i
k
i
+
+
+
+
-
+
-
-
=
-
+
-
+
+
略去误差项,以k
i
u代替)
,
(
k
i
t
x
u,得到如下差分格式
)
2
(
2
)
(
21
1
2
2
2
1
1
1k
i
k
i
k
i
k
i
k
i
k
i
k
i
u
u
u
h
a
u
u
h
a
u
u
-
-
-
+
++
-
+
-
-
=
τ
τ
(3)(3)式就是Lax-Wendroff格式,其截断误差为)
(2
2h
O+
τ,节点如图
令
h
a
r
τ|
|
=,就得到(1)式的Lax-Wendroff格式的公式
)
2
(
2
)
(
21
1
2
1
1
1k
i
k
i
k
i
k
i
k
i
k
i
k
i
u
u
u
r
u
u
r
u
u
-
-
-
+
++
-
+
-
-
=(4)(4)式是二阶精度的差分格式.
程序代码:
function [X,T,U] = advection_fd1d (NS ,NT ,pde,bd)
% WAVE_EQUATION_FD1D 利用有限差分方法计算一维双曲线方程