方程组的迭代&直接求解
一、迭代算法
理论基础-不动点理论
x = ϕ ( x ) , x=\phi(x), x=ϕ(x),这样一种映射 ϕ ( x ) \phi(x) ϕ(x)存在使得 x x x的函数值等于其本身,这样的点看起来像是不动点
Lipzchi条件 ∣ ∣ x k + 1 − x k ∣ ∣ ≤ L ∣ ∣ ϕ ( x k + 1 ) − ϕ ( x k ) ∣ ∣ ||x_{k+1}-x_k||\leq L||\phi(x_{k+1})-\phi(x_k)|| ∣∣xk+1−xk∣∣≤L∣∣ϕ(xk+1)−ϕ(xk)∣∣
满足该条件的迭代公式构造的点列收敛
1.一元变量函数的迭代求解
简单迭代
构造迭代函数 x = ϕ ( x ) x=\phi(x) x=ϕ(x)
各种魔改的牛顿迭代
将 f ( x ) = 0 f(x)=0 f(x)=0线性化 L ( x ) = 0 L(x)=0 L(x)=0, L ( x ) = f ( x ) + f ′ ( x ) ( x − x ∗ ) = 0 L(x)=f(x)+f'(x)(x-x*)=0 L(x)=f(x)+f′(x)(x−x∗)=0,构造迭代函数 x k + 1 = x k − f ( x ) / f ′ ( x ) x^{k+1}~=x^k-f(x)/f'(x) xk+1 =xk−f(x)/f′(x)
2.大型方程组(多元变量)的迭代求解
大型方程组构成 A x = b Ax=b Ax=b 的 m ∗ n m*n m∗n 阶矩阵,若使用直接求解法,例如经典而优美的克莱姆法则,虽然可以得到准确解 X ∗ X* X∗,但其计算量太高,不适用于大型矩阵的求解;采用迭代法不断逼近真实解 X ∗ X* X∗
朴素而经典-Jacobi迭代
改进版本的-Seidel迭代
SOR迭代(松弛迭代)
收敛条件
1个充要条件,3个判别条件:
迭代矩阵B的谱半径小于1,
ρ ( B ) < 1 \rho(B)<1 ρ(B)<1
d e t ( λ I − B ) = 0 det(\lambda I - B)=0 det(λI−B)=0 解的最大值 λ m a x \lambda max λmax
范数
衡量某种距离 ∣ ∣ ⋅ ∣ ∣ ||·|| ∣∣⋅∣∣, 向量范数与矩阵范数不同
常见向量范数有: 1范数,2范数,p范数,无穷范数
常见矩阵范数有: 1范数(列范数),无穷范数(行范数),F范数(元素平方和),2范数(乘转置矩阵求特征值)
现代大规模矩阵迭代求解方法
参考资料 Yosse Sparse Matrix iterative method
比较常用的是Krylov空间方法
GMRes (Generalization minimize residual),CG (conjugate gradient),…
先看看对 A x = b Ax = b Ax=b 的理解
-
朴素线性方程组
a 11 X 1 + a 12 X 2 + a 13 X 3 + . . . + a 1 n X n = 0 a_{11}X_1+a_{12}X_2+a_{13}X_3+...+a_{1n}X_n = 0 a11X1+a12X2+a13X3+...+a1nXn=0
a 21 X 1 + a 22 X 2 + a 23 X 3 + . . .