(五)、Fealpy 矩阵的组装2

这一节, 我们来介绍一下有限元相关的知识。我们以 Poisson 方程为例:
(五)、Fealpy 矩阵的组装2
(五)、Fealpy 矩阵的组装2
注意我们的测试函数 u u u Γ D \Gamma_D ΓD 上是 0。
(五)、Fealpy 矩阵的组装2
于是我们可以给出离散的代数系统
(五)、Fealpy 矩阵的组装2
接下来我们来分析边界条件, 若只有 Dirichlet 边界条件, 则有离散代数系统中的形式知 R = 0 , b N = b R = 0 , A u = b . R=0, b_N=b_R=0, Au=b. R=0,bN=bR=0,Au=b. u u u 进行向量分解
u = u I ( 内 部 自 由 度 ) + u D ( 边 界 自 由 度 ) , u=u_I(内部自由度)+u_D(边界自由度), u=uI()+uD() 代入 A u = b Au=b Au=b 中, 有
A u I = b − A u D ≔ F . Au_I= b- Au_D\coloneqq F. AuI=bAuD:=F.
我们有两种方法求解问题:

  1. 只求解 u I u_I uI, 但这样会改变原始离散系统的规模;
  2. F F F 中 Dirichlet 边界自由度对应的分量设真解的值,并把 A A A 中 Dirichlet 边界自由度对应的行列的主对角元素改为 1, 其它元素改为 0。

若只有 N e u m a n n Neumann Neumann 边界条件, 仍由之前的离散代数系统,我们有
A u = b + b N . Au=b+b_N. Au=b+bN.
因为Neumann边界条件的解不是唯一的(相差一个常数), 故我们增加一个条件来使其唯一: ∫ Ω u   d x = 0 ⇒ ∫ Ω ϕ u   d x = 0 ⇒ C u = 0 \int_{\Omega}u \,\mathrm{d}\bm{x}=0\Rightarrow \int_{\Omega}\phi\bm{u} \,\mathrm{d}\bm{x}=0\Rightarrow \bm{Cu}=0 Ωudx=0Ωϕudx=0Cu=0
其中 C = [ ∫ ϕ 0 , ⋯   , ∫ ϕ N − 1 ] \bm{C}=[\int \phi_0,\cdots, \int\phi_{N-1}] C=[ϕ0,,ϕN1] 最终我们要求解
(五)、Fealpy 矩阵的组装2

若只有 R o b i n Robin Robin 条件, 直接求解 ( A + R ) u = b + b R (A+R)u=b+b_R (A+R)u=b+bR 即可。

如果是混合边界条件, 则最后应用Dirichlet 便好了。
下一节, 我们将展示刚度矩阵, 质量矩阵的具体组装。