Этот класс является выражением симметричной матрицы из треугольной части матрицы с заданным плотным хранением коэффициентов. Он является возвращаемым типом метода MatrixBase::selfadjointView(), и чаще всего используется именно таким способом.
Эта функция вычисляет собственные значения с помощью класса SelfAdjointEigenSolver. Собственные значения повторяются в соответствии с их алгебраической кратностью, поэтому их количество равно числу строк в матрице.
Пример:
MatrixXd ones = MatrixXd::Ones(3,3);
VectorXd eivals = ones.selfadjointView<Lower>().eigenvalues();
cout << "The eigenvalues of the 3x3 matrix of ones are:" << endl << eivals << endl;
Вывод:
The eigenvalues of the 3x3 matrix of ones are:
-3.09e-16
0
3
Эта функция вычисляет операторную норму L2 самосопряжённой матрицы. Для самосопряжённой матрицы операторная норма равна наибольшему собственному значению.
Текущая реализация использует собственные значения матрицы, вычисленные с помощью eigenvalues(), для вычисления операторной нормы матрицы.
Пример:
MatrixXd ones = MatrixXd::Ones(3,3);
cout << "The operator norm of the 3x3 matrix of ones is "
<< ones.selfadjointView<Lower>().operatorNorm() << endl;
Выполняет симметричное обновление ранга 2 самосопряжённой матрицы *this: \( this = this + \alpha u v^* + conj(\alpha) v u^* \)
Возвращает
ссылку на *this
Вектора u и vдолжны быть столбцами, однако они могут быть сопряжёнными выражениями без дополнительной нагрузки. Обновляется только значимая треугольная часть матрицы, остальные элементы остаются неизменными.
См. также
rankUpdate(const MatrixBase<DerivedU>&, Scalar)
rankUpdate() [2/2]
template<typename _MatrixType , unsigned int UpLo>
Если TriMode ссылается на ту же треугольную часть, что и *this, то этот метод просто возвращает TriangularView вложенного выражения, в противном случае вложенное выражение сначала транспонируется, и возвращается объект TriangularView<Transpose<MatrixType>>.