分块矩阵的Kaczmarz迭代算法在求解欠定线性方程组中的应用
字数 6294 2025-12-11 11:28:01

分块矩阵的Kaczmarz迭代算法在求解欠定线性方程组中的应用

题目描述
考虑一个欠定线性方程组 \(A\mathbf{x} = \mathbf{b}\),其中 \(A \in \mathbb{R}^{m \times n}\)\(m < n\),并且系数矩阵 \(A\) 是行满秩的(即 \(\text{rank}(A) = m\))。方程组有无穷多解。我们需要寻找其中范数最小的解(即最小范数解):\(\min \|\mathbf{x}\|_2\),满足 \(A\mathbf{x} = \mathbf{b}\)。假设矩阵 \(A\) 是大型稀疏矩阵,或者以分块形式存储(例如按行分块)。请设计一种基于分块矩阵的Kaczmarz迭代算法,逐步逼近这个最小范数解,并解释其原理、收敛性和计算步骤。


解题过程循序渐进讲解

第一步:理解问题背景与经典Kaczmarz迭代
经典Kaczmarz迭代是用于求解线性方程组 \(A\mathbf{x} = \mathbf{b}\) 的一种逐行投影方法。设 \(a_i^T\)\(A\) 的第 \(i\) 行,\(b_i\)\(\mathbf{b}\) 的第 \(i\) 个分量。迭代格式为:

\[\mathbf{x}^{(k+1)} = \mathbf{x}^{(k)} + \frac{b_i - a_i^T \mathbf{x}^{(k)}}{\|a_i\|_2^2} a_i \]

每次迭代将当前解正交投影到超平面 \(a_i^T \mathbf{x} = b_i\) 上。在超定方程组(\(m > n\))中,该算法收敛到最小二乘解;在方阵满秩时收敛到唯一解。但对于欠定方程组(\(m < n\)),经典Kaczmarz迭代会收敛到某个解,但不一定是最小范数解。

第二步:欠定方程组的最小范数解
对于欠定方程组 \(A\mathbf{x} = \mathbf{b}\),行满秩时最小范数解为:

\[\mathbf{x}^* = A^T (A A^T)^{-1} \mathbf{b} \]

这个解位于 \(A\) 的行空间(即 \(\mathbb{R}^n\) 中由 \(A\) 的行张成的子空间)。经典Kaczmarz迭代如果从零向量 \(\mathbf{x}^{(0)} = \mathbf{0}\) 开始,会收敛到最小范数解吗?实际上,如果按固定顺序循环选择行,收敛的解不一定在行空间中。但如果我们每次随机选择行(随机Kaczmarz),在期望意义下会收敛到最小范数解吗?也不是直接的。我们需要修改算法,确保迭代始终保持在行空间中。

第三步:投影到行空间的技巧
关键观察:最小范数解 \(\mathbf{x}^*\) 位于 \(A\) 的行空间,即 \(\mathbf{x}^* = A^T \mathbf{y}\) 对某个 \(\mathbf{y} \in \mathbb{R}^m\) 成立。如果我们定义变量 \(\mathbf{y}\),则原方程变为 \(A A^T \mathbf{y} = \mathbf{b}\)。这是一个 \(m \times m\) 的对称正定方程组(因为 \(A\) 行满秩,\(A A^T\) 正定)。对这个新方程组应用Kaczmarz迭代,然后通过 \(\mathbf{x} = A^T \mathbf{y}\) 恢复原变量,即可得到最小范数解。具体地:

\[A A^T \mathbf{y} = \mathbf{b} \quad \Rightarrow \quad \text{对第 } i \text{ 行:} a_i^T A^T \mathbf{y} = b_i \]

\(\tilde{a}_i^T = a_i^T A^T\)(这是 \(A A^T\) 的第 \(i\) 行),则Kaczmarz迭代更新为:

\[\mathbf{y}^{(k+1)} = \mathbf{y}^{(k)} + \frac{b_i - \tilde{a}_i^T \mathbf{y}^{(k)}}{\|\tilde{a}_i\|_2^2} \tilde{a}_i \]

然后 \(\mathbf{x}^{(k)} = A^T \mathbf{y}^{(k)}\)。但这样需要计算 \(A A^T\) 的行,当 \(m, n\) 很大时计算和存储开销大。

