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=+ GGGG + 为使之最小化,我们对 a求偏导,使得 G 1 0 a f? = ? 2 0 a f? = ? 3 0 a f? = ? 其中 1 2 T f aDa= KK ,注意,常数项 1 不影响解。 这是一个很著名的问题,其解的形式为: Da=? GG g g () 1 aD ? ?=? GG 解得:(对于我们这个问题, 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 =? 这和最小二乘的结果是完全一样的。