LeastSquaresSolutionSVD

Вычисляет решение задачи наименьших квадратов с минимальной нормой для вещественной или комплексной системы minimize 2-norm(| b - A*x |) с использованием сингулярного разложения (SVD) матрицы A. Матрица A имеет размер m на n и может быть вырожденной по рангу. LAPACK function GELSS.

Вычисления для типа matrix<double>

bool  matrix::LeastSquaresSolutionSVD(
   matrix&         B,                // матрица правых частей B
   double          rcond,            // порог для определения ранга матрицы A
   matrix&         X,                // матрица решений X
   matrix&         residuals,        // матрица остатков (суммы квадратов невязок)
   vector&         singular_values,  // вектор сингулярных значений
   long            rank              // эффективный ранг матрицы A
   );
 
bool  matrix::LeastSquaresSolutionSVD(
   vector&         B,                // вектор правых частей B
   double          rcond,            // порог для определения ранга матрицы A
   vector&         X,                // вектор решений X
   vector&         residuals,        // вектор остатков (суммы квадратов невязок)
   vector&         singular_values,  // вектор сингулярных значений
   long            rank              // эффективный ранг матрицы A
   );

Вычисления для типа matrix<float>

bool  matrixf::LeastSquaresSolutionSVD(
   matrixf&        B,                // матрица правых частей B
   float           rcond,            // порог для определения ранга матрицы A
   matrixf&        X,                // матрица решений X
   matrixf&        residuals,        // матрица остатков (суммы квадратов невязок)
   vectorf&        singular_values,  // вектор сингулярных значений
   long            rank              // эффективный ранг матрицы A
   );
 
bool  matrixf::LeastSquaresSolutionSVD(
   vectorf&        B,                // вектор правых частей B
   float           rcond,            // порог для определения ранга матрицы A
   vectorf&        X,                // вектор решений X
   vectorf&        residuals,        // вектор остатков (суммы квадратов невязок)
   vectorf&        singular_values,  // вектор сингулярных значений
   long            rank              // эффективный ранг матрицы A
   );

Вычисления для типа matrix<complex>

bool  matrixc::LeastSquaresSolutionSVD(
   matrixc&        B,                // матрица правых частей B
   double          rcond,            // порог для определения ранга матрицы A
   matrixc&        X,                // матрица решений X
   matrixc&        residuals,        // матрица остатков (суммы квадратов невязок)
   vector&         singular_values,  // вектор сингулярных значений
   long            rank              // эффективный ранг матрицы A
   );
 
bool  matrixc::LeastSquaresSolutionSVD(
   vectorc&        B,                // вектор правых частей B
   double          rcond,            // порог для определения ранга матрицы A
   vectorc&        X,                // вектор решений X
   vectorc&        residuals,        // вектор остатков (суммы квадратов невязок)
   vector&         singular_values,  // вектор сингулярных значений
   long            rank              // эффективный ранг матрицы A
   );

Вычисления для типа matrix<complexf>

bool  matrixcf::LeastSquaresSolutionSVD(
   matrixcf&       B,                // матрица правых частей B
   float           rcond,            // порог для определения ранга матрицы A
   matrixcf&       X,                // матрица решений X
   matrixcf&       residuals,        // матрица остатков (суммы квадратов невязок)
   vectorf&        singular_values,  // вектор сингулярных значений
   long            rank              // эффективный ранг матрицы A
   );
 
bool  matrixcf::LeastSquaresSolutionSVD(
   vectorcf&       B,                // вектор правых частей B
   float           rcond,            // порог для определения ранга матрицы A
   vectorcf&       X,                // вектор решений X
   vectorcf&       residuals,        // вектор остатков (суммы квадратов невязок)
   vectorf&        singular_values,  // вектор сингулярных значений
   long            rank              // эффективный ранг матрицы A
   );

Параметры

Б

[in]  Матрица B, столбцы которой представляют собой правые части систем линейных уравнений. Если это вектор B, здесь содержится одна правая часть.

rcond

[in]  Значение rcond используемое для определения эффективного ранга матрицы A. Сингулярные значения S(i) <= rcond*S(1) считаются равными нулю. Если rcond < 0, используется машинная точность.

X

[out]  Матрица или вектор X с решениями линейной задачи наименьших квадратов.

residuals

[out]  Матрица или вектор с суммами квадратов невязок по каждому решению (по столбцам). Значения определяются как сумма квадратов элементов в этом столбце. Если m<=n, тогда матрица (вектор) residuals остается пустой.

singular_values

[out] Вектор вычисленных сингулярных значений.

rank

[out]   Эффективный ранг матрицы A, т.е. количество сингулярных значений, превышающих rcond*S(1).

 

Возвращаемое значение

Возвращает true в случае успеха и false в случае ошибки.

Примечание

Матрица B должна иметь размер m на nrhs, где nrhs — количество векторов правой части. Матрица X имеет размер n на nrhs.

Число обусловленности матрицы A в 2-норме = S(1)/S(min(m,n)).