【数值分析】学习笔记(包含精简知识点和例题,知识点略不全面,适合考前突击)

数值分析


这门课是建模和研究的基础,真正学习主要是了解其原理与实现方法,需要的时候再去认真学习。

于是这里首先记录考试的公式定理,顺便记录了一些算法的原理和实现,方便查阅但不是很详细,一定要结合书本看。

参考书籍:《数值分析与算法》,清华大学出版社,喻文健;
参考网络课:《数值分析》东北大学,邵新慧;

当然可以根据自己的喜好选择书籍,和网络课,大同小异。


数值分析是啥?

数值分析是研究科学计算中各种数学问题求解的数值计算方法。
说白了,就是能运用在计算机上的各种数学问题的解法、算法。


误差、精度与计算机计算

误差分类

  • 模型误差:对实际问题建模产生的误差
  • 观测误差:测量误差

上面2个不可避免,非重点。

  • 截断误差(方法误差):采用的计算方法所产生的误差
    比如 通过四舍五入得到的近似值 ,采用无限项公式的某几项计算等
  • 舍入误差:计算机只能对有限位的数进行计算
    比如表示 π \pi π 2 \sqrt2 2 等无限位数字时,不能完全相等

这2个是本科目研究的重点

误差的概念

一般,设 x x x 为精确值 x ∗ x^* x 的一个近似值,记:
e = x ∗ − x e = x^*-x e=xx
e 为近似值 x x x绝对误差,简称误差
如果, ∣ e ∣ ⩽ ϵ |e| \leqslant \epsilon eϵ,称 ϵ \epsilon ϵ 为近似值 x x x绝对误差限

就是说,
x − ϵ ⩽ x ∗ ⩽ x + ϵ x-\epsilon \leqslant x^* \leqslant x + \epsilon xϵxx+ϵ
但是,它并不能真正反正出误差的影响,于是令: e r = ϵ x ∗ = x ∗ − x x ∗ e_r = \frac \epsilon {x^*} = \frac {x^*-x} {x^*} er=xϵ=xxx
e r e_r er 为近似值 x x x相对误差,由于 X ∗ X^* X 一般未知,所以取值为:
e r = ϵ x = x ∗ − x x e_r = \frac \epsilon {x} = \frac {x^*-x} {x} er=xϵ=xxx
于是它也有一个误差限, ϵ r = ϵ ∣ x ∣ \epsilon_r = \frac \epsilon {|x|} ϵr=xϵ 称为近似值 x x x相对误差限 ∣ e r ∣ ⩽ ϵ r |e_r| \leqslant \epsilon_r erϵr

**例:**设 x = 1.24 x = 1.24 x=1.24 是有精确值 x ∗ x^* x 经过四舍五入得到的近似值,
x x x 的绝对误差限和相对误差限。
解:已知, 1.235 ⩽ x ∗ ⩽ 1.245 1.235 \leqslant x^* \leqslant 1.245 1.235x1.245
所以, ϵ = 1.245 − 1.235 2 = 0.005 \epsilon = \frac {1.245-1.235} 2 = 0.005 ϵ=21.2451.235=0.005 ϵ r = 0.005 1.245 ≈ 0.4 % \epsilon_r = \frac {0.005} {1.245} \approx 0.4\% ϵr=1.2450.0050.4%

定理:一般地,凡是由精确值经过四舍五入得到的近似值,其绝对误差限等于该值末位的半个单位。
如上题 x x x 的末位为百分位,即0.01位,所以其 ϵ = 0.005 \epsilon = 0.005 ϵ=0.005 是它的一半。

有效数字与误差的关系

定义:设数 x 是数 x 的近似值,如果 x 的绝对误差限是他的某一数位的半个单位*,并且从 x 左起第一个非零数字到该数字共有 n 位,则称这 n 个数字为 x 的有效数字,也称 x 近似 X* 时具有 n 位有效数字。

要知道,任何数可写为标准浮点数形式:
x = ± 0. a 1 a 2 … a k × 1 0 m x = \pm 0.a_1a_2 \dots a_k \times 10^m x=±0.a1a2ak×10m
m 是整数, a k a_k ak 是 0 - 9 的数字, a 1 ≠ 0 a_1 \ne 0 a1=0

