固有ライブラリを使用して、列の順序を変更せずに入力行列の下三角を計算する方法は?
たとえば、マトリックスの場合:
A=[1 2 3;4 5 6 ;7 8 9]
結果を次のようにしたい:
1 0 0
4 0 0
7 0 0
あなたのテキストとあなたの例は一致しません。あなたの質問を理解するための 3 つの方法を説明します。まず、マトリックスを設定します。
Matrix3d mat;
mat << 1, 2, 3, 4, 5, 6, 7, 8, 9;
実際の下三角行列が必要な場合は、次を使用します。
std::cout << Matrix3d(mat.triangularView<Lower>()) << "\n\n";
または類似。結果は次のとおりです。
1 0 0
4 5 0
7 8 9
例にない 5,8,9 に注意してください。一番左の列だけが必要な場合は、次を使用します。
std::cout << mat.col(0) << "\n\n";
を与える
1
4
7
(例の2番目の部分が示すように)必要なmat * [1, 0, 0]
場合は、行列の乗算(推奨されません)を実行するか、結果を構築するだけです:
Matrix3d z = Matrix3d::Zero();
z.col(0) = mat.col(0);
std::cout << z << "\n\n";
あなたの例と同じ結果が得られます:
1 0 0
4 0 0
7 0 0