數值分析 1. 數學基礎 2. 計算機算法 3. 解線性方程組 4. 函數逼近 5. 數值微分與積分 6. 非線性方程求根 7. 常微分方程的數值解法

1. 數學基礎

泰勒公式

If f \in C^n[a, b] and if f^{(n+1)} exists on the open interval (a, b), then for any points c and x in the closed interval [a, b],
f(x) = \sum^n_{k=0} \frac{1}{k!}f^{(k)}(c)(x-c)^k + E_n(x)
for some point \xi between c and x
E_n(x) = \frac{1}{(n+1)!}f^{(k+1)}(\xi)(x-c)^{n+1}

收斂階數 order of convergence

描述一個序列的收斂速度
如果|x_{n+1} - x^*| \le C|x_n - x^*|^{\alpha}, (n \ge N) ,那麼序列[x_n]的收斂階數爲\alpha

使用迭代公式 x_{k+1} = \frac{x_k(x_k^2 + 3a)}{3x_k^2+a} 來計算 \sqrt{a},求[x_k]的收斂階數
\begin{align*} |x_{k+1} - \sqrt{a}| & = |\frac{x_k(x_k^2 + 3a)}{3x_k^2+a} - \sqrt{a} | \\ & = |\frac{x_k^3 + 3a x^k - 3x_k\sqrt{a} + a\sqrt{a} }{3x_k^2+a}| \\ & = |\frac{(x_k - \sqrt{a})^3}{3x_k^2+a}| \\ & \approx \frac{1}{4a}|(x_k - \sqrt{a})|^3 , (x_k \to \sqrt{a}) \end{align*}
\therefore收斂階數爲3

定理:對於迭代公式x_{k+1} = \varphi(x_k),如果\varphi^{(p)}(x)x^*附近收斂,並且
\varphi'(x^*) = \varphi''(x^*) = \cdots = \varphi^{(p-1)}(x^*) = 0, \varphi^p(x^*) \ne 0 那麼迭代公式的收斂階數爲p

2. 計算機算法

計算機使用二進制表示數字,由於有限的數字位數,無法精確地表示每一個數字,可能需要進行舍入

絕對誤差:|x - x^*|
相對誤差\left| \frac{x - x^*}{x^*} \right|

兩個非常接近的數字相減會帶來較大地誤差,通過分式上下同乘兩數相加來避免

9 - \sqrt{80} = \frac{1}{9 + \sqrt{80}}

一個數值計算過程是不穩定的,如果在這個過程中一個階段的誤差被下一個階段放大

3. 解線性方程組

Ax = b,先將A化成兩個簡單的上三角、下三角矩陣A = LU
Lz = b,得到z
Ux = z,得到原方程的解x

Doolittle分解

L_{ii} = 1,依次更新U的行,L的列

LDU分解

對Doolittle分解的U提取對角線元素,分解成U = DU'
A = LDU

Crout分解

U_{ii} = 1,依次更新L的列,U的行

Cholesky分解

A = L L^T
A需是實對稱正定矩陣

高斯消元法 with Scaled Row Pivoting

PA = LU
s_i = \max_{1 \le i \le n } |a_{ij}| = \max \{ |a_{i1}|, |a_{i2}|, \cdots, |a_{in}| \} 取每一行絕對值最大的數
|a_{ik}|/s_i最大的行i作爲第k次消元的pivot row

範數

矩陣A的範數
\infty範數:\max_{1 \le i \le n } \sum_{j=1}^{n}|a_{ij}| 絕對值行求和取最大
1範數:\max_{1 \le j \le n } \sum_{i=1}^{n}|a_{ij}| 絕對值列求和取最大
2範數:\sqrt{\rho(A^T A)} A^T A的譜半徑(最大特徵值)開平方

用迭代法解方程

Ax = b
Qx = (Q-A)x+b
The equation suggests an iterative process
Qx^{(k)} = (Q-A)x^{(k-1)}+b (k \ge 1)
x^{(k)} = (I-Q^{-1}A)x^{(k-1)}+Q^{-1}b

x = (I-Q^{-1}A)x+Q^{-1}b
x^{(k)} - x = (I-Q^{-1}A)(x^{(k-1)} - x)
||x^{(k)} - x|| \le ||I-Q^{-1}A|| \ ||x^{(k-1)} - x||
如果||I-Q^{-1}A|| < 1,則迭代法收斂

