21.4 使用示例

以下代码可用于通过带枢轴的 LU 分解来求解线性系统 A*x = b

  [L, U, P] = lu (A); ## 此时 L*U = P*A
  x = U \ (L \ P) * b;

以下是将矩阵 X 的列归一化为单位范数的一种方法:

  s = norm (X, "columns");
  X /= diag (s);

同样的效果也可以通过广播来实现(另请参阅广播):

  s = norm (X, "columns");
  X ./= s;

下面的表达式是一种有效计算置换符号的方法,该置换由置换向量 p 给出。它同样适用于 Octave 的早期版本,但速度较慢。

  det (eye (length (p))(p, :))

最后,以下是如何使用 SVD 通过 Tikhonov 正则化(岭回归)来求解线性系统 A*x = b(仅为一个框架):

  m = rows (A); n = columns (A);
  [U, S, V] = svd (A);
  ## 确定正则化因子 alpha
  ## alpha = ...
  ## 变换到正交基
  b = U'*b;
  ## 使用标准公式,用 S 代替 A。
  ## S 是对角矩阵,因此以下计算将非常快速且准确。
  x = (S'*S + alpha^2 * eye (n)) \ (S' * b);
  ## 变换到解基
  x = V*x;

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

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