Текст подпрограммы и версий
adh1r_c.zip , adh1d_c.zip , adh1c_c.zip
Тексты тестовых примеров
tadh1r_c.zip , tadh1d_c.zip , tadh1c_c.zip

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

Назначение

Вычисление определителя положительно определенной симметричной матрицы, заданной в компактной форме, с использованием метода квадратного корня (метода Холецкого).

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

Положительно определенная cиммeтpичная матрица  А приводится к действительной невырожденной нижней треугольной матрице  L, такой, что LLT = A. Определитель матрицы  А вычисляется как квадрат определителя матрицы  L и записывается в виде:

     det A  =  D1*2D2 ,    где  0.0625 ≤ D1 ≤ 1 . 

В.В.Воеводин, Численные методы алгебры (теория и алгорифмы). Наука, М., 1966.

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

    int adh1r_c (real *a, real *d1, integer *d2, integer *n,
            integer *ierr)

Параметры

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

Версии

adh1d_c - вычисление определителя положительно определенной симметричной матрицы, заданной с удвоенной точностью в компактной форме, с использованием метода квадратного корня.
adh1c_c - вычисление определителя положительно определенной эрмитовой матрицы, заданной в компактной форме, с использованием метода квадратного корня.

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

afh1r_c - треугольное разложение положительно определенной симметричной матрицы методом квадратного корня (методом Холецкого) с компактной формой представления симметричной и треугольной матриц.
afh1d_c - треугольное разложение положительно определенной симметричной матрицы методом квадратного корня с компактной формой представления симметричной и треугольной матриц с повышенной точностью.
afh1c_c - треугольное разложение положительно определенной эрмитовой матрицы с компактной формой представления методом квадратного корня.

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

  1. 

В подпрограмме adh1d_c массив  a и переменная d1 имеют тип double.

  2.  В подпрограмме adh1c_c массив  a и переменная  d1 имеют тип complex.

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

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

    /* Local variables */
    static int ierr;
    extern int adh1r_c(float *, float *, int *, int *, int *);
    static int n;
    static float d1;
    static int d2;

    n = 3;
    adh1r_c(a, &d1, &d2, &n, &ierr);

    printf("\n  %16.7e \n",d1);
    printf("\n  %5i \n",d2);
    return 0;
} /* main */


Результаты:

       d1 = 0.140625 ,     d2 = 12 ,

  т.е.    det A = 0.140625*212 = 576