A = D-L-U

Richardson: Q = I, x^{k} = (I-A) x^{k-1}+ b
Modified Richardson: Q = \frac{1}{ \omega } I, x^{k} = (I-\omega A) x^{k-1}+\omega b = x^{k-1} + \omega (b - A x^{k-1})
Jacobi: Q = D
Gauss-Seidel: Q = D-L
SOR(successive over relaxation): Q = \frac{1}{\omega}(D-\omega L)

Consider a system
\left(\begin{matrix} 1 & 2 & -2 \\ 1 & 1 & 1 \\ 2 & 2 & 1 \end{matrix}\right) \left(\begin{matrix} x_1 \\ x_2 \\ x_3 \end{matrix}\right) = \left(\begin{matrix} 1 \\ 2 \\ 3 \end{matrix}\right)
discuss its convergence when using Jacobi and G-S methods.
Solution: decomposing the coefficient matrix such that A = D - L - U
Jacobi:
G_J = D^{-1}(L+U)
解特徵方程|\lambda I - G_J|得到特徵值\lambda_1 = \lambda_2 = \lambda_3 = 0
\rho(G_J) = 0 < 1, Jacobi方法收斂

Gauss-Seidel:
G_{G-S} = (D-L)^{-1}U
解特徵方程|\lambda I - G_{G-S}|得到特徵值\lambda_1 = 0, \lambda_{2,3} = 2
\rho(G_{G-S}) = 2 > 1, Gauss-Seidel方法不收斂

4. 函數逼近

多項式插值

給定一組點(x_0, y_0), \cdots, (x_n, y_n),找到一個插值多項式p(x)使得p(x_i) = y_i \ (i = 0, \cdots, n)
誤差項R_n(x) = f(x) - p_n(x) = \frac{f^{(n+1)}(\xi) }{(n+1)! } \omega_{n+1}(x), \ w_{n+1}(x) = \prod_{i=0}^{n}(x - x_i)
| R_n(x) | \le \frac{ M_{n+1 } } {(n+1)! } |\omega_{n+1} (x)|

拉格朗日插值法

l_i(x_j) = \begin{cases} 0, & i \ne j \\ 1, & i = j \end{cases}
p_n(x) = \sum_{i=0}^{n} l_i(x) y_i
l_i(x) = \prod_{j=0\\ j \ne i}^{n}\frac{x - x_j}{x_i - x_j}

牛頓插值法

f[x_0, \cdots, x_k] = \frac{f[x_0, \cdots, x_{k-1}] - f[x_{1}, \cdots, x_k]}{x_0 - x_k}
f(x) = N_n(x) + R_n(x)
N_n(x) = f(x_0) + (x - x_0)f[x_0, x_1] + (x - x_0)(x - x_1)f[x_0, x_1, x_2] + \cdots
\ \ \ \ \ \ \ \ \ \ \ \ \ \ + (x - x_0)(x - x_1) \cdots (x-x_{n-1})f[x_0, x_1, \cdots, x_n ]
R_n(x) = \omega_{n+1}(x) f[x, x_0, \cdots, x_n]

等間距:x_n = x_0 + n h
迎風差:\Delta f_k = f_{k+1} - f_k, \ \Delta^m f_k = \Delta^{m-1}f_{k+1} - \Delta^{m-1}f_k
f[x_i, \cdots, x_{i+m}] = \frac{1}{m! h^m} \Delta^m f_i

厄米特插值法

插值函數在給定點的函數值、導數都需與給定值相等
a \le x_0 \le \cdots \le x_n \le b, \ y_i = f(x_i), \ m_i = f'(x_i)
H(x_i) = y_i, H'(x_i) = m_i
2n+2個條件,可以確定一個2n+1階多項式

構造基函數
\begin{cases} \alpha_j(x_k) = \delta_{jk}, \alpha'_j(x_k) = 0 \\ \beta_j(x_k) = 0, \beta'_j(x_k) = \delta_{jk} \end{cases} \ \ \delta_{jk} = \begin{cases} 0, j \ne k \\ 1, j = k \end{cases} \ (j, k = 0, 1, \cdots, n)
H_{2n+1}(x) = \sum_{j = 0}^n [\alpha_j(x) y_j + \beta_j(x) m_j]

