Файл mda.h

Метод минимальной степени для переупорядочения симметричной разреженной матрицы. Подробнее...


Функции

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)
 Численное разложение Холецкого.


Подробное описание

Метод минимальной степени для переупорядочения симметричной разреженной матрицы.

Метод минимальной степени используется на предварительном этапе алгоритма решения разреженной симметричной системы. Он находит переупорядочение строк и столбцов исходной симметричной положительно определенной матрицы, такое, что разложение Холецкого полученной матрицы, как правило, имеет небольшое заполнение.

Для решения системы уравнений $Ax=b$ с симметричной положительно определенной разреженной матрицей $A$ следует:

Также необходимо, используя, например, функции 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 представления матрицы $S$ в полное представление RR(C)O, а также предварительная инициализация для работы MDA: вычисление степеней узлов $D$ и инициализация индексных массивов $P$ и $IP$. При использовании этой функции mda_init вызывать уже не следует.

Примеры:
xmda.c.

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.

Примеры:
xmda.c.

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.

Примеры:
xmda.c.

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.

Примеры:
xmda.c.


Документация по NL. Последние изменения: Mon Oct 9 12:25:55 2006. Создано системой  doxygen 1.4.7