|
Текст подпрограммы и версий adh1r_c.zip , adh1d_c.zip , adh1c_c.zip |
Тексты тестовых примеров tadh1r_c.zip , tadh1d_c.zip , tadh1c_c.zip |
Вычисление определителя положительно определенной симметричной матрицы, заданной в компактной форме, с использованием метода квадратного корня (метода Холецкого).
Положительно определенная 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