那么,有效数字与绝对误差与绝对误差限的关系
∣ x ∗ − x ∣ = e ⩽ ϵ ⩽ 1 2 × 1 0 m − n |x^*-x| = e \leqslant \epsilon \leqslant \frac 12 \times 10^{m-n} xx=eϵ21×10mn
m 是标准浮点数形式中的 m,n 是有效数字个数。

例:为使 x ∗ = 2 x^* = \sqrt2 x=2 的近似值的绝对误差小于 1 0 − 5 10^{-5} 105
问应取几位有效数字?
解:近似值 x 可写为:
x = ± 0. a 1 a 2 … a k × 10 x = \pm 0.a_1a_2 \dots a_k \times 10 x=±0.a1a2ak×10 a 1 ≠ 0 a_1 \ne 0 a1=0
1 2 × 1 0 1 − n ⩽ 1 0 − 5 \frac 12 \times 10^{1-n} \leqslant 10^{-5} 21×101n105
故取 n = 6 n=6 n=6 ,即要取6位有效数字
思路:已知绝对误差限 ϵ < 1 0 − 5 \epsilon < 10^{-5} ϵ<105 ,由 ϵ = ∣ x ∗ − x ∣ ⩽ 1 2 × 1 0 m − n \epsilon = |x^*-x| \leqslant \frac 12 \times 10^{m-n} ϵ=xx21×10mn,可知 1 2 × 1 0 1 − n ⩽ 1 0 − 5 \frac 12 \times 10^{1-n} \leqslant 10^{-5} 21×101n105,于是便
可求得 n

例: π \pi π 的近似值 3.14,3.141,3.15,
求他们的精确程度;他们每个位上的数字都起作用吗?
解:各近似值绝对误差为: ∣ π − 3.14 ∣ = 0.0015... , ∣ π − 3.141 ∣ = 0.0005... , ∣ p i − 3.15 ∣ = 0.0085... |\pi - 3.14 |= 0.0015..., |\pi - 3.141| = 0.0005... , |pi - 3.15| = 0.0085... π3.14=0.0015...π3.141=0.0005...pi3.15=0.0085...
所以,3.141最精确,3.15误差最大
各近似值分别写为: 3.14 = 0.314 × 10 , 3.141 = 0.3141 × 10 , 3.15 = 0.315 × 10 3.14 = 0.314 \times 10 , 3.141 = 0.3141 \times 10 ,3.15 = 0.315 \times 10 3.14=0.314×103.141=0.3141×103.15=0.315×10
∣ x ∗ − x ∣ ⩽ 1 2 × 1 0 m − n |x^*-x| \leqslant \frac 12 \times 10^{m-n} xx21×10mn
对3.14来说, 0.0015 ⩽ 1 2 × 1 0 1 − n 0.0015 \leqslant \frac1 2 \times 10^{1-n} 0.001521×101n 应取 n = 3
对3.141来说, 0.0005 ⩽ 1 2 × 1 0 1 − n 0.0005 \leqslant \frac1 2 \times 10^{1-n} 0.000521×101n 应取 n = 3
对3.15来说, 0.0085 ⩽ 1 2 × 1 0 1 − n 0.0085 \leqslant \frac1 2 \times 10^{1-n} 0.008521×101n 应取 n = 2
故3.14、3.141有3位有效数字,3.15有2位有效数字
思路:精确程度指绝对误差,数字作用指有效数字;已知绝对误差,利用定义和公式,可求得有效位数 n 与对应的绝对误差限

**拓展:**一般 m 已知,由公式可以看出,再知道 e ϵ \epsilon ϵ n 中的一个,就能求出其它。

有效数字与相对误差与相对误差限的关系:
若 x 有 n 位有效数字,则其相对误差限为: ∣ x ∗ − x ∣ x = e r ⩽ ϵ r ⩽ 1 2 a 1 × 1 0 1 − n \frac {|x^*-x|} x = e_r \leqslant \epsilon_r \leqslant \frac 1 {2a_1} \times 10^{1-n} xxx=erϵr2a11×101n
若 x 的相对误差限为: ϵ r ⩽ 1 2 ( a 1 + 1 ) × 1 0 1 − n \epsilon_r \leqslant \frac 1 {2(a_1+1)} \times 10^{1-n} ϵr2(a1+1)1×101n,则至少有 n 位有效数字。

敏感性(病态性)与数值稳定性

