LU分解法解线性方程组
字数 2570 2025-10-25 18:57:06

LU分解法解线性方程组

题目描述
给定一个线性方程组 \(A\mathbf{x} = \mathbf{b}\),其中 \(A\) 是一个 \(n \times n\) 的系数矩阵,\(\mathbf{b}\) 是常数向量。要求通过LU分解法求解未知向量 \(\mathbf{x}\)。LU分解的核心是将矩阵 \(A\) 分解为一个下三角矩阵 \(L\) 和一个上三角矩阵 \(U\) 的乘积,即 \(A = LU\),然后通过两次回代求解方程组。


解题过程

步骤1:LU分解的原理

LU分解要求矩阵 \(A\) 可分解为 \(L\)\(U\),其中:

  • \(L\) 是下三角矩阵(对角线元素全为1),
  • \(U\) 是上三角矩阵。
    分解后,原方程组变为:

\[L(U\mathbf{x}) = \mathbf{b} \]

\(U\mathbf{x} = \mathbf{y}\),则问题拆解为两步:

  1. \(L\mathbf{y} = \mathbf{b}\)(前向代入),
  2. \(U\mathbf{x} = \mathbf{y}\)(回代)。

步骤2:进行LU分解(以Doolittle方法为例)

假设 \(A = [a_{ij}]\),分解后 \(L\)\(U\) 的元素通过以下公式计算(对 \(k = 1, 2, \dots, n\) 循环):

  1. 计算U的第k行(对 \(j = k, k+1, \dots, n\)):

\[u_{kj} = a_{kj} - \sum_{m=1}^{k-1} l_{km} u_{mj} \]

  1. 计算L的第k列(对 \(i = k+1, k+2, \dots, n\)):

\[l_{ik} = \frac{a_{ik} - \sum_{m=1}^{k-1} l_{im} u_{mk}}{u_{kk}} \]

示例:分解矩阵 \(A = \begin{bmatrix} 2 & 1 & 1 \\ 4 & 1 & 0 \\ -2 & 2 & 1 \end{bmatrix}\)

  • k=1
    \(u_{11} = a_{11} = 2\)
    \(u_{12} = a_{12} = 1\)
    \(u_{13} = a_{13} = 1\)
    \(l_{21} = a_{21}/u_{11} = 4/2 = 2\)
    \(l_{31} = a_{31}/u_{11} = -2/2 = -1\)
  • k=2
    \(u_{22} = a_{22} - l_{21}u_{12} = 1 - 2\times1 = -1\)
    \(u_{23} = a_{23} - l_{21}u_{13} = 0 - 2\times1 = -2\)
    \(l_{32} = (a_{32} - l_{31}u_{12}) / u_{22} = (2 - (-1)\times1) / (-1) = -3\)
  • k=3
    \(u_{33} = a_{33} - l_{31}u_{13} - l_{32}u_{23} = 1 - (-1)\times1 - (-3)\times(-2) = -4\)
    最终得到:

\[L = \begin{bmatrix} 1 & 0 & 0 \\ 2 & 1 & 0 \\ -1 & -3 & 1 \end{bmatrix}, \quad U = \begin{bmatrix} 2 & 1 & 1 \\ 0 & -1 & -2 \\ 0 & 0 & -4 \end{bmatrix} \]


步骤3:解 \(L\mathbf{y} = \mathbf{b}\)(前向代入)

\(\mathbf{b} = \begin{bmatrix} 2 \\ 1 \\ 3 \end{bmatrix}\),解下三角方程组:

\[\begin{cases} y_1 = b_1 = 2 \\ l_{21}y_1 + y_2 = b_2 \Rightarrow 2\times2 + y_2 = 1 \Rightarrow y_2 = -3 \\ l_{31}y_1 + l_{32}y_2 + y_3 = b_3 \Rightarrow (-1)\times2 + (-3)\times(-3) + y_3 = 3 \Rightarrow y_3 = -4 \end{cases} \]

得到 \(\mathbf{y} = \begin{bmatrix} 2 \\ -3 \\ -4 \end{bmatrix}\)


步骤4:解 \(U\mathbf{x} = \mathbf{y}\)(回代)

解上三角方程组:

\[\begin{cases} u_{33}x_3 = y_3 \Rightarrow -4x_3 = -4 \Rightarrow x_3 = 1 \\ u_{22}x_2 + u_{23}x_3 = y_2 \Rightarrow -1x_2 + (-2)\times1 = -3 \Rightarrow x_2 = 1 \\ u_{11}x_1 + u_{12}x_2 + u_{13}x_3 = y_1 \Rightarrow 2x_1 + 1\times1 + 1\times1 = 2 \Rightarrow x_1 = 0 \end{cases} \]

最终解为 \(\mathbf{x} = \begin{bmatrix} 0 \\ 1 \\ 1 \end{bmatrix}\)


总结
LU分解通过将复杂方程组拆解为两个三角方程组,避免了重复计算,尤其适用于需要多次求解不同 \(\mathbf{b}\) 的情况。关键点在于分解的稳定性(需主元非零),实际应用中常结合选主元(如PLU分解)以提高精度。

