计算方法(上)

这里的笔记是对于上课内容的一个浓缩

Part 1

不动点迭代

  • 方法

如果\(g(r) = r\),那么称\(r\)\(g\)的一个不动点

我们称下面的方法为不动点迭代法:

猜测一个解\(x_0\),之后不断的进行迭代:\(x_{i+1} = g(x_i)\)

性质:对连续函数\(g\),如果\(\lim x_i\)收敛,那么其一定收敛于不动点

注意到\(g(r) = g(\lim x_i) = \lim g(x_i) = \lim x_{i+1} = r\)

  • 迭代的速率

对于这种迭代方法,记\(e_i\)为第\(i\)次迭代的误差,即\(e_i = |x_i - r|\)

如果\(S = \lim e_{i+1} / e_i < 1\),那么说该不动点迭代线性收敛,\(S\)为其收敛速度

如果\(g\)连续可导,\(r\)为不动点,\(S = |g'(r)| < 1\),那么对于足够接近\(r\)的猜测,不动点迭代法可以收敛到\(r\),收敛速度为\(S\)

证明:\((x_{i+1} - r) = g'(\xi_i) (x_i - r)\),当\(g'(x) \leq c< 1\)时,\(x\)\(r\)的距离一定在减小

  • 误差

如果计算\(f\)时有误差函数\(\epsilon g\),那么实际上我们在解方程\(f(r') + \epsilon g(r') = 0\)

求导并整理,可以得到\(\Delta r = r'-r \approx - \epsilon \frac{g(r)}{f'(r)}\)

Part 2

Lagrange Interpolation

  • 方法

给定\(n\)个点\((x_1,y_1),...,(x_n,y_n)\),求一个过这些点的多项式

根据代数基本定理,恰好过这\(n\)个点的,次数低于\(n\)的多项式至多有一个

我们可以给出其存在性:

定义\(L_k = A \prod_{i \neq k}(x - x_i)\),其中\(A = \prod_{i \neq k} (x_k - x_i)^{-1}\)

观察到\(L_k(x_k) = 1\),而对于其余的\(i \neq k\),有$ L_k(x_i) = 0$

\(L(x) = \sum y_i L_i(x)\)就得到了我们希望的多项式

  • 误差

对于插值出来的多项式\(P\),及待插值的\(n\)次可导函数\(f\),有

\(f(x) - P(x) = \frac{1}{n!} \prod (x- x_i) f^{(n)} (c)\)

Bernstein Polynomial

  • 方法

\(B_{n, i} (x) = \binom{n}{i} x^i (1-x)^{n-i}\),并且\(B_n(x) = \sum_{i=0}^n f(\frac{i}{n}) B_{n, i}(x), 0 \leq x \leq 1\)

那么,随着\(n\)增大,\(B_n(x)\)一致地趋近于\(f(x)\),或者说\(\lim_{n \to \infty} ||B_n(x) - f(x)||_{\infty} = 0\)

  • 分析

\(K_n(x) \sim B(n, x)\),那么\(Pr(K_n = i) = B_{n,i}(x)\)

因此,\(E[f(K_n/n)] = \sum_{i} f(\frac{i}{n}) Pr(K_n = i) = \sum_i f(\frac{i}{n}) B_{n,i}(x) = B_n(x)\)

我们只需要尝试证明\(E[f(K_n / n)]\)一致地趋近于\(f(x)\),这依赖于下面几个事实

  1. \(\lim_{n \to \infty} Pr(|K_n(x) / n - x| > \delta) = 0\) 一致成立(大数定理)
  2. \(\lim_{n \to \infty} Pr(|f(K_n(x) / n) - f(x)| > \delta) = 0\) 一致成立(由1及\(f\)一致连续)
  3. \(\lim_{n \to \infty} E[|f(K_n(x) / n) - f(x)|] = 0\)一致成立(由2)

更仔细地分析有:

\(|f(x) - E[f(K_n(x)/n)]| \leq ||f||_{\infty} / 2n \epsilon^2 + \sup_{|x-y| \leq \epsilon} |f(x) - f(y)|\)

  • 逼近定理

\(Weierstrass\)定理:对于连续函数\(f\),多项式可以任意地逼近

使用Bernstein多项式即可证明,但注意Bernstein并不是最佳的一致逼近多项式

Chebyshev Polynomial

  • 引入

现在先不妨假设函数定义在\([-1,1]\)上,我们希望选择\(x_1, ..., x_n\),使得 \[ \max_{x \in [-1,1]} (x-x_1)(x-x_2)...(x-x_n) \] 最小


这个问题已经被充分的解决了