问题的敏感性(病态性):指输入数据的扰动对问题解的影响程度的大小。它是问题的属性,与算法无关。
如果解的相对变化远远超过输入数据的变化,则称这个问题是 敏感的 或者 病态的 ;反之,称这个问题是 不敏感的 或者 良态的

量化问题敏感程度的条件数,被定义为 $\rm {cond} = \frac {||问题的解的相对变化量||} {||输入数据的相对变化量||} $ ,其中 ∣ ∣ ⋅ ∣ ∣ ||\cdot|| 表示范数

算法的稳定性:指在计算过程中的扰动对问题解的影响程度。它是算法的属性,与问题无关。
在计算过程中,舍入误差或者小扰动不被放大或者放大不严重,则称算法是稳定的(具有数值稳定性);否则,称不稳定的(不具有算法稳定性)。

数值计算中的原则

设计算法的时候,为了避免放大误差与计算稳定,遵循以下原则:

  • 避免两个相近的数相减:会造成相对误差变大,有效数字减小
    • 解决策略:转换计算方法,如取对数、数学变换、利用其他公式,或计算机使用双倍字长运算
  • 在求和或差时由小到大运算:防止在数量级差距过大时,因计算机精度不够的计算方式舍去了小的数值
  • 避免绝对值太小的数作除数:可能会导致商的绝对误差放大
  • 注意化简计算程序:减少计算量
  • 选择数值稳定性好的算法:算法在计算舍入误差积累是可控制的,则称为数值稳定的

线性方程组的直接解法

线性方程组可以写为:

A x = b \mathbf A\mathbf x = \mathbf b Ax=b
A 是系数矩阵,x 是 n 维向量(解向量,变量),b 是 n 维向量(已知向量)。

A = a i j \mathbf A = a_{ij} A=aij i = 1 , … , m i=1,\dots, m i=1,,m , j = 1 , … , n j = 1,\dots,n j=1,,n
那么记在 a i j a_{ij} aij 位置上,第 k 次出现的数值 a i j ( k ) a_{ij}^{(k)} aij(k),同理有 b i ( k ) b_{i}^{(k)} bi(k)

当 m > n,称 超定方程组 ,一般无解,但可求出最小二乘解;
当 m < n,方程组一般有无穷多解,实际应用中常和约束条件一起构成约束优化问题;
当 m = n,方程组一般有唯一解,是本课程主要研究的情况

直接解法适用于:A 为低阶稠密矩阵的情况(低阶:阶数 n 较小;稠密:零元素较少)
其中较为有效的是 列主元消去法

顺序高斯(Gauss)消去法

原理:对增广矩阵 ( A , b ) (\mathbf A,\mathbf b) (A,b) 进行初等行变换,直到化成 阶梯矩阵 ,然后回代计算出解。

思路:假设在消去过程中主对角元素始终不为 0 ;
不断利用每行主对角元素消去下面同列的元素,逐渐使矩阵变成阶梯矩阵(上三角矩阵);
完成后回代求解。

优点:计算量较小,结果准确

缺点:主对角元素在消去过程中不能出现 0 的情况 ⇒ \Rightarrow 矩阵A的各界顺序主子式都不为零;
可能出现小数(主对角元素)作为除数,或者大数与小数加减的情况,即可能数值稳定性弱

列主元高斯消去法

原理:利用选择主元的技术,改善顺序高斯消去法。

思路:假设 A 为非奇异矩阵,在进行顺序高斯消元之前,先在当前主元所在列,从当前行及其下方的元素中选出最大的元素( ∣ a k k ( k ) ∣ = max ⁡ k ≤ i ≤ n ∣ a i k ( k ) ∣ |a_{kk}^{(k)}| = \max \limits_{k \le i \le n} |a_{ik}^{(k)}| akk(k)=kinmaxaik(k)),交换当前行与最大元素所在行的位置,从而确保主元不等于零,且不会太小。

优点:让高斯消元法遇到主元素为 0 的时候能够继续;
同时也为了减轻当主元是小数时,作为除数带来的误差放大;
前提条件比顺序高斯消去法宽松。

缺点:要求 ∣ A ∣ ≠ 0 |\mathbf A| \ne 0 A=0

矩阵三角分解法(LU分解)

原理(LU分步分解法)

