Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

2.2 直接三角分解

对应教材 2.2.1–2.2.5、定理 2.3–2.5、例 2–3、习题 4–8;对应老师第 4 讲 §二–§四。 主线:把“消元”写成“分解” A=LUA=LU,一次分解、反复使用;三对角结构再把 O(n3)O(n^3) 降到 O(n)O(n)。

2.2.1 Doolittle 分解与 Crout 分解

设 AA 非奇异,且前 n−1n-1 个顺序主子式不为零。Doolittle 分解是

A=LU, A=LU,

其中 LL 是单位下三角(对角元为 1),UU 是上三角。逐圈公式(教材式 2.12):

ukj=akj−∑s=1k−1lksusj(j=k,…,n),lik=aik−∑s=1k−1lisuskukk(i=k+1,…,n). u_{kj}=a_{kj}-\sum_{s=1}^{k-1}l_{ks}u_{sj}\quad(j=k,\dots,n), \qquad l_{ik}=\frac{a_{ik}-\sum_{s=1}^{k-1}l_{is}u_{sk}}{u_{kk}}\quad(i=k+1,\dots,n).

解方程组分两步:先解 Ly=bL\boldsymbol y=\boldsymbol b(前代),再解 Ux=yU\boldsymbol x=\boldsymbol y(回代)。

定理 2.3:n≥2n\ge2 阶矩阵 AA 有唯一 Doolittle 分解的充要条件是前 n−1n-1 个顺序主子式 Dk≠0 (k=1,…,n−1)D_k\ne0\ (k=1,\dots,n-1)。

证明要点:充分性由定理 2.1 的顺序消去得到 Pn−1⋯P1A=UP_{n-1}\cdots P_1A=U,取 L=P1−1⋯Pn−1−1L=P_1^{-1}\cdots P_{n-1}^{-1};必要性由 Ak=LkUkA_k=L_kU_k 得 Dk=u11⋯ukkD_k=u_{11}\cdots u_{kk},若某个 ukk=0u_{kk}=0 则分解不唯一。■\blacksquare

Crout 分解:A=LUA=LU,其中 LL 是下三角(对角元不一定是 1),UU 是单位上三角。教材给出推论:与 Doolittle 分解存在唯一性等价;两者只差一个对角缩放。

例 2(教材 2.2.1,四位十进制):方程组 {8.1x1+2.3x2−1.5x3=6.1,0.5x1−6.23x2+0.87x3=2.3,2.5x1+1.5x2+10.2x3=1.8. \begin{cases} 8.1x_1+2.3x_2-1.5x_3=6.1,\ 0.5x_1-6.23x_2+0.87x_3=2.3,\ 2.5x_1+1.5x_2+10.2x_3=1.8. \end{cases} Doolittle 分解后前代得 y1=6.1, y2≈1.923, y3≈0.1560y_1=6.1,\ y_2\approx1.923,\ y_3\approx0.1560,再回代得 xx。这个例子说明:分解本身不神秘,逐圈公式的顺序不能乱——每一步只让一个新未知数出现。

2.2.2 选主元的 Doolittle 分解

若某个 ukk=0u_{kk}=0 或相对很小,分解不能继续或误差会被放大。与列主元 Gauss 消去类似,在分解过程中选主元:第 kk 步在当前列的剩余行中选绝对值最大者,交换行,再继续分解。

定理 2.4:若 AA 非奇异,则存在置换矩阵 QQ,使 QA=LUQA=LU,其中 LL 单位下三角、UU 上三角。

证明要点:由定理 2.2,列主元消去可把 AA 化为上三角;把行交换矩阵 QkQ_k 与消元矩阵 PkP_k 合并,得到 QA=LUQ A=L U。■\blacksquare

实际实现时通常把 QQ 记录为一个排列向量,不显式构造矩阵;解方程组时对右端做同样的行交换。

2.2.3 带状矩阵的保带状分解

若 aij=0a_{ij}=0 当 i−j>ri-j\gt r 或 j−i>sj-i\gt s,称 AA 为上半带宽 ss、下半带宽 rr 的带状矩阵。

定理 2.5(保带状结构三角分解):设 AA 是上半带宽 ss、下半带宽 rr 的带状矩阵,且前 n−1n-1 个顺序主子式不为零;则 AA 有唯一 Doolittle 分解 A=LUA=LU,其中 LL 是下半带宽 rr 的单位下三角,UU 是上半带宽 ss 的上三角。

证明要点:由定理 2.3 有唯一分解;当 i−j>ri-j\gt r 时,aik=0 (k≤j)a_{ik}=0\ (k\le j),由逐圈公式推出 lij=0l_{ij}=0;同理 j−i>sj-i\gt s 时 uij=0u_{ij}=0。■\blacksquare

推论:同样条件下,AA 有唯一 Crout 分解,且保带宽。计算量:只需存 (r+s+1)n(r+s+1)n 个带内元素,分解与求解都是 O(n)O(n)。

2.2.4 追赶法(三对角方程组)

三对角方程组 aixi−1+bixi+cixi+1=di,i=1,…,n a_i x_{i-1}+b_i x_i+c_i x_{i+1}=d_i,\qquad i=1,\dots,n (a1=cn=0a_1=c_n=0)是 r=s=1r=s=1 的带状矩阵。用 Crout 分解可写成“追”和“赶”两步:

追(前代): c1′=c1b1,d1′=d1b1;deni=bi−aici−1′,ci′=cideni,di′=di−aidi−1′deni. c'_1=\frac{c_1}{b_1},\quad d'_1=\frac{d_1}{b_1}; \qquad den_i=b_i-a_i c'_{i-1},\quad c'_i=\frac{c_i}{den_i},\quad d'_i=\frac{d_i-a_i d'_{i-1}}{den_i}.