答案是选择\(x_i = \cos (2i - 1) \pi / 2n\)时,上面的问题得到最小值\(2^{-(n-1)}\)

  • Chebyshev Polynomial

对于上面这个问题,我们选择上述点之后,实际上得到了一个多项式,我们称之为Chebyshev多项式,定义为 \[ T_n(x) = 2^{n-1}(x-x_1)(x-x_2)...(x-x_n), x_i = \cos (2i - 1) \pi / 2n \] 这个多项式有一个等价的定义,即\(T_n(x) = \cos (n \arccos x)\)(考虑多项式的次数以及零点)

考虑这两个等价的定义(主要是考虑三角函数的定义),Chebyshev多项式将满足一系列的性质:

  • \(|T_n(x)| \leq 1\)
  • \(T_n(x)\)的零点恰好为\(x_1, ..., x_n\)
  • \(T_n(x)\)是一个单增区间和单减区间交替的函数,并且交替\(n-1\)次,在\(\cos i \pi / n\)处进行交替,每次交替都会发生在\(\pm 1\)
  • \(T_{n+1}(x) = 2x T_n(x) - T_{n-1}(x)\)

其中的性质3可以用于证明开头提到的问题的结论,也被称为Chebyshev TH

(不妨取\(g(x)\)为使函数最小的多项式,为方便和\(T_n(x)\)比较,设\(G(x) = 2^{n-1}g(x)\),那么\(|G(x)|<1\)恒成立, 在\(T_n(x)\)\(n+1\)个极值点(取\(\pm 1\))上,\(T_n(x) - G(x)\)\(T_n(x)\)有相同的正负,从而\(T_n(x) - G(x)\)\(n\)个零点,这不可能)

Chebyshev 定理的另一种表述为:\(T_n(x)\)是首一多项式中\(||T_n(x)||_{\infty}\)最小的多项式

Chebyshev 多项式是多项式的一组正交基,在如下的内积下: \[ \langle f, g\rangle = \int_{-1}^1 f(x)g(x) \frac{d x}{\sqrt{1-x^2}} \]

Fourier Transform

省略

Part 3

Least Square Method

一般的,我们希望解决找到一个点\(x^*\)\(x^* \in \arg \min_x ||Ax - b||_2^2\)

此时,对该函数求导,\(\nabla||Ax-b||_2^2 = 2A^T A x - 2 A^T b\),一般就可以求出\(x\)

Linear system of equation

一般的线性方程组\(Ax = b\),我们可以使用高斯消元法来计算,大约需要\(O(n^3)\)运算

对于线性方程组\(Ax = b\),记\(e_b\)\(b\)的相对误差,\(e_x\)\(x\)的相对误差,我们称其条件数\(cond(A) = e_x / e_b\)

在矩阵\(A\)可逆的情况下,\(e_x = A^{-1} e_b\),那么 \[ cond(A) = \max_{e_b, b \neq 0} \frac{||A^{-1} e||/||A^{-1}b||}{||e||/||b||} = \max_{e \neq 0} \frac{||A^{-1} e||}{||e||} \max_{b \neq 0} \frac{||b||}{||A^{-1}b||} = ||A^{-1}|| * ||A|| \geq 1 \] 其中\(||\cdot||\)为任意的向量范数和其导出的矩阵范数

Norm

一般的,称由向量范数\(||\cdot||\)导出的矩阵范数\(||A|| := \max_{||x||=1} ||Ax||\)为(\(||\cdot||\)导出的)算子范数

算子范数有如下的性质:

相容性:\(||AB|| \leq ||A|| * ||B||\)

三角不等式:\(||A||-||B||\leq ||A + B|| \leq ||A|| + ||B||\)


以下是几个常见的矩阵算子范数:

\(||A||_1 = \max_{j} \sum_{i=1}^n |a_{i,j}|\),向量1-范数的导出范数,也称为列范数

\(||A||_{\infty} = \max_{i} \sum_{j=1}^n |a_{i,j}|\),向量\(\infty-\)范数的导出范数,也称为行范数

\(||A||_2 = \max_{||x||_2 \leq 1} \sqrt{x^T A^T A x} = \sqrt{\lambda_{max}(A^TA)}\),向量2-范数的导出范数


定义谱半径\(\rho(A):= \max\{ |\lambda_1|, ..., |\lambda_n|\}\)

\(\rho(A) < 1\)当且仅当\(\lim_{k \to \infty} A^k =0\)

对于实对称矩阵而言,\(\rho(A) = ||A||_2\)

Jacobi method & Gauss-Seide method

  • Jacobi method

对于线性方程组\(Ax = b\)

我们把\(A\)写为\(L+D+U\)的形式,其中\(L, D, U\)分别为下三角,对角,上三角阵

