LeastSquaresSolutionWY

Решает переопределенные или недоопределенные вещественные / комплексные системы линейных уравнений, содержащие матрицу A размером m на n или ее транспонированную / сопряженно-транспонированную версию, с использованием QR- или LQ- разложения матрицы A с компактным WY-представлением матрицы Q. Предполагается, что A — это матрица полного ранга.

Предусмотрены следующие варианты:

1. При trans = 'N' и m >= n: решение методом наименьших квадратов выполняется для переопределенной системы, т.е. решается задача наименьших квадратов minimize || B - A*X ||.

2. При trans = 'N' и m < n: решение недоопределенной системы с минимальной нормой A * X = B.

3. При trans = 'T' и m >= n: решение недоопределенной системы с минимальной нормой A**T * X = B.

4. При trans = 'T' и m < n: решение методом наименьших квадратов выполняется для переопределенной системы, т.е. решается задача наименьших квадратов minimize || B - A**T * X ||.

LAPACK-функция GELST.

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

bool  matrix::LeastSquaresSolutionWY(
   ENUM_EQUATIONS_FORM trans,        // форма системы уравнений
   matrix&             B,            // матрица правых частей B
   matrix&             X,            // матрица решений X
   matrix&             residuals     // матрица остатков (суммы квадратов невязок)
   );
 
bool  matrix::LeastSquaresSolutionWY(
   ENUM_EQUATIONS_FORM trans,        // форма системы уравнений
   vector&             B,            // вектор правых частей B
   vector&             X,            // вектор решений X
   vector&             residuals     // вектор остатков (суммы квадратов невязок)
   );

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

bool  matrixf::LeastSquaresSolutionWY(
   ENUM_EQUATIONS_FORM trans,        // форма системы уравнений
   matrixf&            B,            // матрица правых частей B
   matrixf&            X,            // матрица решений X
   matrixf&            residuals     // матрица остатков (суммы квадратов невязок)
   );
 
bool  matrixf::LeastSquaresSolutionWY(
   ENUM_EQUATIONS_FORM trans,        // форма системы уравнений
   vectorf&            B,            // вектор правых частей B
   vectorf&            X,            // вектор решений X
   vectorf&            residuals     // вектор остатков (суммы квадратов невязок)
   );

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

bool  matrixc::LeastSquaresSolutionWY(
   ENUM_EQUATIONS_FORM trans,        // форма системы уравнений
   matrixc&            B,            // матрица правых частей B
   matrixc&            X,            // матрица решений X
   matrixc&            residuals     // матрица остатков (суммы квадратов невязок)
   );
 
bool  matrixc::LeastSquaresSolutionWY(
   ENUM_EQUATIONS_FORM trans,        // форма системы уравнений
   vectorc&            B,            // вектор правых частей B
   vectorc&            X,            // вектор решений X
   vectorc&            residuals     // вектор остатков (суммы квадратов невязок)
   );

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

bool  matrixcf::LeastSquaresSolutionWY(
   ENUM_EQUATIONS_FORM trans,        // форма системы уравнений
   matrixcf&           B,            // матрица правых частей B
   matrixcf&           X,            // матрица решений X
   matrixcf&           residuals     // матрица остатков (суммы квадратов невязок)
   );
 
bool  matrixcf::LeastSquaresSolutionWY(
   ENUM_EQUATIONS_FORM trans,        // форма системы уравнений
   vectorcf&           B,            // вектор правых частей B
   vectorcf&           X,            // вектор решений X
   vectorcf&           residuals     // вектор остатков (суммы квадратов невязок)
   );

Параметры

trans

[in]  Значение перечисления ENUM_EQUATIONS_FORM, которое определяет форму системы уравнений.

Б

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

X

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

residuals

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

 

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

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

Примечание

Если trans='N': Матрица B должна иметь размер m на nrhs, где nrhs — количество векторов правой части. Матрица X имеет размер n на nrhs. Если m>=n, матрица X содержит nrhs решений задачи наименьших квадратов. Если m<n, матрица X содержит nrhs решений с минимальной нормой.

Если trans!='N'. Матрица B должна иметь размер n на nrhs, матрица X — размер m на nrhs. Если m>=n, матрица X содержит nrhs решений с минимальной нормой. Если m<n, матрица X содержит nrhs решений задачи наименьших квадратов.

Аббревиатура WY не является официальной расшифровкой имен или терминов в математике. Compact WY representation — это исторически сложившееся обозначение, пришедшее из оригинальной научной статьи, где впервые было предложено это представление:

   Schreiber, R., & Van Loan, C. (1989). A Storage-Efficient WY Representation for Products of Householder Transformations. SIAM Journal on Scientific and Statistical Computing.

Для построения матрицы Q при QR- или LQ-факторизации используются отражения Хаусхолдера.

Q=H1H2…Hk,

где каждый Hi​ — это отражение. В классической реализации каждое отражение применяется по отдельности. В блочной реализации, чтобы ускорить вычисления и использовать преимущества BLAS, применяется компактное представление WY.

ENUM_EQUATIONS_FORM

Перечисление, определяющее форму вычисляемой системы уравнений.

Идентификатор

Описание

EQUATIONSFORM_N

'N' – линейная система с участием матрицы A (без транспонирования)

EQUATIONSFORM_T

'T' — линейная система с участием транспонированной матрицы A**T

EQUATIONSFORM_C

'C' — линейная система с участием сопряженно-транспонированной матрицы A**H

Для вещественных матриц значение EQUATIONSFORM_C интерпретируется как EQUATIONSFORM_T.

Для комплексных матриц значение EQUATIONSFORM_T интерпретируется как EQUATIONSFORM_C.