在高斯消元法中,一直使用 初等行变换 进行消元,而根据线性代数的知识我知道,初等行变换等价于左乘一系列 初等矩阵 。于是可利用其将原矩阵 A 分解:
A ( n ) = L n − 1 L n − 2 … L 1 A ( 1 ) ; ⇒ A ( 1 ) = L 1 − 1 L 2 − 1 … L n − 1 − 1 A ( n ) ⇒ A = L U \begin{aligned} &\mathbf A^{(n)} = \mathbf L_{n-1}\mathbf L_{n-2} \dots \mathbf L_1A^{(1)};\\ \Rightarrow& \mathbf A^{(1)} = \mathbf L_1^{-1}\mathbf L_2^{-1} \dots \mathbf L_{n-1}^{-1} \mathbf A^{(n)}\\ \Rightarrow& \mathbf A = \mathbf L\mathbf U \end{aligned} A(n)=Ln1Ln2L1A(1);A(1)=L11L21Ln11A(n)A=LU
其中,左乘的 单位下三角矩阵(主对角线为1,上三角为0;单位上三角矩阵同理),都能被求出来。其中第 k 个初等矩阵为:
L k = [ 1 ⋱ 1 − l k + 1 k 1 ⋮ ⋱ − l n k 1 ] , k = 1 , 2 , … , n − 1 \mathbf L_k = \begin{bmatrix} 1 & \quad & \quad & \quad & \quad & \quad \\ \quad & \ddots & \quad & \quad & \quad & \quad \\ \quad & \quad & 1 & \quad & \quad & \quad \\ \quad & \quad & -l_{k+1k} & 1 & \quad & \quad \\ \quad & \quad & \vdots & \quad & \ddots & \quad \\ \quad & \quad & -l_{nk} & \quad & \quad & 1 \\ \end{bmatrix} \quad ,k = 1,2,\dots,n-1 Lk=11lk+1klnk11,k=1,2,,n1
于是,
L = L 1 − 1 L 2 − 1 … L n − 1 − 1 U = A ( n ) \mathbf L =\mathbf L_1^{-1}\mathbf L_2^{-1} \dots \mathbf L_{n-1}^{-1} \\ \mathbf U = \mathbf A^{(n)} L=L11L21Ln11U=A(n)
可见,矩阵 L 是个 单位下三角矩阵 ,U 是个 上三角矩阵

直接LU分解法(三角分解,Doolittle分解法)

定理 :设n阶方阵A的各阶顺序主子式不为零,则存在唯一的下三矩阵L和上三角矩阵U,使 A=LU。

故,可以放心,对于各阶顺序主子式不为零的n阶方阵A,分步求L、U矩阵 与 直接求出L、U矩阵结果相同,后者更快捷。

思路

  1. 计算顺序:先计算 U 矩阵的第一行,在计算 L 矩阵的第一列,再计算 U 的一行,再计算 L 的一列…直到计算到 u n n u_{nn} unn
  2. 在计算LU矩阵某位置的元素时,都是根据同一位置的系数矩阵的元素与分解矩阵的乘积规则 a i j = l i u j a_{ij} = l_iu_j aij=liuj 得到的。
  3. 数据存放的时候,可以发现 L 与 U 矩阵正好可以存在原 A 矩阵中,不需要另外开辟存储空间
  4. 回代:先回代 L 矩阵计算出 B ( n ) \mathbf B^{(n)} B(n),再结合 B ( n ) \mathbf B^{(n)} B(n) 与 U 矩阵计算出 X

对于系数矩阵 A,使用矩阵三角分解的 Doolittle 分解法,设:
[ a 11 a 12 … a 1 n a 21 a 22 … a 2 n ⋮ ⋮ ⋮ a n 1 a n 2 … a n n ] = [ 1 l 21 1 l 31 l 32 1 ⋮ ⋮ ⋮ ⋱ l n 1 l n 2 l n 3 … 1 ] [ u 11 u 12 … u 1 n u 22 … u 2 n ⋱ ⋮ u n n ] \begin{bmatrix} a_{11} & a_{12} & \dots & a_{1n} \\ a_{21} & a_{22} & \dots & a_{2n} \\ \vdots & \vdots & & \vdots \\ a_{n1} & a_{n2} & \dots & a_{nn} \\ \end{bmatrix} = \begin{bmatrix} 1 & \quad & \quad & \quad & \quad \\ l_{21} & 1 & \quad & \quad & \quad \\ l_{31} & l_{32} & 1 & \quad & \quad \\ \vdots & \vdots & \vdots & \ddots & \quad \\ l_{n1} & l_{n2} & l_{n3} & \dots & 1 \\ \end{bmatrix} \begin{bmatrix} u_{11} & u_{12} & \dots & u_{1n} \\ & u_{22} & \dots & u_{2n} \\ & & \ddots & \vdots \\ & & & u_{nn} \\ \end{bmatrix} a11a21an1a12a22an2a1na2nann=1l21l31ln11l32ln21ln31u11u12u22u1nu2nunn

