Текст подпрограммы и версий
aih3r_c.zip  aih3d_c.zip 
Тексты тестовых примеров
taih3r_c.zip  taih3d_c.zip 

Подпрограмма:  aih3r_c

Назначение

Обращение неособенной симметричной матрицы с компактной формой представления с использованием метода квадратного корня.

Математическое описание

Подпрограмма aih3r_c вычисляет матрицу В, записанную в компактной форме, такую что А*В = Е, где А - исходная неособенная симметричная матрица порядка N, заданная в компактной форме, а Е - единичная матрица. Используется метод квадратного корня. Матрица B является симметричной.

Вunch J.R., Рarlett В.N., Direct methods for solving symmetric indefinite systems of linear equations, SIАМ J. Numer. Аnal.,Vol.8, No.4, December 1971.

Использование

    int aih3r_c (real *a, real *ainv, integer *n, integer *ir,
            real *r__, integer *ierr)

Параметры

a - вещественный вектор размерности n на (n+1)/2, который содержит исходную матрицу, записанную в компактной форме;
ainv - вещественный вектор размерности n на (n+1)/2, который содержит обратную матрицу B, записанную в компактной форме;
n - порядок заданной матрицы A (тип: целый);
ir - целый вектор длины 2*n, используемый как рабочий массив;
r - вещественный вектор длины n, используемый как рабочий массив;
ierr - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы: при этом:
ierr=65 - если матрица является сингулярной.

Версии

aih3d_c - обращение неособенной симметричной матрицы с компактной формой представления (используется метод квадратного корня) с повышенной точностью.

Вызываемые подпрограммы

afh3r_c - подпрограмма треугольного разложения неособенной симметричной матрицы, заданной в компактной форме, методом квадратного корня.
afh3d_c - подпрограмма треугольного разложения неособенной симметричной матрицы, заданной в компактной форме, методом квадратного корня с повышенной точностью.
ash3r_c - подпрограмма решения системы с неособенной симметричной матрицей в компактной форме представления методом квадратного корня.
ash3d_c - подпрограмма решения системы с неособенной симметричной матрицей в компактной форме представления методом квадратного корня с повышенной точностью.
utai10_c - подпрограмма печати диагностических сообщений при работе подпрограммы aih3r_c.
utai11_c - подпрограмма печати диагностических сообщений при работе подпрограммы aih3d_c.

Замечания по использованию

 

При работе подпрограмм aih3r_c и aih3d_c исходная матрица A не сохраняется. На место матрицы A помещается ее треугольное разложение, полученное методом квадратного корня.

Для подпрограммы aih3d_c параметры a, ainv должны иметь тип double.

Пример использования

int main(void)
{
    /* Initialized data */
    static float a[6] = { 1.f,.5f,-1.f,3.f,2.f,1.f };

    /* Local variables */
    static float ainv[6];
    static int ierr;
    extern int aih3r_c(float *, float *, int *, int *, float *, int *);
    static int n, i__;
    static float r__[3];
    static int ri[6];

    n = 3;
    aih3r_c(a, ainv, &n, ri, r__, &ierr);

    for (i__ = 1; i__ <= 6; ++i__) {
           printf("\n %16.7e \n", ainv[i__-1]);
    }
    printf("\n %5i \n", ierr);
    return 0;
} /* main */


Результаты:

         ainv  =  (-0.51, 0.56, -0.82, 0.41, -0.05, -0.13) , 
         ierr  =  0