Как пользоваться собственный библиотека для вычисления нижнего треугольника входной матрицы без изменения порядка столбцов?
например для матрицы:
A=[1 2 3;4 5 6 ;7 8 9]
Я хочу, чтобы результат был:
1 0 0
4 0 0
7 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