18.1 线性代数使用的技术

Octave 包含一个多态求解器,它根据矩阵自身的属性选择适当的矩阵分解。 通常,确定矩阵类型的成本相对于分解矩阵本身的成本很小。 无论如何,矩阵类型在计算后会被缓存,因此每次在线性方程中使用时不会重新确定。

线性方程求解或矩阵求逆的选择树如下所示:

  1. 如果矩阵是上三角或下三角稀疏矩阵,则使用 LAPACK xTRTRS 函数进行前向或后向代入,然后转到第 4 步。
  2. 如果矩阵是方阵、埃尔米特矩阵且对角线元素为正实数, 则尝试使用 LAPACK xPOTRF 函数进行 Cholesky 分解。
  3. 如果 Cholesky 分解失败,或者矩阵不是对角线元素为正实数的 埃尔米特矩阵,且矩阵是方阵,则使用 LAPACK xGETRF 函数进行分解。
  4. 如果矩阵不是方阵,或者之前的任何求解器标记了奇异或接近奇异的矩阵, 则使用 LAPACK xGELSD 函数寻找最小二乘解。

用户可以使用 matrix_type 函数强制指定矩阵的类型。 这样可以避免发现矩阵类型的开销。 但需要注意的是,错误地识别矩阵类型会导致不可预测的结果, 因此应谨慎使用 matrix_type

需要注意的是,上述以及 matrix_type 函数执行的、 判断矩阵是否适合进行 Cholesky 分解的测试, 并不能确保矩阵是埃尔米特矩阵。 然而,尝试对矩阵进行分解会快速检测出非埃尔米特矩阵。


版权所有 © 2024-2026 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-4