-4

C++ で固有ライブラリを使用してプログラムを実行しようとしていますが、構文の一部に誤りがあります。これが私のコードです。誰かが私が間違っていた場所にコメントできますか?

#include <iostream>
#include <Eigen\Dense> //EIGEN library

using namespace Eigen;
using namespace std;

int main()
{
  Matrix<double,2000,2000> A;
  Matrix<double,2000,2000> B;
  Matrix<double,2000,2000> C;

  A.setRandom(2000,2000);
  B.setRandom(2000,2000);

  //A = Dynamic2D::Random(rows, cols);
  // A<<MatrixXd::Identity(2000,2000);

  C=A*B;
}

また、コメント行で与えられた行列 A を宣言するのは何が間違っていますか?

//A = Dynamic2D::Random(rows, cols);
// A<<MatrixXd::Identity(2000,2000);
4

1 に答える 1

0

行列の次元がテンプレート パラメータとして指定されている場合、Eigen はスタックのストレージ スペースを割り当てようとします。残念ながら、スタックは 400 万のダブルを収容するのに十分な大きさではありません。大きな行列の場合は、代わりに動的サイズを使用するのが最善です:

MatrixXd A; A.setRandom(2000, 2000);

の代わりに代入演算子を使用して、単位行列として A を初期化できます<<

A = MatrixXd::Identity(2000,2000);

于 2014-06-06T02:26:58.717 に答える