第四步:避免显式形成 \(A A^T\)
注意 \(\tilde{a}_i^T = a_i^T A^T\) 是一个行向量,与向量 \(\mathbf{y}\) 的内积为 \(a_i^T A^T \mathbf{y} = a_i^T \mathbf{x}\),其中 \(\mathbf{x} = A^T \mathbf{y}\)。并且 \(\|\tilde{a}_i\|_2^2 = a_i^T A^T A a_i\)。因此迭代可以完全用 \(\mathbf{x}\) 表示。从当前 \(\mathbf{x}^{(k)} = A^T \mathbf{y}^{(k)}\) 出发,更新 \(\mathbf{y}\) 后,新解为:

\[\mathbf{x}^{(k+1)} = A^T \mathbf{y}^{(k+1)} = A^T \left( \mathbf{y}^{(k)} + \frac{b_i - a_i^T \mathbf{x}^{(k)}}{a_i^T A^T A a_i} (A a_i) \right) = \mathbf{x}^{(k)} + \frac{b_i - a_i^T \mathbf{x}^{(k)}}{a_i^T A^T A a_i} A^T A a_i \]

这里 \(A^T A a_i\) 是一个向量,可以通过两次矩阵-向量乘计算:先计算 \(w = A a_i\)\(m\) 维),再计算 \(A^T w\)\(n\) 维)。这样避免了显式形成 \(A A^T\)

第五步:分块矩阵情境下的算法扩展
当矩阵 \(A\) 很大时,常按行分块存储,例如 \(A = [A_1; A_2; \dots; A_p]\),其中 \(A_j \in \mathbb{R}^{m_j \times n}\)\(\sum_j m_j = m\)。我们可以将分块视为“超行”,对每个块应用块Kaczmarz迭代。对于欠定方程组,类似地,我们希望迭代保持在行空间。将分块 \(A_j\) 视为一个整体,对应的右端项分块为 \(\mathbf{b}_j\)。定义当前解 \(\mathbf{x}^{(k)} = A^T \mathbf{y}^{(k)}\)。块Kaczmarz迭代将当前解投影到子空间 \(\{ \mathbf{x} : A_j \mathbf{x} = \mathbf{b}_j \}\) 上,这需要求解一个最小二乘问题:

\[\mathbf{x}^{(k+1)} = \arg\min_{\mathbf{x}} \|\mathbf{x} - \mathbf{x}^{(k)}\|_2^2 \quad \text{s.t.} \quad A_j \mathbf{x} = \mathbf{b}_j \]

其解析解为:

\[\mathbf{x}^{(k+1)} = \mathbf{x}^{(k)} + A_j^T (A_j A_j^T)^{-1} (\mathbf{b}_j - A_j \mathbf{x}^{(k)}) \]

注意这里 \(A_j A_j^T\) 是一个 \(m_j \times m_j\) 的矩阵,通常很小,容易求逆。验证:如果从 \(\mathbf{x}^{(k)} = A^T \mathbf{y}^{(k)}\) 开始,更新后:

\[\mathbf{x}^{(k+1)} = A^T \mathbf{y}^{(k)} + A_j^T (A_j A_j^T)^{-1} (\mathbf{b}_j - A_j A^T \mathbf{y}^{(k)}) \]

\(A_j A^T\)\(A_j\) 乘以 \(A^T\) 的一个子块,不一定是单位阵。为了保持解在行空间中,我们需要确保更新后仍可写成 \(A^T\) 乘以某个向量。观察更新项:\(A_j^T (A_j A_j^T)^{-1} \mathbf{r}_j\),其中 \(\mathbf{r}_j = \mathbf{b}_j - A_j \mathbf{x}^{(k)}\)。这个项可以看作 \(A^T\) 乘以一个在 \(A_j\) 行空间中的向量吗?不一定。但我们可以从对偶变量 \(\mathbf{y}\) 的角度推导。

第六步:对偶变量更新公式(分块情形)
设当前 \(\mathbf{x}^{(k)} = A^T \mathbf{y}^{(k)}\)。在块Kaczmarz中,我们选择第 \(j\) 个块,解约束 \(A_j \mathbf{x} = \mathbf{b}_j\) 下的最小范数更新。这等价于求解对偶问题:找增量 \(\Delta \mathbf{y}_j \in \mathbb{R}^{m_j}\)(仅对应第 \(j\) 块非零),使得新解 \(\mathbf{x} = A^T (\mathbf{y}^{(k)} + \Delta \mathbf{y}_j)\) 满足 \(A_j \mathbf{x} = \mathbf{b}_j\),即:

\[A_j A^T (\mathbf{y}^{(k)} + \Delta \mathbf{y}_j) = \mathbf{b}_j \]

