16.901 讲义笔记:加权残差法
这部分内容的主题是有限元方法( FEM) ,虽然我们是从数学角度来探讨这
个问题,但有很多有趣的物理穿插其中,特别是流体的问题, (例如:以扩散效
应为主的物理现象)
一个简单的例子
我们希望解决下面这个问题:
轴向载
荷均匀
﹡桁架竖直放置,且其轴向载荷均匀
﹡左右端固定
模型方程:
2
2
1
dv
dx
= ,且 (0) 0, (1) 0vv==
进行两次积分,再结合边界条件,我们就可以得到方程的精确解
2
1
()
2
vx x ax b?=++
?(0) 0vb== 0b=
1
(1) 0
2
va=+= ?
1
2
a=?
1
() ( 1)
2
vx xx=?
加权残数法是一种逼近控制方程的解的方法,下面我们就来看在这个问题中,它
是怎样进行的。
第一步:设方程的解是你选择的函数的线性组合。
例如,在这个问题中,我们可以选择正弦函数的形式,也许是
12 3
() sin sin2 sin3Ux a x a x a xπ ππ=+ +
这里的 均为常数,可以通过某种方法确定。 sin
123
,,aaa , sin 2 sin 3x xxπ ππ和就
是所选的函数。
﹡我选择这些函数是因为他们自然的满足
(0) 0, (1) 0vv= =
的边界条件
现在,我们定义一个残差,它只是对控制方程进行了很小的整理:
2
2
() 1
dv
Rv
dx
=?
方程的精确解就是任何时候(例如: 0 x≤ ≤1)都满足 () 0Rv= 和边界条件。
让我们用 U 替换方程中的 v,即:
{}
2
12 32
1() sin sin2 sin3
d
R U a xa xa x
dx
π ππ?=++
() ()
2
12 3
2
2
() sin 2 sin23sin31RUax axaxπππ ππ π=? ? ? ?
因为我们只有三个未知数( ) ,所以不可能任意地令上式等于零。但有
些办法来解决这个问题:
123
,,aaa
1, 配方法 :选择 N=3 个位置,在这些位置上令R (U)=0。如果进展顺利,我们
能够得到合理的a
i
值。
2, 最小二乘法 :选择a
i
,使得 取最小。
1
2
0
Rdx
∫
3, 加权残差法 :选择 N=3 个加权函数,找出满足 ,
,
1
1
0
() 0RUdxω =
∫
1
2
0
() 0RUdxω =
∫
1
3
0
() 0RUdxω =
∫
的a
i
,这里的
i
ω
就是权重函数
对于这个问题,我们用上述三种方法来分别讨论。
配方法
配点法的关键就是如何选择 x ,使得在该点强制满足 R(U)=0, (无疑地)这儿会
有一些微妙的问题,例如, 如果我们选择:
1
2
3
0
12
1
x
x
x
=
=
=
在 x=0 处会出问题。让我们来看一下为什么会是这样。
在 x=0 处(注意:x =0 时, sin mpx=0)
( )(0) 1RU?=?
,这表明不能令其为 0,因为a
i
的值对方程不起作用。
如果把前面的选择改为:
1
2
3
1
4
1
2
3
4
x
x
x
=
=
=
我们可以得到下面的方程:
在x
1
处:
() ()
123
22
2
3
sin sin sin23
424
aaa
ππ π
π ππ?? ? 10? =
在x
2
处:
() ()
123
22
2
3
sin sin sin23aaa
ππ
π πππ?? ? 10? =
在x
3
处:
() ()
12 3
22
2
39
sin sin sin
3
23
424
aa aπ 10
π
ππ?? ? ? =
或者写成矩阵方程,即:
() ()
() ()
() ()
22
2
1
22
2
2
3
22
2
3
sin 2 sin 3 sin
424
1
3
sin 2 sin 3 sin 1
22
1
339
sin 2 sin 3 sin
424
a
a
a
π ππ
πππ
ππππ
πππ
ππ π
??
?? ?
??
??? ?
??? ?
?? ?
??
=
? ?
??? ?
? ???
?? ?
??
求逆(我用 MATLAB)可得:
123
0.1223, 0, 0.0023aaa=? = =?
注意:a
2
=0 并不令人意外,因为这个问题是关于 x=1/2 完全对称的,但
sin 2 xπ 不是关于x =1/2 对称的。如图
最小二乘法
现在,我们就要试图去寻找 使得
i
a
1
2
0
Rdx
∫
最小,从前面的内容我们有:
() ( )
12 3
22
2
( ) sin sin 2 sin 323RU a x a x a xππ π πππ=? ? ? 1?
对上式求积分,会有很多下面这种形式的项:
1
0
1/2,
sin sin
0,
nm
mx nxdx
nm
ππ
=?
=
?
≠
?
∫
如果
如果
把等于零的项都去掉,很容易看出:
{
() ()
22
11 2
22
22
12 3
00
sin 2 sin 2 3 sin3Rdx a x a x a xππ π π π π
???
??=+ +
??
???
∫∫
?
+
?
( ) ( ) ( )
}
22 2
12 3
2sin 2 sin 2 3 sin3 1 dxax a x a xπππ ππ π+++
(看不见)给出:
[]()
()
[]
4
11
4
123 2 2
4
33
00
1
,, 0 2 0 4, 0, 12 1
2
003
aa
aaa a a
aa
π
ππ
π
??
π
? ??
??
?
? ??
=+
?
+
?
?
? ??
??
??
?
1
1
2
TT
aDa ga=+
G G G G
+
为使之最小化,我们对 a求偏导,使得
G
1
0
a
f?
=
?
2
0
a
f?
=
?
3
0
a
f?
=
?
其中
1
2
T
f aDa=
K K
,注意,常数项 1 不影响解。
这是一个很著名的问题,其解的形式为:
Da=?
G G
g g
()
1
aD
?
?=?
G G
解得:(对于我们这个问题, D 是对角阵,所以很容易求解)
1
0.1290a =?
2
0a =
3
0.0048a =?
加权残差法
我们最后考虑的是加权残差法,在这种方法里,我们令:
1
0
() 0
i
RUdxω =
∫
1, 2, 3i =
i
ω
可以有很多种合理选择,其中最著名的是 伽辽金加权残差法,他用同一个函
数去逼近 :
()Ux
1
sin xω π=
2
sin 2 xω π=
3
sin 3 xω π=
() ()
11
2
2
12
00
( ) sin [ sin 2 sin 2
i
R Udx x a x a xω ππ π π π??=
∫∫
()
2
3
3sin31]axππ? ? dx
如果利用前面 的结果,则有:
1
0
sin sinmx nxdxππ
∫
1
2
11
0
12
()
2
RUdx aπ
π
ω =? ?
∫
1
2
22
0
1
() (2)
2
RUdx aπω =?
∫
1
2
33
0
3
12
() (3)
2
RUdx aπ
π
ω =? ?
∫
这时令它们为零,有:
1
3
4
a
π
=?
2
0a =
3
2
4
(3 )
a
π
=?
或
1
0.1290a =?
2
0a =
3
0.0048a =?
这和最小二乘的结果是完全一样的。