最小二乘逼近

\left(\begin{matrix} \sum_{i=1}^{m} x_i^0 & \sum_{i=1}^{m} x_i^1 & \cdots & \sum_{i=1}^{m} x_i^n \\ \sum_{i=1}^{m} x_i^1 & \sum_{i=1}^{m} x_i^2 & \cdots & \sum_{i=1}^{m} x_i^{n+1} \\ \vdots & \vdots & \ddots & \vdots \\ \sum_{i=1}^{m} x_i^n & \sum_{i=1}^{m} x_i^{n+1} & \cdots & \sum_{i=1}^{m} x_i^{2n} \\ \end{matrix}\right) \left(\begin{matrix} a_0 \\ a_1 \\ \vdots \\ a_n \end{matrix}\right) = \left(\begin{matrix} \sum_{i=1}^{m} y_i x_i^0 \\ \sum_{i=1}^{m} y_i x_i^1 \\ \vdots \\ \sum_{i=1}^{m} y_i x_i^n \\ \end{matrix}\right)

函數逼近
\left(\begin{matrix} \int_{a}^{b} x^0 dx & \int_{a}^{b} x^1 dx & \cdots & \int_{a}^{b} x^n dx \\ \int_{a}^{b} x^1 dx & \int_{a}^{b} x^2 dx & \cdots & \int_{a}^{b} x^{n+1} dx \\ \vdots & \vdots & \ddots & \vdots \\ \int_{a}^{b} x^n dx & \int_{a}^{b} x^{n+1} dx & \cdots & \int_{a}^{b} x^{2n} dx \\ \end{matrix}\right) \left(\begin{matrix} a_0 \\ a_1 \\ \vdots \\ a_n \end{matrix}\right) = \left(\begin{matrix} \int_{a}^{b} f(x) x^0 dx \\ \int_{a}^{b} f(x) x^1 dx \\ \vdots \\ \int_{a}^{b} f(x) x^n dx \\ \end{matrix}\right)

正交多項式

如果f(x), g(x) \in C[a, b]
(f(x), g(x)) = \int_a^b \rho(x)f(x)g(x) dx = 0 則稱f(x), g(x)在權函數\rho(x)下正交

勒讓德正交多項式

區間爲[-1, 1], \rho(x) = 1
P_0 (x) = 1, \ P_1 (x) = x, \ P_2 (x) = (3x^2 - 1)/2, P_3(x) = (5x^3 - 3x)/2, \cdots

切比雪夫正交多項式

區間爲[-1, 1], \rho(x) = \frac{1}{\sqrt{1-x^2 }}
T_n(x) = \cos(n \arccos x)
T_0(x) = 1, T_1(x) = x, T_2(x) = 2x^2-1, T_3(x) = 4x^3-3x, \cdots

5. 數值微分與積分

數值微分

f'(x) = \frac{1}{h}[f(x+h) - f(x)], E = -\frac{h}{2}f''(\xi )
f'(x) = \frac{1}{2h}[f(x+h) - f(x-h)], E = -\frac{h^2}{6}f''(\xi )

Richardson外推法

反覆將h, \frac{h}{2 }帶入泰勒展開式、組合,消去低階項

數值積分

Newton-Cotes

使用拉格朗日插值多項式近似函數,對多項式積分
\int_a^b f(x) dx \approx \sum_{i=0}^n A_i f(x_i), \ A_i = \int_a^b l_i(x) dx

Trapezoid

使用一次函數近似,計算梯形面積
\int_a^b f(x) dx \approx \frac{b-a}{2}[f(b) + f(a)]

Composite Trapezoid

將區間[a, b]n等分,h = \frac{b-a}{n}, x_i = a+ih, 計算n個梯形面積
\int_a^b f(x) dx \approx \frac{h}{2}[f(a) + 2\sum_{i=1}^{n-1}f(a+ih) + f(b)]
R = - \frac{1}{12}(b-a)h^2 f''(\xi)

Simpson

\int_a^b f(x) dx \approx \frac{b-a}{6}[f(a) + 4f(\frac{b-a}{2}) + f(b)]
R_S = - \frac{1}{ 90 }[\frac{b-a}{2} ]^5 f^{(4)}(\xi)

