Нижний треугольник матрицы в собственных

Как пользоваться собственный библиотека для вычисления нижнего треугольника входной матрицы без изменения порядка столбцов?

например для матрицы:

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

Я хочу, чтобы результат был:

1 0 0
4 0 0
7 0 0

0

Решение

Ваш текст и ваш пример не совпадают. Я пойду через три возможных способа, я понял ваш вопрос. Сначала мы настроим матрицу:

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

Если (как показывает вторая часть вашего примера) вы хотите 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
4

Другие решения


По вопросам рекламы [email protected]