\(M = A A^T\),并分块 \(M_{jj} = A_j A_j^T\)\(M_{ij} = A_i A_j^T\)。但因为我们只更新 \(\mathbf{y}_j\)(其他块不变),所以方程简化为:

\[A_j A_j^T \Delta \mathbf{y}_j = \mathbf{b}_j - A_j A^T \mathbf{y}^{(k)} = \mathbf{b}_j - A_j \mathbf{x}^{(k)} \]

于是:

\[\Delta \mathbf{y}_j = (A_j A_j^T)^{-1} (\mathbf{b}_j - A_j \mathbf{x}^{(k)}) \]

从而:

\[\mathbf{y}^{(k+1)} = \mathbf{y}^{(k)} + e_j \Delta \mathbf{y}_j \]

其中 \(e_j\) 表示在第 \(j\) 块位置放入增量。相应地:

\[\mathbf{x}^{(k+1)} = A^T \mathbf{y}^{(k+1)} = \mathbf{x}^{(k)} + A_j^T \Delta \mathbf{y}_j = \mathbf{x}^{(k)} + A_j^T (A_j A_j^T)^{-1} (\mathbf{b}_j - A_j \mathbf{x}^{(k)}) \]

这正是上面块投影公式!而且由于 \(\mathbf{x}^{(k+1)} = A^T \mathbf{y}^{(k+1)}\),它自动保持在行空间中。因此,分块Kaczmarz迭代(块投影更新)在欠定情况下,如果从 \(\mathbf{x}^{(0)} = \mathbf{0}\) 开始,会收敛到最小范数解

第七步:算法步骤总结

  1. 初始化:\(\mathbf{x}^{(0)} = \mathbf{0} \in \mathbb{R}^n\)(或任意满足 \(\mathbf{x}^{(0)} = A^T \mathbf{y}^{(0)}\) 的向量,例如 \(\mathbf{y}^{(0)} = \mathbf{0}\))。
  2. 对迭代次数 \(k = 0, 1, 2, \dots\)
    a. 选择分块索引 \(j_k\)(可按循环顺序或随机选取)。
    b. 计算残差向量:\(\mathbf{r} = \mathbf{b}_{j_k} - A_{j_k} \mathbf{x}^{(k)}\)
    c. 求解小规模线性系统:\((A_{j_k} A_{j_k}^T) \mathbf{z} = \mathbf{r}\)(由于 \(A_{j_k}\) 行满秩,该系数矩阵对称正定,可用Cholesky分解或直接法求解)。
    d. 更新解:\(\mathbf{x}^{(k+1)} = \mathbf{x}^{(k)} + A_{j_k}^T \mathbf{z}\)
  3. 迭代直到残差 \(\|\mathbf{b} - A\mathbf{x}^{(k)}\|_2\) 小于给定容差。

第八步:收敛性分析

  • 该算法是线性收敛的,收敛速度依赖于矩阵 \(A A^T\) 的条件数以及分块选取策略。
  • 如果每次随机选取分块(随机块Kaczmarz),期望意义下收敛速度有明确界限。
  • 由于迭代点始终在行空间中,且更新是到仿射子空间 \(\{ \mathbf{x} : A_j \mathbf{x} = \mathbf{b}_j \}\) 的投影,该算法等价于对正定系统 \((A A^T) \mathbf{y} = \mathbf{b}\) 应用块坐标下降法(或随机坐标下降法)。因此可以利用凸优化理论证明其收敛到最小范数解。

第九步:计算考虑

  • 需要预计算每个分块的 \(A_j A_j^T\) 及其Cholesky分解,以加速步骤2c的求解。如果分块很小,这开销不大。
  • 适用于大规模稀疏矩阵,因为矩阵-向量乘 \(A_{j_k} \mathbf{x}^{(k)}\)\(A_{j_k}^T \mathbf{z}\) 可以利用稀疏性快速计算。
  • 内存友好:只需存储分块 \(A_j\) 及其小矩阵 \(A_j A_j^T\),无需整个 \(A\) 同时载入内存。

第十步:总结
分块Kaczmarz迭代通过将行投影推广为块投影,并结合对偶变量技巧,使得在欠定情形下能收敛到最小范数解。算法保持了Kaczmarz的简单性和适合大规模数据的特性,同时通过分块减少了迭代次数(因为每步处理多个方程),并确保解在行空间中,从而得到最小范数解。

