Spec-Zone.ru › Eigen3

Eigen::SVDBase

template<typename Derived>
class Eigen::SVDBase< Derived >

Базовый класс алгоритмов SVD.

Параметры шаблона
Derived тип фактического разложения SVD

Разложение SVD заключается в разложении любой n-by-p матрицы A в виде произведения

\[ A = U S V^* \]

где U — унитарная n-by-n матрица, V — унитарная p-by-p матрица, а S — вещественная положительная n-by-p матрица, которая равна нулю вне главной диагонали; диагональные элементы S известны как сингулярные значения A, а столбцы U и V известны как левые и правые сингулярные векторы A соответственно.

Сингулярные значения всегда упорядочены по убыванию.

Вы можете запросить вычисление только тонких U или V, что означает следующее. В случае прямоугольной n-by-p матрицы, если m — меньшее значение среди n и p, существует только m сингулярных векторов; оставшиеся столбцы U и V не соответствуют фактическим сингулярным векторам. Запрос тонких U или V означает запрос на формирование только их первых m столбцов. Таким образом, U является тогда n-by-m матрицей, а V — p-by-m матрицей. Заметьте, что тонкие U и V — это все, что вам нужно для решения (методом наименьших квадратов).

Состояние вычисления может быть получено с помощью метода info(). Если info() не возвращает Success, результаты не следует считать корректно определенными.

Если входная матрица имеет коэффициенты inf или nan, результат вычисления не определен, и info() вернет InvalidInput, но гарантируется, что вычисление завершится за конечное (и разумное) время.

См. также
class BDCSVD, class JacobiSVD
Inheritance graph
typedef Eigen::Index Index
- Public Types inherited from Eigen::EigenBase< Derived >
typedef Eigen::Index Index
Тип интерфейса индексов. More...
bool computeU () const
bool computeV () const
ComputationInfo info () const
Сообщает, было ли успешным предыдущее вычисление. More...
const MatrixUType & matrixU () const
const MatrixVType & matrixV () const
Index nonzeroSingularValues () const
Index rank () const
Derived & setThreshold (const RealScalar &threshold)
Derived & setThreshold (Default_t)
const SingularValuesType & singularValues () const
template<typename Rhs >
const Solve< Derived, Rhs > solve (const MatrixBase< Rhs > &b) const
RealScalar threshold () const
- Public Member Functions inherited from Eigen::SolverBase< SVDBase< Derived > >
AdjointReturnType adjoint () const
SVDBase< Derived > & derived ()
const SVDBase< Derived > & derived () const
const Solve< SVDBase< Derived >, Rhs > solve (const MatrixBase< Rhs > &b) const
SolverBase ()
ConstTransposeReturnType transpose () const
- Public Member Functions inherited from Eigen::EigenBase< Derived >
EIGEN_CONSTEXPR Index cols () const EIGEN_NOEXCEPT
Derived & derived ()
const Derived & derived () const
EIGEN_CONSTEXPR Index rows () const EIGEN_NOEXCEPT
EIGEN_CONSTEXPR Index size () const EIGEN_NOEXCEPT
SVDBase ()
Конструктор по умолчанию. More...

Index

template<typename Derived >
typedef Eigen::Index Eigen::SVDBase< Derived >::Index
Deprecated:
начиная с Eigen 3.3

SVDBase()

template<typename Derived >
Eigen::SVDBase< Derived >::SVDBase ( )
inlineprotected

Конструктор по умолчанию.

Конструктор по умолчанию класса SVDBase

computeU()

template<typename Derived >
bool Eigen::SVDBase< Derived >::computeU ( ) const
inline
Возвращает
true, если в этом разложении SVD запрашивается U (полное или тонкое)

computeV()

template<typename Derived >
bool Eigen::SVDBase< Derived >::computeV ( ) const
inline
Возвращает
true, если в этом разложении SVD запрашивается V (полное или тонкое)

info()

template<typename Derived >
ComputationInfo Eigen::SVDBase< Derived >::info ( ) const
inline

Сообщает, была ли успешна предыдущая вычисления.

Возвращает
Success если вычисления были успешны.

matrixU()

template<typename Derived >
const MatrixUType& Eigen::SVDBase< Derived >::matrixU ( ) const
inline
Возвращает
матрицу U.

