Функции | |
void | mda_create (size_t n, size_t nz, size_t **IA, size_t **JA, size_t **D, size_t **P, size_t **IP, size_t **M, size_t **L) |
Резервирование памяти для массивов, использующихся в MDA. | |
void | mda_free (size_t *IA, size_t *JA, size_t *D, size_t *P, size_t *IP, size_t *M, size_t *L) |
Освобождение памяти, выделенной функцией mda_create. | |
void | mda_init (size_t n, size_t *IA, size_t *D, size_t *P, size_t *IP) |
Предварительная инициализация для работы MDA. | |
void | mda_convert (size_t n, size_t *IS, size_t *JS, size_t *IA, size_t *JA, size_t *D, size_t *P, size_t *IP) |
Преобразование симметричного представления в полное и инициализация для работы MDA. | |
size_t | mda_order (size_t n, size_t *IA, size_t *JA, size_t *M, size_t *L, size_t *D, size_t *P, size_t *IP) |
Упорядочение методом MDA. | |
void | mda_chol_symb (size_t n, size_t unz, size_t *IS, size_t *JS, size_t *IU, size_t *JU, size_t *M, size_t *L, size_t *D, size_t *IP) |
Символическое разложение Холецкого. | |
void | mda_chol_num (size_t n, size_t *IS, size_t *JS, size_t *IU, size_t *JU, size_t *M, size_t *L, size_t *P, double *SN, double *SD, double *UN, double *UD) |
Численное разложение Холецкого. |
Метод минимальной степени используется на предварительном этапе алгоритма решения разреженной симметричной системы. Он находит переупорядочение строк и столбцов исходной симметричной положительно определенной матрицы, такое, что разложение Холецкого полученной матрицы, как правило, имеет небольшое заполнение.
Для решения системы уравнений с симметричной положительно определенной разреженной матрицей следует:
Также необходимо, используя, например, функции mda_create, nl_xvector_create, nl_dvector_create, заранее выделить необходимую память и после окончания описанных действий освободить ее с помощью функций mda_free, nl_xvector_free, nl_dvector_free..
void mda_chol_num | ( | size_t | n, | |
size_t * | IS, | |||
size_t * | JS, | |||
size_t * | IU, | |||
size_t * | JU, | |||
size_t * | M, | |||
size_t * | L, | |||
size_t * | P, | |||
double * | SN, | |||
double * | SD, | |||
double * | UN, | |||
double * | UD | |||
) |
Численное разложение Холецкого.
Функция должна располагатся в sparse
void mda_chol_symb | ( | size_t | n, | |
size_t | unz, | |||
size_t * | IS, | |||
size_t * | JS, | |||
size_t * | IU, | |||
size_t * | JU, | |||
size_t * | M, | |||
size_t * | L, | |||
size_t * | D, | |||
size_t * | IP | |||
) |
Символическое разложение Холецкого.
Вроде здесь ошибки: см xspmda__. Функция должна располагатся в sparse
void mda_convert | ( | size_t | n, | |
size_t * | IS, | |||
size_t * | JS, | |||
size_t * | IA, | |||
size_t * | JA, | |||
size_t * | D, | |||
size_t * | P, | |||
size_t * | IP | |||
) |
Преобразование симметричного представления в полное и инициализация для работы MDA.
Преобразование симметричного RR(U)U представления матрицы в полное представление RR(C)O, а также предварительная инициализация для работы MDA: вычисление степеней узлов и инициализация индексных массивов и . При использовании этой функции mda_init вызывать уже не следует.
void mda_create | ( | size_t | n, | |
size_t | nz, | |||
size_t ** | IA, | |||
size_t ** | JA, | |||
size_t ** | D, | |||
size_t ** | P, | |||
size_t ** | IP, | |||
size_t ** | M, | |||
size_t ** | L | |||
) |
Резервирование памяти для массивов, использующихся в MDA.
void mda_free | ( | size_t * | IA, | |
size_t * | JA, | |||
size_t * | D, | |||
size_t * | P, | |||
size_t * | IP, | |||
size_t * | M, | |||
size_t * | L | |||
) |
void mda_init | ( | size_t | n, | |
size_t * | IA, | |||
size_t * | D, | |||
size_t * | P, | |||
size_t * | IP | |||
) |
Предварительная инициализация для работы MDA.
size_t mda_order | ( | size_t | n, | |
size_t * | IA, | |||
size_t * | JA, | |||
size_t * | M, | |||
size_t * | L, | |||
size_t * | D, | |||
size_t * | P, | |||
size_t * | IP | |||
) |
Упорядочение методом MDA.