Composite Simpson

n等分區間[a, b]h = \frac{b-a}{n}, x_i = a+ih
\int_a^b f(x) dx \approx \frac{h}{3} \sum_{i=1}^{n/2} [f(x_{2i-2}) + 4f(x_{2i-1}) + f(x_{2i})]
R = - \frac{1}{180}(b-a)h^4 f^{(4)}(\xi)

Gaussian Quadrature

尋找最合適的點和係數,使得近似的精度最高
n+1個係數A_in+1個點x_i,可以確定精度最高2n+1階多項式

選擇的n個點爲n階正交多項式的零點
選擇正交多項式要根據權重函數w(x),區間[a, b],若區間不是[-1, 1],則需要作變量代換化成[-1, 1]

當權重函數w(x) = \frac{1}{\sqrt{1-x^2 }},選擇切比雪夫正交多項式
\int_{-1}^1 \frac{f(x)}{\sqrt{1-x^2}} dx = \frac{\pi}{n} \sum_{k=1}^n f(x_k), \ x_k = \cos \frac{2k-1}{2n} \pi \ (k = 1, 2, \cdots, n)

6. 非線性方程求根

Bisection Method

r = \lim_{n \to \infty} c_n, \ c_n = \frac{1}{2}(a_n + b_n), then
|r - c_n| \le \frac{1}{2^{n+1}}(b_0 - a_0)

|e_n| = \frac{1}{2} |e_n|
收斂階數:1

Newton Method

r = x_n + h
0 = f(r) \approx f(x_n) + hf'(x_n)
h = - \frac{f(x_n)}{f'(x_n)}
x_{n+1} = x_n + h = x_n - \frac{f(x_n)}{f'(x_n)}

|e_{n+1}| \approx C|e_n|^2
收斂階數:2

Secant Method

x_{n+1} = x_n - \frac{x_n - x_{n-1}}{f(x_n) - f(x_{n-1})} f(x_n)

使用\frac{f(x_n) - f(x_{n-1}) }{x_n - x_{n-1} }近似f'(x_n)

e_{n+1} = C e_n e_{n-1}
|e_{n+1}| \approx A|e_n|^{\frac{1+\sqrt{5}}{2}}
收斂階數:\frac{1+\sqrt{5}}{2}

7. 常微分方程的數值解法

在給定曲線上一個點的前提下,解一階常微分方程
不直接求原函數,而是求某個點x_i的近似函數值y(x_i)

局部截斷誤差:T(n) = O(h^{p+1}),則稱該方法是p階的

Euler’s Method

\frac{y_{n+1} - y_n}{x_{n+1} - x_n} = f(x_n, y_n)
y_{n+1} = y_n + f(x_n, y_n)(x_{n+1} - x_n) = y_n + hf(x_n, y_n)

p = 1, \text{order } 1

Trapezoidal Method

implicit Euler formula
\begin{cases} y_{n+1}^{(0)} = y_n + h f(x_n, y_n) \\ y_{n+1}^{(k+1)} = y_n + \frac{h}{2}[f(x_n, y_n) + f(x_{n+1}, y_{n+1}^{(k)})] \end{cases}
第二步採用迭代的方法

p = 2, \text{order } 2

Modified Euler Method

\begin{cases} \overline{y}_{n+1} = y_n + h f(x_n, y_n) \\ y_{n+1} = y_n + \frac{h}{2}[f(x_n, y_n) + f(x_{n+1}, \overline{y}_{n+1} )] \end{cases}
不用迭代

Runge-Kutta Methods

y_{n+1} = y_n + h \varphi(x_n, y_n, h)
\varphi(x_n, y_n, h) = \sum_{i=1}^r c_i K_i
K_1 = f(x_n, y_n)
K_i = f(x_n + \lambda_i h, y_n + h \sum_{j = 1}^{i-1} u_{ij} K_j), \ i = 2, 3, \cdots, r

上面的方式是單步(single-step methods)的,因爲y_{n+1}只依賴y_n

Adams methods

y_{n+k} = y_{n+k-1} + \sum_{i=0}^{k} \beta_i f_{n+i}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章