分块矩阵的Kaczmarz迭代算法在求解欠定线性方程组中的应用 题目描述 : 考虑一个欠定线性方程组 \( A\mathbf{x} = \mathbf{b} \),其中 \( A \in \mathbb{R}^{m \times n} \),\( m < n \),并且系数矩阵 \( A \) 是行满秩的(即 \( \text{rank}(A) = m \))。方程组有无穷多解。我们需要寻找其中范数最小的解(即最小范数解):\( \min \|\mathbf{x}\|_ 2 \),满足 \( A\mathbf{x} = \mathbf{b} \)。假设矩阵 \( A \) 是大型稀疏矩阵,或者以分块形式存储(例如按行分块)。请设计一种基于分块矩阵的Kaczmarz迭代算法,逐步逼近这个最小范数解,并解释其原理、收敛性和计算步骤。 解题过程循序渐进讲解 : 第一步:理解问题背景与经典Kaczmarz迭代 经典Kaczmarz迭代是用于求解线性方程组 \( A\mathbf{x} = \mathbf{b} \) 的一种逐行投影方法。设 \( a_ i^T \) 是 \( A \) 的第 \( i \) 行,\( b_ i \) 是 \( \mathbf{b} \) 的第 \( i \) 个分量。迭代格式为: \[ \mathbf{x}^{(k+1)} = \mathbf{x}^{(k)} + \frac{b_ i - a_ i^T \mathbf{x}^{(k)}}{\|a_ i\|_ 2^2} a_ i \] 每次迭代将当前解正交投影到超平面 \( a_ i^T \mathbf{x} = b_ i \) 上。在超定方程组(\( m > n \))中,该算法收敛到最小二乘解;在方阵满秩时收敛到唯一解。但对于欠定方程组(\( m < n \)),经典Kaczmarz迭代会收敛到某个解,但不一定是最小范数解。 第二步:欠定方程组的最小范数解 对于欠定方程组 \( A\mathbf{x} = \mathbf{b} \),行满秩时最小范数解为: \[ \mathbf{x}^* = A^T (A A^T)^{-1} \mathbf{b} \] 这个解位于 \( A \) 的行空间(即 \( \mathbb{R}^n \) 中由 \( A \) 的行张成的子空间)。经典Kaczmarz迭代如果从零向量 \( \mathbf{x}^{(0)} = \mathbf{0} \) 开始,会收敛到最小范数解吗?实际上,如果按固定顺序循环选择行,收敛的解不一定在行空间中。但如果我们每次随机选择行(随机Kaczmarz),在期望意义下会收敛到最小范数解吗?也不是直接的。我们需要修改算法,确保迭代始终保持在行空间中。 第三步:投影到行空间的技巧 关键观察:最小范数解 \( \mathbf{x}^* \) 位于 \( A \) 的行空间,即 \( \mathbf{x}^* = A^T \mathbf{y} \) 对某个 \( \mathbf{y} \in \mathbb{R}^m \) 成立。如果我们定义变量 \( \mathbf{y} \),则原方程变为 \( A A^T \mathbf{y} = \mathbf{b} \)。这是一个 \( m \times m \) 的对称正定方程组(因为 \( A \) 行满秩,\( A A^T \) 正定)。对这个新方程组应用Kaczmarz迭代,然后通过 \( \mathbf{x} = A^T \mathbf{y} \) 恢复原变量,即可得到最小范数解。具体地: \[ A A^T \mathbf{y} = \mathbf{b} \quad \Rightarrow \quad \text{对第 } i \text{ 行:} a_ i^T A^T \mathbf{y} = b_ i \] 设 \( \tilde{a}_ i^T = a_ i^T A^T \)(这是 \( A A^T \) 的第 \( i \) 行),则Kaczmarz迭代更新为: \[ \mathbf{y}^{(k+1)} = \mathbf{y}^{(k)} + \frac{b_ i - \tilde{a}_ i^T \mathbf{y}^{(k)}}{\|\tilde{a}_ i\|_ 2^2} \tilde{a}_ i \] 然后 \( \mathbf{x}^{(k)} = A^T \mathbf{y}^{(k)} \)。但这样需要计算 \( A A^T \) 的行,当 \( m, n \) 很大时计算和存储开销大。 第四步:避免显式形成 \( A A^T \) 注意 \( \tilde{a}_ i^T = a_ i^T A^T \) 是一个行向量,与向量 \( \mathbf{y} \) 的内积为 \( a_ i^T A^T \mathbf{y} = a_ i^T \mathbf{x} \),其中 \( \mathbf{x} = A^T \mathbf{y} \)。并且 \( \|\tilde{a}_ i\|_ 2^2 = a_ i^T A^T A a_ i \)。因此迭代可以完全用 \( \mathbf{x} \) 表示。从当前 \( \mathbf{x}^{(k)} = A^T \mathbf{y}^{(k)} \) 出发,更新 \( \mathbf{y} \) 后,新解为: \[ \mathbf{x}^{(k+1)} = A^T \mathbf{y}^{(k+1)} = A^T \left( \mathbf{y}^{(k)} + \frac{b_ i - a_ i^T \mathbf{x}^{(k)}}{a_ i^T A^T A a_ i} (A a_ i) \right) = \mathbf{x}^{(k)} + \frac{b_ i - a_ i^T \mathbf{x}^{(k)}}{a_ i^T A^T A a_ i} A^T A a_ i \] 这里 \( A^T A a_ i \) 是一个向量,可以通过两次矩阵-向量乘计算:先计算 \( w = A a_ i \)(\( m \) 维),再计算 \( A^T w \)(\( n \) 维)。这样避免了显式形成 \( A A^T \)。 第五步:分块矩阵情境下的算法扩展 当矩阵 \( A \) 很大时,常按行分块存储,例如 \( A = [ A_ 1; A_ 2; \dots; A_ p] \),其中 \( A_ j \in \mathbb{R}^{m_ j \times n} \),\( \sum_ j m_ j = m \)。我们可以将分块视为“超行”,对每个块应用块Kaczmarz迭代。对于欠定方程组,类似地,我们希望迭代保持在行空间。将分块 \( A_ j \) 视为一个整体,对应的右端项分块为 \( \mathbf{b}_ j \)。定义当前解 \( \mathbf{x}^{(k)} = A^T \mathbf{y}^{(k)} \)。块Kaczmarz迭代将当前解投影到子空间 \( \{ \mathbf{x} : A_ j \mathbf{x} = \mathbf{b} j \} \) 上,这需要求解一个最小二乘问题: \[ \mathbf{x}^{(k+1)} = \arg\min {\mathbf{x}} \|\mathbf{x} - \mathbf{x}^{(k)}\|_ 2^2 \quad \text{s.t.} \quad A_ j \mathbf{x} = \mathbf{b}_ j \] 其解析解为: \[ \mathbf{x}^{(k+1)} = \mathbf{x}^{(k)} + A_ j^T (A_ j A_ j^T)^{-1} (\mathbf{b}_ j - A_ j \mathbf{x}^{(k)}) \] 注意这里 \( A_ j A_ j^T \) 是一个 \( m_ j \times m_ j \) 的矩阵,通常很小,容易求逆。验证:如果从 \( \mathbf{x}^{(k)} = A^T \mathbf{y}^{(k)} \) 开始,更新后: \[ \mathbf{x}^{(k+1)} = A^T \mathbf{y}^{(k)} + A_ j^T (A_ j A_ j^T)^{-1} (\mathbf{b}_ j - A_ j A^T \mathbf{y}^{(k)}) \] 但 \( A_ j A^T \) 是 \( A_ j \) 乘以 \( A^T \) 的一个子块,不一定是单位阵。为了保持解在行空间中,我们需要确保更新后仍可写成 \( A^T \) 乘以某个向量。观察更新项:\( A_ j^T (A_ j A_ j^T)^{-1} \mathbf{r}_ j \),其中 \( \mathbf{r}_ j = \mathbf{b}_ j - A_ j \mathbf{x}^{(k)} \)。这个项可以看作 \( A^T \) 乘以一个在 \( A_ j \) 行空间中的向量吗?不一定。但我们可以从对偶变量 \( \mathbf{y} \) 的角度推导。 第六步:对偶变量更新公式(分块情形) 设当前 \( \mathbf{x}^{(k)} = A^T \mathbf{y}^{(k)} \)。在块Kaczmarz中,我们选择第 \( j \) 个块,解约束 \( A_ j \mathbf{x} = \mathbf{b}_ j \) 下的最小范数更新。这等价于求解对偶问题:找增量 \( \Delta \mathbf{y}_ j \in \mathbb{R}^{m_ j} \)(仅对应第 \( j \) 块非零),使得新解 \( \mathbf{x} = A^T (\mathbf{y}^{(k)} + \Delta \mathbf{y}_ j) \) 满足 \( A_ j \mathbf{x} = \mathbf{b}_ j \),即: \[ A_ j A^T (\mathbf{y}^{(k)} + \Delta \mathbf{y} j) = \mathbf{b} j \] 记 \( M = A A^T \),并分块 \( M {jj} = A_ j A_ j^T \),\( M {ij} = A_ i A_ j^T \)。但因为我们只更新 \( \mathbf{y}_ j \)(其他块不变),所以方程简化为: \[ A_ j A_ j^T \Delta \mathbf{y}_ j = \mathbf{b}_ j - A_ j A^T \mathbf{y}^{(k)} = \mathbf{b}_ j - A_ j \mathbf{x}^{(k)} \] 于是: \[ \Delta \mathbf{y}_ j = (A_ j A_ j^T)^{-1} (\mathbf{b}_ j - A_ j \mathbf{x}^{(k)}) \] 从而: \[ \mathbf{y}^{(k+1)} = \mathbf{y}^{(k)} + e_ j \Delta \mathbf{y}_ j \] 其中 \( e_ j \) 表示在第 \( j \) 块位置放入增量。相应地: \[ \mathbf{x}^{(k+1)} = A^T \mathbf{y}^{(k+1)} = \mathbf{x}^{(k)} + A_ j^T \Delta \mathbf{y}_ j = \mathbf{x}^{(k)} + A_ j^T (A_ j A_ j^T)^{-1} (\mathbf{b}_ j - A_ j \mathbf{x}^{(k)}) \] 这正是上面块投影公式!而且由于 \( \mathbf{x}^{(k+1)} = A^T \mathbf{y}^{(k+1)} \),它自动保持在行空间中。因此, 分块Kaczmarz迭代(块投影更新)在欠定情况下,如果从 \( \mathbf{x}^{(0)} = \mathbf{0} \) 开始,会收敛到最小范数解 。 第七步:算法步骤总结 初始化:\( \mathbf{x}^{(0)} = \mathbf{0} \in \mathbb{R}^n \)(或任意满足 \( \mathbf{x}^{(0)} = A^T \mathbf{y}^{(0)} \) 的向量,例如 \( \mathbf{y}^{(0)} = \mathbf{0} \))。 对迭代次数 \( k = 0, 1, 2, \dots \): a. 选择分块索引 \( j_ k \)(可按循环顺序或随机选取)。 b. 计算残差向量:\( \mathbf{r} = \mathbf{b} {j_ k} - A {j_ k} \mathbf{x}^{(k)} \)。 c. 求解小规模线性系统:\( (A_ {j_ k} A_ {j_ k}^T) \mathbf{z} = \mathbf{r} \)(由于 \( A_ {j_ k} \) 行满秩,该系数矩阵对称正定,可用Cholesky分解或直接法求解)。 d. 更新解:\( \mathbf{x}^{(k+1)} = \mathbf{x}^{(k)} + A_ {j_ k}^T \mathbf{z} \)。 迭代直到残差 \( \|\mathbf{b} - A\mathbf{x}^{(k)}\|_ 2 \) 小于给定容差。 第八步:收敛性分析 该算法是线性收敛的,收敛速度依赖于矩阵 \( A A^T \) 的条件数以及分块选取策略。 如果每次随机选取分块(随机块Kaczmarz),期望意义下收敛速度有明确界限。 由于迭代点始终在行空间中,且更新是到仿射子空间 \( \{ \mathbf{x} : A_ j \mathbf{x} = \mathbf{b}_ j \} \) 的投影,该算法等价于对正定系统 \( (A A^T) \mathbf{y} = \mathbf{b} \) 应用块坐标下降法(或随机坐标下降法)。因此可以利用凸优化理论证明其收敛到最小范数解。 第九步:计算考虑 需要预计算每个分块的 \( A_ j A_ j^T \) 及其Cholesky分解,以加速步骤2c的求解。如果分块很小,这开销不大。 适用于大规模稀疏矩阵,因为矩阵-向量乘 \( A_ {j_ k} \mathbf{x}^{(k)} \) 和 \( A_ {j_ k}^T \mathbf{z} \) 可以利用稀疏性快速计算。 内存友好:只需存储分块 \( A_ j \) 及其小矩阵 \( A_ j A_ j^T \),无需整个 \( A \) 同时载入内存。 第十步:总结 分块Kaczmarz迭代通过将行投影推广为块投影,并结合对偶变量技巧,使得在欠定情形下能收敛到最小范数解。算法保持了Kaczmarz的简单性和适合大规模数据的特性,同时通过分块减少了迭代次数(因为每步处理多个方程),并确保解在行空间中,从而得到最小范数解。