私は学部生として物理学の研究に取り組んでおり、そのためには c++ を使用して 348x348 のオーダーで大きな行列を乗算する必要があります。先生は、6x6 や 12x12 などの小さな行列を使用してコードをテストするように指示し、それらの行列を使用して、探していたものを正確に取得しました。しかし、348x348 の場合とまったく同じコードを使用しようとすると、行列の乗算に対して正しい出力が得られません。プログラムにいくつかのデータを読み取らせ、データを行列として配置し、すべてのデータが正しく読み取られたことを確認しました。しかし、私はまだ行列の正しい積を得ていません。私は C++ ライブラリ Eigen を使用しており、行列の要素の数値を double として読み込んでいます。私の先生は自分のプログラムで計算を行い、正しい結果を得ています。そう、
myOutfile << NormCoord.transpose() * SqrtMass * NormCoord << endl;
これが実際の乗算です。単位行列を取得する必要がありますが、大きな行列では、対角要素が 2 倍ずれており、少なくともオンにしたい場合、一部の非対角要素が 0.0001 のオーダーで少し大きすぎます。 10^(-6)のオーダー