赶(回代): xn=dn′,xi=di′−ci′xi+1(i=n−1,…,1). x_n=d'_n,\qquad x_i=d'_i-c'_i x_{i+1}\quad(i=n-1,\dots,1).

计算量约 3n3n 次乘除法,即 O(n)O(n);不需要选主元的前提是 deni≠0den_i\ne0(如严格对角占优)。

例 3(教材 2.2.4):教材用五对角/三对角方程组演示追赶法,精确解为 (0.21,−0.52,1.2,0.82,−0.64)T(0.21,-0.52,1.2,0.82,-0.64)^{\mathrm T}。关键是:分解不产生填充,带外元素始终为零。

2.2.5 拟三对角方程组(教材有、课堂未展开)

拟三对角矩阵形如 A=(b1c1d1a2b2c2⋱⋱⋱an−1bn−1cn−1e1anbn), A=\begin{pmatrix} b_1&c_1&&&d_1\ a_2&b_2&c_2&&\ &\ddots&\ddots&\ddots&\ &&a_{n-1}&b_{n-1}&c_{n-1}\ e_1&&&a_n&b_n \end{pmatrix}, 即三对角外加右上角 d1d_1 与左下角 e1e_1。教材 2.2.5 给出把它分解为两个三对角矩阵乘积的方法,从而仍可用追赶法求解。课堂未展开,考试按老师范围;需要时按教材补读。

2.2.6 习题(教材习题 4–8)

2.4 · Doolittle 运算量(教材习题 4)

统计 Doolittle 分解法求解 nn 元线性方程组所需的乘除法次数。

参考答案

分解约 n3/3n^3/3 次,前代约 n2/2n^2/2 次,回代约 n2/2n^2/2 次;主导项 n3/3n^3/3。与高斯消去同阶,但一次分解可反复用于多个右端。

2.5 · 不选主元的 Doolittle(教材习题 5)

用不选主元的 Doolittle 分解求解教材习题 5 的方程组。

参考答案

按逐圈公式算 L,UL,U,前代得 yy,回代得 xx。若某步 ukk=0u_{kk}=0 或很小,说明不能直接分解,应改用选主元版本;本题数据下分解可进行,结果按四位十进制核对。

2.6 · 选主元的 Doolittle(教材习题 6)

用选主元的 Doolittle 分解求解教材习题 6 的方程组。

参考答案

第 kk 步在当前列剩余行中选绝对值最大者,交换行并记录排列;分解得 QA=LUQA=LU,对右端做同样行交换后前代/回代。与列主元 Gauss 消去等价,只是把消元信息存进了 LL。

2.7 · 带状存储下计算 Ax(教材习题 7)

带状矩阵的带内元素存在 (r+s+1)×n(r+s+1)\times n 的矩阵 CC 中,写出由 CC 计算 u=Ay\boldsymbol u=A\boldsymbol y 的公式。

参考答案

对每个 ii,只累加 j∈[max⁡(1,i−r),min⁡(n,i+s)]j\in[\max(1,i-r),\min(n,i+s)]:ui=∑jCr+1+i−j,j yju_i=\sum_j C_{r+1+i-j,j}\,y_j。带外元素不参与,故每行最多 r+s+1r+s+1 次乘法,总体 O((r+s)n)O((r+s)n)。

2.8 · 追赶法(教材习题 8)

用追赶法求解教材习题 8 的五元三对角方程组。

参考答案

按 2.2.4 的“追/赶”公式,先算 ci′,di′c'_i,d'_i,再从 x5x_5 回代。精确解为 (0.21,−0.52,1.2,0.82,−0.64)T(0.21,-0.52,1.2,0.82,-0.64)^{\mathrm T};计算量 O(n)O(n),不要写成 O(n3)O(n^3)。

覆盖核对

本节覆盖教材 2.2.1–2.2.5、定理 2.3–2.5 及推论、例 2–3、习题 4–8;老师第 4 讲 §二–§四。下一节:2.3 条件数与病态。