LU分解法解线性方程组 题目描述 给定一个线性方程组 \( A\mathbf{x} = \mathbf{b} \),其中 \( A \) 是一个 \( n \times n \) 的系数矩阵,\( \mathbf{b} \) 是常数向量。要求通过LU分解法求解未知向量 \( \mathbf{x} \)。LU分解的核心是将矩阵 \( A \) 分解为一个下三角矩阵 \( L \) 和一个上三角矩阵 \( U \) 的乘积,即 \( A = LU \),然后通过两次回代求解方程组。 解题过程 步骤1:LU分解的原理 LU分解要求矩阵 \( A \) 可分解为 \( L \) 和 \( U \),其中: \( L \) 是下三角矩阵(对角线元素全为1), \( U \) 是上三角矩阵。 分解后,原方程组变为: \[ L(U\mathbf{x}) = \mathbf{b} \] 令 \( U\mathbf{x} = \mathbf{y} \),则问题拆解为两步: 解 \( L\mathbf{y} = \mathbf{b} \)(前向代入), 解 \( U\mathbf{x} = \mathbf{y} \)(回代)。 步骤2:进行LU分解(以Doolittle方法为例) 假设 \( A = [ a_ {ij} ] \),分解后 \( L \) 和 \( U \) 的元素通过以下公式计算(对 \( k = 1, 2, \dots, n \) 循环): 计算U的第k行 (对 \( j = k, k+1, \dots, n \)): \[ u_ {kj} = a_ {kj} - \sum_ {m=1}^{k-1} l_ {km} u_ {mj} \] 计算L的第k列 (对 \( i = k+1, k+2, \dots, n \)): \[ l_ {ik} = \frac{a_ {ik} - \sum_ {m=1}^{k-1} l_ {im} u_ {mk}}{u_ {kk}} \] 示例 :分解矩阵 \( A = \begin{bmatrix} 2 & 1 & 1 \\ 4 & 1 & 0 \\ -2 & 2 & 1 \end{bmatrix} \)。 k=1 : \( u_ {11} = a_ {11} = 2 \), \( u_ {12} = a_ {12} = 1 \), \( u_ {13} = a_ {13} = 1 \)。 \( l_ {21} = a_ {21}/u_ {11} = 4/2 = 2 \), \( l_ {31} = a_ {31}/u_ {11} = -2/2 = -1 \)。 k=2 : \( u_ {22} = a_ {22} - l_ {21}u_ {12} = 1 - 2\times1 = -1 \), \( u_ {23} = a_ {23} - l_ {21}u_ {13} = 0 - 2\times1 = -2 \), \( l_ {32} = (a_ {32} - l_ {31}u_ {12}) / u_ {22} = (2 - (-1)\times1) / (-1) = -3 \)。 k=3 : \( u_ {33} = a_ {33} - l_ {31}u_ {13} - l_ {32}u_ {23} = 1 - (-1)\times1 - (-3)\times(-2) = -4 \)。 最终得到: \[ L = \begin{bmatrix} 1 & 0 & 0 \\ 2 & 1 & 0 \\ -1 & -3 & 1 \end{bmatrix}, \quad U = \begin{bmatrix} 2 & 1 & 1 \\ 0 & -1 & -2 \\ 0 & 0 & -4 \end{bmatrix} \] 步骤3:解 \( L\mathbf{y} = \mathbf{b} \)(前向代入) 设 \( \mathbf{b} = \begin{bmatrix} 2 \\ 1 \\ 3 \end{bmatrix} \),解下三角方程组: \[ \begin{cases} y_ 1 = b_ 1 = 2 \\ l_ {21}y_ 1 + y_ 2 = b_ 2 \Rightarrow 2\times2 + y_ 2 = 1 \Rightarrow y_ 2 = -3 \\ l_ {31}y_ 1 + l_ {32}y_ 2 + y_ 3 = b_ 3 \Rightarrow (-1)\times2 + (-3)\times(-3) + y_ 3 = 3 \Rightarrow y_ 3 = -4 \end{cases} \] 得到 \( \mathbf{y} = \begin{bmatrix} 2 \\ -3 \\ -4 \end{bmatrix} \)。 步骤4:解 \( U\mathbf{x} = \mathbf{y} \)(回代) 解上三角方程组: \[ \begin{cases} u_ {33}x_ 3 = y_ 3 \Rightarrow -4x_ 3 = -4 \Rightarrow x_ 3 = 1 \\ u_ {22}x_ 2 + u_ {23}x_ 3 = y_ 2 \Rightarrow -1x_ 2 + (-2)\times1 = -3 \Rightarrow x_ 2 = 1 \\ u_ {11}x_ 1 + u_ {12}x_ 2 + u_ {13}x_ 3 = y_ 1 \Rightarrow 2x_ 1 + 1\times1 + 1\times1 = 2 \Rightarrow x_ 1 = 0 \end{cases} \] 最终解为 \( \mathbf{x} = \begin{bmatrix} 0 \\ 1 \\ 1 \end{bmatrix} \)。 总结 LU分解通过将复杂方程组拆解为两个三角方程组,避免了重复计算,尤其适用于需要多次求解不同 \( \mathbf{b} \) 的情况。关键点在于分解的稳定性(需主元非零),实际应用中常结合选主元(如PLU分解)以提高精度。