Текст подпрограммы и версий 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