此时有\(Dx = b - (L+U)x\),因此我们进行迭代:\(x_{k+1} = D^{-1}(b - (L+U)x_k)\)

  • Gauss-Seidel method

对于上式的\((L+D+U)x = b\),有\((L+D)x = b -Ux\)

我们进行迭代:\(x_{k+1} = D^{-1}(b - Ux_k - Lx_{k+1})\)

注意到\(L\)是下三角阵,因此不会产生计算上的顺序问题

  • 分析

我们有如下的定理

如果\(A\)是严格对角占优的,那么\(A\)是可逆的,并且对于任何向量\(b\)和初始猜测\(x_0\),线性方程组\(Ax = b\)使用Jacobi迭代 / Gauss Seidel迭代会收敛到唯一解(即方程组的解)

为了证明上述定理,我们考虑一般性的迭代\(x_{k+1} = Ax_k + b\)

\(x^*\)是该迭代的一个不动点,那么有\(x_{k+1}-x^* = A(x_k - x^*) = A^k(x_0 -x^*)\)

至少当\(A^k \to 0\)时,不动点迭代是收敛的,而\(A^k \to 0\)\(\rho(A) < 1\)是等价的

因此,为了证明不动点迭代是收敛的,我们可以尝试证明\(\rho(A) < 1\)

也就是说,我们希望证明\(\rho(D^{-1}(L+U)) < 1\)以及\(\rho((L+D)^{-1} U) < 1\)


\(\rho(D^{-1}(L+U))\)考虑,设\(\lambda\)\(D^{-1}(L+U)\)的任意一个特征值,\(v\)为其特征向量

那么有\((L+U)v = \lambda Dv\),设\(||v||_{\infty} = 1\),且\(v_m\)最大,那么根据\((L+U) v = \lambda Dv\),考虑两边的第\(m\)个分量,得到\(|\lambda a_m| = \sum_{j \neq m} |a_{mj}| < |a_m|\),从而\(|\lambda| < 1\),进而有\(\rho(D^{-1}(L+U)) < 1\),另一个分析是类似的

Moore-Penrose Pseudoinverse

考虑方程\(Ax = b\)

\(A \in \mathbb{R}^{n \times m}(n > m)\)时,并且保证\(A\)满秩时,我们将方程\(Ax = b\)改写为\(A^T A x = A^T b\)

此时,\(A^T A\)仍然满秩

那么,我们可以写出\(x = (A^TA)^{-1} A^Tb\),这是一个pseudoinverse

Richardson iteration

  • 引入

根据\(Cayley-Hamilton\)定理,存在\(n\)次多项式\(p(A)\)使得\(p(A)A = I\)

这启发我们从多项式角度来迭代地求出\(A^{-1}\)

  • 方法

对于线性方程组\(Ax = b\)

\(x_0 = 0\)\(x_{k+1} = (I - \alpha A) x_k + \alpha b\)

  • 分析

\(\rho(I - \alpha A) < 1\)时收敛,由于\(I, \alpha A\)可交换,因此实际上等价于\(|1 - \alpha \lambda_{max}| < 1\)

下面我们来探讨为什么这等价于研究一个多项式

在线性方程组\(Ax = b\)中,实际上我们在寻找\(x = A^{-1}b\),即\(x = p(A)b\)

寻找\(p(x)\),等价于寻找\(q(x) = 1-xp(x)\)

假设\(x_k = p_k(A)b\),那么\(x_{k+1} = ((I-\alpha A)p_k(A) + \alpha)b\)

相当于\(p_{k+1}(x) = p_k(x)(1-\alpha x) + \alpha\),即\(1-q_{k+1}(x) = (1-q_k(x))(1 - \alpha x) + \alpha x\)

得到\(q_{k+1}(x) = q_k(x)(1-\alpha x)\)

通过归纳,可以证明我们在考虑多项式\(p_k(x) = (1-(1 - \alpha x)^k)/x\)

Chebyshev iteration

  • 方法

\(x_{k+1} = (I - \alpha_kA) x_k + \alpha_k b\)

  • 分析

定义\(e_k = x_k - x^*\),那么\(e_k = \prod(I-\alpha_i A) e_0\)

因此\(||e_k|| \leq ||\prod_i (I - \alpha_i A)|| *||e_0||\)

我们希望关于\(A\)的那一项系数尽可能小,此时运用Chebyshev多项式就有不错的效果

Conjugate gradients

  • Krylov 子空间

记Krylov子空间为:\(K_0 = \{0\}, K_i = span\{b, Ab, ..., A^{i-1} b\}\)