则,计算方法为:

u 1 j = a 1 j j = 1 , 2 , … , n l i 1 = a i 1 ÷ u 11 i = 2 , 3 , … , n 对 k = 2 , 3 , … , n , 有 u k j = a k j − ∑ m = 1 k − 1 l k m u m j j = k , k + 1 , … , n l i k = ( a i k − ∑ m = 1 k − 1 l i m u m k ) ÷ u k k i = k + 1 , k + 2 , … , n \begin{aligned} & u_{1j} = a_{1j} \quad j = 1,2,\dots,n \\ & l_{i1} = a_{i1} \div u_{11} \quad i = 2,3,\dots,n \\ & 对 k=2,3,\dots,n,有 \\ & u_{kj} = a_{kj} - \sum \limits_{m=1}^{k-1} l_{km} u_{mj} \quad j = k,k+1,\dots,n \\ & l_{ik} = (a_{ik} - \sum \limits_{m=1}^{k-1} l_{im} u_{mk}) \div u_{kk} \quad i=k+1,k+2,\dots,n \end{aligned} u1j=a1jj=1,2,,nli1=ai1÷u11i=2,3,,nk=2,3,,nukj=akjm=1k1lkmumjj=k,k+1,,nlik=(aikm=1k1limumk)÷ukki=k+1,k+2,,n
回代:由
[ 1 l 21 1 l 31 l 32 1 ⋮ ⋮ ⋮ ⋱ l n 1 l n 2 l n 3 … 1 ] [ y 1 y 2 y 3 ⋮ y n ] = [ b 1 b 2 b 3 ⋮ b n ] [ u 11 u 12 … u 1 n u 22 … u 2 n ⋱ ⋮ u n n ] [ x 1 x 2 ⋮ x n ] = [ y 1 y 2 ⋮ y n ] \begin{bmatrix} 1 & \quad & \quad & \quad & \quad \\ l_{21} & 1 & \quad & \quad & \quad \\ l_{31} & l_{32} & 1 & \quad & \quad \\ \vdots & \vdots & \vdots & \ddots & \quad \\ l_{n1} & l_{n2} & l_{n3} & \dots & 1 \\ \end{bmatrix} \begin{bmatrix} y_1 \\ y_2 \\ y_3 \\ \vdots \\ y_n \end{bmatrix}= \begin{bmatrix} b_1 \\ b_2 \\ b_3 \\ \vdots \\ b_n \end{bmatrix} \\ \begin{bmatrix} u_{11} & u_{12} & \dots & u_{1n} \\ & u_{22} & \dots & u_{2n} \\ & & \ddots & \vdots \\ & & & u_{nn} \\ \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{bmatrix}= \begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_n \end{bmatrix} 1l21l31ln11l32ln21ln31y1y2y3yn=b1b2b3bnu11u12u22u1nu2nunnx1x2xn=y1y2yn

y 1 = b 1 y k = b k − ∑ i = 1 k − 1 l k i y i k = 2 , 3 , … , n x n = y n ÷ u n n x i = ( y i − ∑ j = i + 1 n u i j x j ) ÷ u i i i = n − 1 , n − 2 , … , 1 \begin{aligned} & y_1 = b_1 \\ & y_k = b_k - \sum \limits_{i=1}^{k-1} l_{ki} y_i \quad k = 2,3,\dots,n \\ & x_n = y_n \div u_{nn} \\ & x_i = (y_i - \sum \limits_{j=i+1}^n u_{ij} x_j) \div u_{ii} \quad i=n-1,n-2,\dots,1 \end{aligned} y1=b1yk=bki=1k1lkiyik=2,3,,nxn=yn÷unnxi=(yij=i+1nuijxj)÷uiii=n1,n2,,1

