18.1用于线性代数的技巧

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

如何求解线性方程或形成矩阵宇宙的选择树从下式给出:

  1. 如果矩阵是上三角稀疏矩阵或下三角稀疏矩阵,则使用LAPACK xTRTRS函数和goto 4。
  2. 如果矩阵是正方形的,具有实正对角线的埃尔米特矩阵,则尝试使用LAPACK xPOTRF函数。
  3. 如果Cholesky因子分解失败,或者矩阵不是具有实正对角线的Hermitian矩阵,并且矩阵是正方形的,则使用LAPACK xGETRF函数。
  4. 如果矩阵不是正方形的,或者前面的任何解算器都符号为奇异或接近奇异矩阵,则使用LAPACK xGELSD函数。

用户可以使用强制矩阵的类型matrix_type作用这克服了查找矩阵类型的成本。然而,需要注意的是,错误地识别矩阵类型会导致不可预测的结果,因此matrix_type应小心使用。

应该注意的是,上面执行的矩阵是否是Cholesky因子分解的候选者的测试,以及通过matrix_type函数,不能确定矩阵是埃尔米特矩阵。然而,对矩阵进行因子分解的尝试将快速检测到非埃尔米特矩阵。


版权所有 © 2024 Octave中文网

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