Для разложения SVD матрицы n×p, пусть m — минимальное из n и p, матрица U имеет размер n×n, если вы запросили ComputeFullU , и размер n×m, если вы запросили ComputeThinU .

Первые m столбцов матрицы U — левые сингулярные векторы разлагаемой матрицы.

Этот метод проверяет, что вы запросили вычисление U.

matrixV()

template<typename Derived >
const MatrixVType& Eigen::SVDBase< Derived >::matrixV ( ) const
inline
Возвращает
матрицу V.

Для разложения SVD матрицы n×p, пусть m — минимальное из n и p, матрица V имеет размер p×p, если вы запросили ComputeFullV , и размер p×m, если вы запросили ComputeThinV .

Первые m столбцов матрицы V — правые сингулярные векторы разлагаемой матрицы.

Этот метод проверяет, что вы запросили вычисление V.

nonzeroSingularValues()

template<typename Derived >
Index Eigen::SVDBase< Derived >::nonzeroSingularValues ( ) const
inline
Возвращает
количество сингулярных значений, которые не равны точно нулю

rank()

template<typename Derived >
Index Eigen::SVDBase< Derived >::rank ( ) const
inline
Возвращает
ранг матрицы, для которой *this является разложением SVD.
Примечание
Этот метод должен определить, какие сингулярные значения следует считать ненулевыми. Для этого используется порог, который вы можете контролировать, вызвав setThreshold(const RealScalar&).

setThreshold() [1/2]

template<typename Derived >
Derived& Eigen::SVDBase< Derived >::setThreshold ( const RealScalar & threshold )
inline

Позволяет задать порог, который будут использовать некоторые методы, такие как rank() и solve(), которым необходимо определить, когда сингулярные значения следует считать ненулевыми. Это не используется для самого разложения SVD.

При необходимости получения значения порога, Eigen вызывает threshold(). По умолчанию NumTraits<Scalar>::epsilon()

Параметры
threshold Новое значение порога.

Сингулярное значение будет считаться ненулевым, если его значение строго больше \( \vert singular value \vert \leqslant threshold \times \vert max singular value \vert \).

Для возврата к поведению по умолчанию, вызовите setThreshold(Default_t)

setThreshold() [2/2]

template<typename Derived >
Derived& Eigen::SVDBase< Derived >::setThreshold ( Default_t )
inline

Позволяет вернуться к поведению по умолчанию, позволяя Eigen использовать свою формулу по умолчанию для определения порога.

Вы должны передать специальный объект Eigen::Default в качестве параметра.

svd.setThreshold(Eigen::Default); 

См. документацию setThreshold(const RealScalar&).

singularValues()

template<typename Derived >
const SingularValuesType& Eigen::SVDBase< Derived >::singularValues ( ) const
inline
Возвращает
вектор сингулярных значений.

Для разложения SVD матрицы n×p, пусть m — минимальное из n и p, возвращаемый вектор имеет размер m. Сингулярные значения всегда отсортированы по убыванию.

solve()

template<typename Derived >
template<typename Rhs >
const Solve<Derived, Rhs> Eigen::SVDBase< Derived >::solve ( const MatrixBase< Rhs > & b ) const
inline
Возвращает
решение (методом наименьших квадратов) уравнения \( A x = b \) с использованием текущего разложения SVD матрицы A.
Параметры
b правая часть уравнения, которое нужно решить.
Примечание
Для решения требуются вычисления как U, так и V. Тонких U и V достаточно, полные U и V не нужны.
Решение SVD неявно является решением методом наименьших квадратов. Таким образом, этот метод служит для решения как точных уравнений, так и уравнений методом наименьших квадратов. Другими словами, возвращаемое решение гарантированно минимизирует евклидову норму \( \Vert A x - b \Vert \).

threshold()

template<typename Derived >
RealScalar Eigen::SVDBase< Derived >::threshold ( ) const
inline

Возвращает порог, который будет использоваться некоторыми методами, такими как rank().

См. документацию setThreshold(const RealScalar&).


The documentation for this class was generated from the following file:
  • SVDBase.h

© Eigen.
Licensed under the MPL2 License.
https://eigen.tuxfamily.org/dox/classEigen_1_1SVDBase.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API