优点:它与高斯消去法的计算量基本相同,但是在等式右边的项不同的方程组求解中,可以大大节省计算量。

:使用三角分解法求解方程组 { x 1 + 2 x 2 − 3 x 3 = 1 2 x 1 − x 2 + 3 x 3 = 5 3 x 1 − 2 x 2 + 2 x 3 = 1 \left \lbrace \begin{matrix} x_1+2x_2-3x_3=1 \\ 2x_1-x_2+3x_3=5 \\ 3x_1-2x_2+2x_3=1 \end{matrix} \right. x1+2x23x3=12x1x2+3x3=53x12x2+2x3=1

思路:系数矩阵为 A = [ 1 2 − 3 2 − 1 3 3 − 2 2 ] \mathbf A = \begin{bmatrix} 1 & 2 & -3 \\ 2 & -1 & 3 \\ 3 & -2 & 2 \\ \end{bmatrix} A=123212332

首先根据 u 1 j = a 1 j u_{1j} = a_{1j} u1j=a1j 写出 U 的第一行 [ 1 2 − 3 ] \begin{bmatrix} 1 & 2 & -3 \\ & & \\ & & \\ \end{bmatrix} 123,再根据 l i 1 = a i 1 l_{i1} = a_{i1} li1=ai1 写出 L 的第一列 [ 1 2 − 3 2 3 ] \begin{bmatrix} 1 & 2 & -3 \\ 2 & & \\ 3 & & \\ \end{bmatrix} 12323

然后根据 A = L U \mathbf A = \mathbf L \mathbf U A=LU,先计算 U 的行
a 22 = l 21 u 12 + l 22 u 22 + l 23 u 32 − 1 = 2 × 2 + 1 × u 22 + 0 × 0 u 22 = − 5 a_{22} = l_{21}u_{12} + l_{22}u_{22} + l_{23}u_{32} \\ -1 = 2 \times 2 + 1 \times u_{22} + 0 \times 0 \\ u_{22} = -5 a22=l21u12+l22u22+l23u321=2×2+1×u22+0×0u22=5
同理,得 u 23 = 9 u_{23} = 9 u23=9
再计算 L 的列
a 32 = l 31 u 12 + l 32 u 22 + l 33 u 32 − 2 = 3 × 2 + l 32 × − 5 + 1 × 0 l 32 = 8 5 a_{32} = l_{31}u_{12} + l_{32}u_{22} + l_{33}u_{32} \\ -2 = 3 \times 2 + l_{32} \times -5 + 1 \times 0 \\ l_{32} = \frac 85 a32=l31u12+l32u22+l33u322=3×2+l32×5+1×0l32=58
这样 L 矩阵就求解完了, [ 1 2 − 3 2 − 5 9 3 8 5 ] \begin{bmatrix} 1 & 2 & -3 \\ 2 & -5 & 9 \\ 3 & \frac 85 & \\ \end{bmatrix} 123255839

再继续计算 U 的行,得 u 33 = − 17 5 u_{33} = \frac {-17}5 u33=517

于是 [ 1 2 − 3 2 − 5 9 3 8 5 − 17 5 ] \begin{bmatrix} 1 & 2 & -3 \\ 2 & -5 & 9 \\ 3 & \frac 85 & \frac {-17}5 \\ \end{bmatrix} 123255839517 ,即 L = [ 1 2 1 3 8 5 1 ] U = [ 1 2 − 3 − 5 9 − 17 5 ] \mathbf L = \begin{bmatrix} 1 & & \\ 2 & 1 & \\ 3 & \frac 85 & 1 \\ \end{bmatrix} \quad \mathbf U = \begin{bmatrix} 1 & 2 & -3 \\ & -5 & 9 \\ & & - \frac {17}5 \\ \end{bmatrix} L=1231581U=12539517

开始回代,先解 [ 1 2 1 3 8 5 1 ] [ y 1 y 2 y 3 ] = [ 1 5 1 ] \begin{bmatrix} 1 & & \\ 2 & 1 & \\ 3 & \frac 85 & 1 \\ \end{bmatrix} \begin{bmatrix} y_1 \\ y_2 \\ y_3 \end{bmatrix} = \begin{bmatrix} 1 \\ 5 \\ 1 \end{bmatrix} 1231581y1y2y3=151,得 [ y 1 y 2 y 3 ] = [ 1 3 − 34 5 ] \begin{bmatrix} y_1 \\ y_2 \\ y_3 \end{bmatrix} = \begin{bmatrix} 1 \\ 3 \\ - \frac {34}5 \end{bmatrix} y1y2y3=13534

再解 [ 1 2 − 3 − 5 9 − 17 5 ] [ x 1 x 2 x 3 ] = [ 1 3 − 34 5 ] \begin{bmatrix} 1 & 2 & -3 \\ & -5 & 9 \\ & & -\frac {17}5 \\ \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix} = \begin{bmatrix} 1 \\ 3 \\ - \frac {34}5 \end{bmatrix} 12539517x1x2x3=13534,得 [ x 1 x 2 x 3 ] = [ 1 3 2 ] \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix} = \begin{bmatrix} 1 \\ 3 \\ 2 \end{bmatrix} x1x2x3=132