\(x_i = \arg \min_{x \in K_i} ||x - x_*||_A^2\),其中\(x_*\)满足\(Ax_* = b\),而\(||x||_A = \langle x, x \rangle_A = x Ax^T\),是由正定矩阵\(A\)定义出的内积导出的范数

  • 引理

如果\(\langle x, y \rangle_A = 0\),那么我们称\(x, y\)关于\(A\)共轭

\(v_i = x_i - x_{i-1}\),那么\(v_1, ..., v_n\)两两共轭

注意到对\(i < j\)\(\nabla ||x_j - x_*||_A^2 = 2 (Ax_j - b)\)\(K_j\)正交(\(x_j\)最小),从而与\(K_i\)正交

类似的\(A x_{j-1} - b\)\(K_i\)也正交,因此\(Av_j = (Ax_j - b) - (Ax_{j-1} - b)\)也与\(K_i\)正交,从而得到了我们希望的结论

\(K_k = span\{v_1, ..., v_k\}\)

由上面的结论就可以得出

\(r_i = b - Ax_i\)\(K_k = span\{v_1,...,v_{k-1}, r_{k-1}\}\)

注意到\(r_{i-1} \in K_i\),但是\(r_{i-1}\)\(K_{i-1}\)正交(根据\(x_{i-1}\)的定义以及梯度为0),因此\(K_k = span\{v_1,...,v_{k-1}, r_{k-1}\}\)

\(v_i = x_i - x_{i-1}\),那么\(v_i\)是关于\(v_{i-1}, r_{i-1}\)的函数

由于\(v_i \in K_i\),因此\(v_i\)可以用\(v_1, ..., v_{i-1}, r_{i-1}\)线性表出

不妨设\(v_i = c_0 r_{i-1} + \sum_{i=1}^{i-1} c_i v_{i-1}\),注意到\(r_{i-1}\)\(v_1,...,v_{i-1}\)正交,\(v_i\)之间共轭

再注意到\(Av_j \in K_{i-1}, \forall j \leq i-2\),因此\(r_{i-1}^TAv_j = 0\)。即\(r_{i-1}\)\(v_1,...,v_{i-2}\)共轭

考虑\(v_i^T r_{i-1} = c_0 ||r_{i-1}||_2^2\),得到\(c_0 = v_i^T r_{i-1} / ||r_{i-1}||_2^2\)

再考虑\(v_i^T A v_j = 0\),我们就能相应地解出\(c_1, ..., c_{i-1}\)

  • 误差分析

Power method

  • 介绍

让我们考虑怎么迭代地求出特征值以及特征向量

注意到,对于可对角矩阵\(A\),其存在\(n\)个线性无关的特征向量,设为\(v_1, ..., v_n\),对应的特征值为\(\lambda_1, ...\),并且\(|\lambda_1| \geq |\lambda_2| \geq ...\)

那么,如果\(x = \sum \alpha_i v_i\),则\(A^k x = \sum \lambda_i^k \alpha_i v_i = \lambda_1^k (\alpha_1 v_1 + \frac{\lambda_2^k}{\lambda_1^k} \alpha_2 v_2 + ...)\)

因此,当\(k\)足够大时,我们就会得到一个右边是一个\(\lambda_1\)的近似特征向量\(v_1'\)

通过最小二乘法,最小化\(||Av_1' - \lambda_1' v_1'||_2\)来得到\(\lambda_1'\),不难得到\(\lambda_1' = v_1'^TAv_1' / v_1'^Tv_1'\)

  • 分析

我们对近似得到的特征值进行分析

对实对称矩阵\(A\),假设近似特征向量\(x\)\(||x||_2 = 1\),并且\(\lambda\)满足\(||Ax - \lambda x||_2 < \epsilon\),那么\(\min |\lambda_i - \lambda| < \epsilon\)

\(||Ax - \lambda x||_2^2 = \sum_{i} |\alpha_i|^2 |\lambda_i - \lambda|^2 \geq \min |\lambda_i - \lambda|^2\)

这个定理告诉我们,我们得到的特征值是在所给特征向量下的比较好的近似

Inverse Power method

  • 介绍

注意到\((A-qI)^{-1}\)的特征值为\(\{\frac{1}{\lambda_i - q}\}\)

如果我们选择适合的参数\(q\),那么我们就能够得到相应的最大的\(\frac{1}{\lambda_i- q}\),进而得到\(\lambda_i\)

QR decompesition

  • 介绍

\(Q_0 = I\),而\(Q_i\)满足\(AQ_{i-1} = Q_i R_i(i \geq 1)\),其中\(Q_iR_i\)\(AQ_{i-1}\)\(QR\)分解

这样可以进行特征值的同时迭代