1

lapack ++ライブラリを使用して(非対称、二乗) LaMatGenDouble行列の行列式を計算する最良の(最速の)方法は何ですか?

4

2 に答える 2

2

行列式を計算する 1 つの方法は、LU 分解を使用することです。

  LaVectorLongInt pivots(A.cols());

  LUFactorizeIP(A, pivots);

  double detA = 1;
  for (int i = 0; i < A.cols(); ++i)
    detA *= A(i, i);

警告、Aは変更されるため、コピーを作成することをお勧めします。

于 2009-07-21T09:37:47.337 に答える
0

lapack ++についてはわかりませんが、標準のlapackにはないはずです。確認してください。私の知る限り、lapack ++はマトリシアル操作自体を実装していませんが、他のものを使用しています。実際には、それらのいくつか(atlas、mkl(インテルマスカーネルライブラリ)など)を切り替えることができます。したがって、私の仮定は、lapack++にも行列式の操作があるということです。

于 2009-07-20T10:02:38.130 に答える