LU分解法解线性方程组
题目描述
给定一个线性方程组 \(A\mathbf{x} = \mathbf{b}\),其中 \(A\) 是一个 \(n \times n\) 的可逆方阵,\(\mathbf{b}\) 是已知向量。要求使用LU分解法求解未知向量 \(\mathbf{x}\)。LU分解将矩阵 \(A\) 分解为一个下三角矩阵 \(L\) 和一个上三角矩阵 \(U\) 的乘积,即 \(A = LU\),然后通过前向替换和后向替换高效求解。
解题过程
- LU分解原理
- 目标:将 \(A\) 分解为 \(L\) 和 \(U\),其中 \(L\) 是主对角线为1的下三角矩阵,\(U\) 是上三角矩阵。
- 分解依据:通过高斯消元法(不进行行交换)将 \(A\) 化为上三角矩阵 \(U\),消元过程中的乘数构成 \(L\) 的严格下三角部分。
- 示例矩阵:
\[ A = \begin{pmatrix} 2 & 1 & -1 \\ -3 & -1 & 2 \\ -2 & 1 & 2 \end{pmatrix} \]
- 分解步骤
- 步骤1:消去第一列
消去 \(a_{21}\) 和 \(a_{31}\):- 乘数 \(l_{21} = \frac{-3}{2} = -1.5\),将第一行乘以 \(-l_{21}\) 加到第二行:
- 步骤1:消去第一列
\[ \text{新第二行} = [-3, -1, 2] - (-1.5) \times [2, 1, -1] = [0, 0.5, 0.5] \]
- 乘数 $ l_{31} = \frac{-2}{2} = -1 $,将第一行乘以 $ -l_{31} $ 加到第三行:
\[ \text{新第三行} = [-2, 1, 2] - (-1) \times [2, 1, -1] = [0, 2, 1] \]
此时矩阵变为:
\[ A^{(1)} = \begin{pmatrix} 2 & 1 & -1 \\ 0 & 0.5 & 0.5 \\ 0 & 2 & 1 \end{pmatrix} \]
- 步骤2:消去第二列
消去 \(a_{32}\):- 乘数 \(l_{32} = \frac{2}{0.5} = 4\),将第二行乘以 \(-l_{32}\) 加到第三行:
\[ \text{新第三行} = [0, 2, 1] - 4 \times [0, 0.5, 0.5] = [0, 0, -1] \]
得到上三角矩阵 $ U $:
\[ U = \begin{pmatrix} 2 & 1 & -1 \\ 0 & 0.5 & 0.5 \\ 0 & 0 & -1 \end{pmatrix} \]
- 下三角矩阵 $ L $ 由乘数构成:
\[ L = \begin{pmatrix} 1 & 0 & 0 \\ -1.5 & 1 & 0 \\ -1 & 4 & 1 \end{pmatrix} \]
验证:$ LU = A $。
- 求解线性方程组
原方程 \(A\mathbf{x} = \mathbf{b}\) 化为 \(LU\mathbf{x} = \mathbf{b}\)。令 \(U\mathbf{x} = \mathbf{y}\),分两步求解:- 前向替换(解 \(L\mathbf{y} = \mathbf{b}\))
假设 \(\mathbf{b} = [8, -11, -3]^T\),解下三角系统:
- 前向替换(解 \(L\mathbf{y} = \mathbf{b}\))
\[ \begin{cases} y_1 = 8 \\ -1.5y_1 + y_2 = -11 \Rightarrow y_2 = -11 + 1.5 \times 8 = 1 \\ -y_1 + 4y_2 + y_3 = -3 \Rightarrow y_3 = -3 + 8 - 4 \times 1 = 1 \end{cases} \]
得到 $ \mathbf{y} = [8, 1, 1]^T $。
- 后向替换(解 \(U\mathbf{x} = \mathbf{y}\))
解上三角系统:
\[ \begin{cases} 2x_1 + x_2 - x_3 = 8 \\ 0.5x_2 + 0.5x_3 = 1 \\ -x_3 = 1 \Rightarrow x_3 = -1 \end{cases} \]
代入第二式: $ 0.5x_2 + 0.5 \times (-1) = 1 \Rightarrow x_2 = 3 $
代入第一式: $ 2x_1 + 3 - (-1) = 8 \Rightarrow x_1 = 2 $
最终解: $ \mathbf{x} = [2, 3, -1]^T $。
- 算法总结
- LU分解避免了高斯消元中重复处理 \(\mathbf{b}\) 的步骤,适用于多次求解同一系数矩阵 \(A\) 不同 \(\mathbf{b}\) 的问题。
- 若分解过程中出现主元为0,需结合选主元(如PLU分解)保证稳定性。