平方根法(正定矩阵的 Cholesky 分解法)

定理 :设 A \mathbf A A 为实对称正定矩阵,则存在唯一的非奇异下三角矩阵 L \mathbf L L,使得 A = L L T \mathbf A = \mathbf L \mathbf {L^T} A=LLT,且 L \mathbf L L 的主对角元素均大于零。

于是可将 A x = b \mathbf A \mathbf x = \mathbf b Ax=b 转化为 L y = b \mathbf L \mathbf y = \mathbf b Ly=b L T x = y \mathbf {L^T} \mathbf x = \mathbf y LTx=y,称平方根法,或 Cholesky 分解法。且 L 矩阵的主对角元素取正值

若记 L = ( l i j ) \mathbf L = (l_{ij}) L=(lij) ,则对 k = 1 , 2 , . . . , n k = 1,2,...,n k=1,2,...,n 有:
l k k = ( a k k − ∑ m = 1 k − 1 l k m 2 ) 1 2 = a k k − ∑ m = 1 k − 1 l k m 2 l i k = ( a i k − ∑ m = 1 k − 1 l i m l k m ) / l k k i = k + 1 , … , n \begin{aligned} & l_{kk} = (a_{kk}-\sum \limits_{m=1}^{k-1} l_{km}^2)^{\frac 12} = \sqrt {a_{kk}-\sum \limits_{m=1}^{k-1} l_{km}^2} \\ & l_{ik} = (a_{ik}-\sum \limits_{m=1}^{k-1} l_{im} l_{km}) / l_{kk} \quad i = k+1,\dots,n \end{aligned} lkk=(akkm=1k1lkm2)21=akkm=1k1lkm2 lik=(aikm=1k1limlkm)/lkki=k+1,,n

思路

  1. 计算顺序:先求 L L L 的第一列,即可知道 L T L^T LT 的第一行,然后再求解 L L L 的第二列,….,以此类推
  2. 在计算分解矩阵某位置的元素时,是根据同一位置的系数矩阵的元素与分解矩阵的乘积规则 a i j = l i l j ′ a_{ij} = l_il'_j aij=lilj 得到的
  3. 数据存储:各值可以存放在原矩阵对应位置,不必开辟新的存储空间

优缺点

  1. 对于正定的系数矩阵方程组,计算时由于正定矩阵的对称性,减少了一半计算量与储存量
  2. 满足实对称正定的矩阵,本身就能够完成求解,具有数值稳定性,不需要选主元

:解线性方程组 { 4 x 1 + 2 x 2 + 4 x 3 = 4 2 x 1 + 10 x 2 − x 3 = 17 4 x 1 − x 2 + 6 x 3 = 0 \left \lbrace \begin{matrix} 4x_1+2x_2+4x_3 = 4 \\ 2x_1+10x_2-x_3 = 17 \\ 4x_1-x_2+6x_3 = 0 \end{matrix} \right. 4x1+2x2+4x3=42x1+10x2x3=174x1x2+6x3=0

思路:系数矩阵 A = [ 4 2 4 2 10 − 1 4 − 1 6 ] \mathbf A = \begin{bmatrix} 4 & 2 & 4 \\ 2 & 10 & -1 \\ 4 & -1 & 6 \end{bmatrix} A=4242101416 ,是一个对称正定矩阵,故唯一存在下三角矩阵 L ,使

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值