1

固有ライブラリを使用して、列の順序を変更せずに入力行列の下三角を計算する方法は?

たとえば、マトリックスの場合:

A=[1 2 3;4 5 6 ;7 8 9]

結果を次のようにしたい:

1 0 0
4 0 0
7 0 0
4

1 に答える 1

4

あなたのテキストとあなたの例は一致しません。あなたの質問を理解するための 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
于 2015-06-29T11:29:44.487 に答える