Текст подпрограммы и версий afh6r_c.zip |
Тексты тестовых примеров tafh6r_c.zip |
Символическое треугольное разложение симметричной положительно определенной разреженной матрицы, заданной в формате RR (U) U.
Описание формата RR (U) U приведено в описании подпрограммы am21r_c .
Пусть симметричная положительно определенная разреженная матрица А порядка N задана в формате RR (U) U. Подпрограмма afh6r_c выполняет символическое треугольное разложение матрицы А, т.е. формирует портрет матрицы U в разложении матрицы А в произведение трех матриц: A = UTDU, где U - верхняя треугольная матрица с единичной диагональю, а D - диагональная матрица. Портрет результирующей матрицы U формируется также в формате RR (U) U.
С.Писсанецки. Технология разреженных матриц. - М.: Мир, 1988
int afh6r_c (integer *ia, integer *ja, integer *n, integer *iu, integer *ju, integer *ip)
Параметры
ia, ja - | заданный портрет матрицы A; |
n - | заданный порядок матрицы A (тип: целый); |
iu, ju - | вычисленный портрет матрицы U; |
ip - | целый одномерный массив длины n, используемый в подпрограмме в качестве рабочего |
Версии: нет
Вызываемые подпрограммы: нет
Замечания по использованию: нет
int main(void) { /* Initialized data */ static int ia[6] = { 1,2,3,4,5,5 }; static int ja[4] = { 5,5,5,5 }; /* Local variables */ extern int afh6r_c(int *, int *, int *, int *, int *, int *); static int n, ip[5], iu[6], ju[4]; n = 5; afh6r_c(ia, ja, &n, iu, ju, ip); printf("\n %5i %5i %5i %5i %5i %5i \n", iu[0], iu[1], iu[2], iu[3], iu[4], iu[5]); printf("\n %5i %5i %5i %5i \n", ju[0], ju[1], ju[2], ju[3]); return 0; } /* main */ Результаты: iu = ( 1, 2, 3, 4, 5, 5 ) ju = ( 5, 5, 5, 5 )