PLUGeTridLinearEquationsSolution

Решает систему линейных уравнений

A * X = B,  A**T * X = B или A**H * X = B

с трехдиагональной матрицей A, используя LU-разложение, вычисленное методом FactorizationPLUGeTridRaw, для нескольких правых частей. LAPACK-функция GTTRS.

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

bool  matrix::PLUGeTridLinearEquationsSolution(
   long[]&             ipiv,         // массив индексов перестановок
   ENUM_EQUATIONS_FORM trans,        // форма системы уравнений
   matrix&             B,            // матрица B правой части
   matrix&             X             // матрица решений X
   );
 
bool  matrix::PLUGeTridLinearEquationsSolution(
   long[]&             ipiv,         // массив индексов перестановок
   ENUM_EQUATIONS_FORM trans,        // форма системы уравнений
   vector&             B,            // вектор B правой части
   vector&             X             // вектор решений X
   );

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

bool  matrixf::PLUGeTridLinearEquationsSolution(
   long[]&             ipiv,         // массив индексов перестановок
   ENUM_EQUATIONS_FORM trans,        // форма системы уравнений
   matrixf&            B,            // матрица B правой части
   matrixf&            X             // матрица решений X
   );
 
bool  matrixf::PLUGeTridLinearEquationsSolution(
   long[]&             ipiv,         // массив индексов перестановок
   ENUM_EQUATIONS_FORM trans,        // форма системы уравнений
   vectorf&            B,            // вектор B правой части
   vectorf&            X             // вектор решений X
   );

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

bool  matrixc::PLUGeTridLinearEquationsSolution(
   long[]&             ipiv,         // массив индексов перестановок
   ENUM_EQUATIONS_FORM trans,        // форма системы уравнений
   matrixc&            B,            // матрица B правой части
   matrixc&            X             // матрица решений X
   );
 
bool  matrixc::PLUGeTridLinearEquationsSolution(
   long[]&             ipiv,         // массив индексов перестановок
   ENUM_EQUATIONS_FORM trans,        // форма системы уравнений
   vectorc&            B,            // вектор B правой части
   vectorc&            X             // вектор решений X
   );

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

bool  matrixcf::PLUGeTridLinearEquationsSolution(
   long[]&             ipiv,         // массив индексов перестановок
   ENUM_EQUATIONS_FORM trans,        // форма системы уравнений
   matrixcf&           B,            // матрица B правой части
   matrixcf&           X             // матрица решений X
   );
 
bool  matrixcf::PLUGeTridLinearEquationsSolution(
   long[]&             ipiv,         // массив индексов перестановок
   ENUM_EQUATIONS_FORM trans,        // форма системы уравнений
   vectorcf&           B,            // вектор B правой части
   vectorcf&           X             // вектор решений X
   );

Параметры

ipiv

[in]  Массив индексов перестановок, полученный в результате выполнения функции GTTRF.

trans

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

B

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

X

[out]  Матрица или вектор X с решениями системы линейных уравнений.

 

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

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

Примечание

Метод применяется к матрице AF, полученной в результате разложения методом FactorizationPLUGeTridRaw.

Выходная матрица X имеет те же размеры, что и входная матрица B. Выходной вектор X имеет ту же размерность, что и входной вектор B.

ENUM_EQUATIONS_FORM

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

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

Описание

EQUATIONSFORM_N

'N': A * X = B  (без транспонирования)

EQUATIONSFORM_T

'T': A**T * X = B  (транспонированная матрица A)

EQUATIONSFORM_C

'C': A**H * X = B  (сопряженно-транспонированная матрица A)

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