-
Notifications
You must be signed in to change notification settings - Fork 6
/
FEM-1d.tex
139 lines (106 loc) · 3.47 KB
/
FEM-1d.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
% !Mode:: "TeX:UTF-8"
\documentclass{article}
\input{en_preamble.tex}
\input{xecjk_preamble.tex}
\begin{document}
\title{一维有限元}
\author{李奥}
\date{\chntoday}
\maketitle
\section{有限元}
\begin{itemize}
\item 为什么要用有限元方法?
\end{itemize}
因为对于一般的右端,很难甚至不能找到对应的解析解。有时对于一个简单的偏微分方程,解析解的求解都非常困难。那么我们就会引入数值方法(有限元)来求解偏微分方程。
\section{两点边值问题}
我们以两点边值问题为例,求 $u$ ,使得
\begin{equation}
\begin{cases}
-u'' & = f, x \in \Omega = [0, L], \\
u & = g_D, x \,\, on \,\, \Gamma.\\
\end{cases}
\end{equation}
\section{等价变分问题}
引入一类 Sobolev 空间:
\begin{equation*}
H^1(\Omega) = \{u\in L^2(\Omega)|\nabla u \in (L^2(\Omega)^2)\}
\end{equation*}
两个基本要素
\begin{itemize}
\item 试探函数空间 $u \in H^1_{g_D}(\Omega) = \{u|u \in H^1(\Omega) \text{且} u|_{\Gamma} = g_D\}$
\item 检验函数空间 $v \in H^1_0(\Omega) = \{v|v \in H^1(\Omega) \text{且} u|_{\Gamma} = 0\}$
\end{itemize}
对任意的 $v \in H^1_0(\Omega)$,同乘方程 (1) 的两端,积分得
\begin{equation}
-\int_{\Omega} u'' v \mathrm{d}x = \int_{\Omega} fv \mathrm{d}x
\end{equation}
利用散度定理,可得
\begin{equation}
\int_{\Omega} u' v' \mathrm{d}x = \int_{\Omega} fv \mathrm{d}x + \int_{\Gamma v g_D\cdot n}\mathrm{d}\Gamma
\end{equation}
即原问题转化为:求解 $u \in H^1_0(\Omega)$,满足
\begin{equation}
\int_{\Omega} u' v'\mathrm{d}x = \int_{\Omega} fv \mathrm{d}x
\end{equation}
\section{离散变分问题}
等价变分问题仍然是一个无限的问题,为了可算,我们要把无限的问题有限化,这样就引入了模型离散的变分形式。
线性有限元空间 $S_h \subset U$,定义如下
\begin{equation*}
S_h = \{u_h \in C(\Omega) |u_h|_K \in P^1(K), \, \forall \, K \in \mathcal T_h\}
\end{equation*}
\begin{equation*}
S_{h,0} = \{v \in S_h:\,\, v|_{\Gamma} = 0\}
\end{equation*}
其中,$\mathcal T_h$ 是网格剖分的集合。假设区间剖分 n 段。
那么离散形式为: 求解 $u_h \in S_h$, 使得
\begin{equation}
\int_{\Omega} u'_h v' \mathrm dx = \int_{\Omega} f v' \mathrm dx
\end{equation}
则写成矩阵形式为
\begin{equation}
\begin{pmatrix}
(\phi'_1, \phi'_1) & (\phi'_1, \phi'_2) & \cdots & (\phi'_1, \phi'_{n+1}) \\
(\phi'_2, \phi'_1) & (\phi'_2, \phi'_2) & \cdots & (\phi'_2, \phi'_{n+1}) \\
\vdots & \vdots & \cdots & \vdots \\
(\phi'_{n+1}, \phi'_1) & (\phi'_{n+1}, \phi'_2) & \cdots & (\phi'_{n+1}, \phi'_{n+1}) \\
\end{pmatrix}
\begin{pmatrix}
u_1 \\
u_2 \\
\vdots \\
v_{n+1}
\end{pmatrix}
= \begin{pmatrix}
(f_1, \phi_1) \\
(f_2, \phi_2) \\
\vdots \\
(f_{n+1}, \phi_{n+1}) \\
\end{pmatrix}
\end{equation}
\section{边界处理}
Dirichlet 边界处理
$$
\mathbf u = \mathbf u_{interior} + \mathbf u_{boundary}
$$
其中
$$
\mathbf u_{interior}[i] =
\begin{cases}
\mathbf u_i, & \mathbf x_i \text{ 是一个内部点}\\
0, & \mathbf x_i \text{ 是一个边界点}
\end{cases}
$$
$$
\mathbf u_{boundary}[i] =
\begin{cases}
u(x_i), & \mathbf x_i \text{ 是一个边界点}\\
0, & \mathbf x_i \text{ 是一个内部点}
\end{cases}
$$
\section{误差分析}
数值解与真解之间有一个什么关系?怎样才能说明有限元求解是正确的。
\section{问题}
\cite{fem_2010}
\bibliographystyle{abbrv}
\bibliography{ref}
\end{document}