Файл util.h

Вспомогательные процедуры. Подробнее...


Обработка ошибок

enum  nl_err_enum {
  nl_err_OK = 0, nl_err_out_of_memory = 1, nl_err_inconsistent_size, nl_err_incorrect_index,
  nl_err_matrix_must_be_square, nl_err_matrix_is_singular, nl_err_matrix_is_not_positive_definite, nl_err_IO,
  nl_err_diag_elem_must_be_non_zero, nl_err_count
}
 Коды ошибок. Подробнее...
void(*) nl_error (nl_err_enum error, int critical)
 Указатель на функцию, которая вызывается в случае возникновения ошибки.
int nl_exit_when_error
 Если значение этой переменной отлично от нуля, то в случае возникновения ошибки процедура nl_error прерывает работу программы.

Создание, удаление и копирование векторов

double * nl_dvector_create (size_t n)
 Создать вектор длины $n$.
size_t * nl_xvector_create (size_t n)
 Создать вектор длины $n$.
double * nl_dvector_create_copy (const double *v, size_t n)
 Создать копию вектора $v$ длины $n$.
size_t * nl_xvector_create_copy (size_t *v, size_t n)
 Создать копию вектора $v$ длины $n$.
void nl_dvector_copy (double *a, const double *b, size_t n)
 Копирует вектор $b$ в вектор $a$.
void nl_xvector_copy (size_t *a, const size_t *b, size_t n)
 Копирует вектор $b$ в вектор $a$.
void nl_dvector_free (double *v)
 Освободить память, занятую вектором $v$ длины $n$.
void nl_xvector_free (size_t *v)
 Освободить память, занятую вектором $v$ длины $n$.

Ввод и вывод векторов

void nl_dvector_print (double *v, size_t n, const char *format)
 Форматированный вывод вектора $v$ длины $n$ на экран.
void nl_xvector_print (size_t *v, size_t n, const char *format)
 Форматированный вывод вектора $v$ длины $n$ на экран.
void nl_dvector_fprint (FILE *file, const double *v, size_t n, const char *format)
 Форматированный вывод вектора $v$ длины $n$ в файл file.
void nl_xvector_fprint (FILE *file, const size_t *v, size_t n, const char *format)
 Форматированный вывод вектора $v$ длины $n$ в файл file.
void nl_dvector_fwrite (const char *filename, double *v, size_t n, const char *format)
 Форматированный вывод вектора $v$ длины $n$ в файл с именем $filename$.
void nl_xvector_fwrite (const char *filename, size_t *v, size_t n, const char *format)
 Форматированный вывод вектора $v$ длины $n$ в файл с именем $filename$.
double * nl_dvector_scan (size_t *n)
 Чтение вектора с клавиатуры.
size_t * nl_xvector_scan (size_t *n)
 Чтение вектора с клавиатуры.
double * nl_dvector_fscan (FILE *file, size_t *n)
 Чтение вектора из файла.
size_t * nl_xvector_fscan (FILE *file, size_t *n)
 Чтение вектора из файла.
double * nl_dvector_fread (const char *filename, size_t *n)
 Чтение вектора из файла.
size_t * nl_xvector_fread (const char *filename, size_t *n)
 Чтение вектора из файла.

Операции с векторами

void nl_dvector_add (double *a, const double *b, size_t n)
 Сложение векторов.
void nl_dvector_sub (double *a, const double *b, size_t n)
 Вычитание из вектора $a$ вектора $b$.
double nl_dvector_diff_norm1 (const double *a, const double *b, size_t n)
 Вычисление 1-нормы (манхеттенской) разности двух векторов.
double nl_dvector_diff_norm2 (const double *a, const double *b, size_t n)
 Вычисление 2-нормы разности (евклидовой) двух векторов.
double nl_dvector_norm1 (const double *a, size_t n)
 Вычисление 1-нормы (манхеттенской) вектора.
double nl_dvector_norm2 (const double *a, size_t n)
 Вычисление 2-нормы (евклидовой) вектора.
double nl_dvector_norm_inf (const double *a, size_t n)
 Вычисление $\infty$-нормы (чебышевой) вектора.
double nl_dvector_dot (const double *a, const double *b, size_t n)
 Вычисление скалярного произведения векторов.
void nl_dvector_axpy (double alpha, const double *x, const double *y, size_t n, double *z)
 Вычисление вектора $z = \alpha x + y$.
void nl_dvector_permute (const double *a, const size_t *P, size_t n, double *b)
 Перестановка элементов вектора.

Создание, удаление и копирование матриц

double ** nl_dmatrix_create (size_t m, size_t n)
 Создать матрицу с размерами $m\times n$.
double ** nl_dmatrix_create_copy (const double **A, size_t m, size_t n)
 Создать копию матрицы $A$ с размерами $m\times n$.
void nl_dmatrix_copy (double **A, const double **B, size_t m, size_t n)
 Копирует $m\times n$-матрцу B матрицу $A$.
void nl_dmatrix_free (double **A, size_t m)
 Освободить память, занятую матрицей $A$ с размерами $m\times n$.
double ** nl_dmatrix_convert (double *A, size_t m, size_t n)
 Конвертация представления матрицы.

Ввод и вывод матриц

void nl_dmatrix_print (double **A, size_t m, size_t n, const char *format)
 Форматированный вывод $m\times n$ матрицы $A$ на экран.
void nl_dmatrix_fprint (FILE *file, double **A, size_t m, size_t n, const char *format)
 Форматированный вывод $m\times n$ матрицы $A$ в файл $file$.
void nl_dmatrix_fwrite (const char *filename, double **A, size_t m, size_t n, const char *format)
 Форматированный вывод $m\times n$ матрицы $A$ в файл с именем $filename$.
double ** nl_dmatrix_scan (size_t *m, size_t *n)
 Чтение матрицы с клавиатуры.
double ** nl_dmatrix_fscan (FILE *file, size_t *m, size_t *n)
 Чтение матрицы из файла.
double ** nl_dmatrix_fread (const char *filename, size_t *m, size_t *n)
 Чтение матрицы из файла.

Операции с матрицами

void nl_dmatrix_mult (size_t m, size_t n, size_t k, double **A, double **B, double **Mul)
 Умножает матрицу $A$ размера $m\times n$ на матрицу B $n \times k$ Результат в $Mul$ размера $m\times k$.
void nl_dmatrix_add (size_t m, size_t n, double **A, double **B)
 Сложение двух матриц.
void nl_dmatrix_sub (size_t m, size_t n, double **A, double **B)
 Вычитает из матрицы $A$ размера $m\times n$ матрицу B размера $m\times n$ Результат в матрице $А$.
double nl_dmatrix_diff_norm_inf (double **A, double **B, size_t m, size_t n)
 Вычисление чебышевой нормы разности двух матриц.

Операции с матрицами и векторами

double * nl_dvector_mult_dmatrix (double *b, double **A, size_t m, size_t n)
 Умножение вектора-строки $b$ на матрицу $A$.
void nl_dmatrix_mult_dvector (double **A, size_t m, size_t n, const double *b, double *res)
 Умножение матрицы $A$ на вектор $b$ справа.


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

Вспомогательные процедуры.

Файл содержит вспомогательные процедуры для библиотеки численных методов.


Перечисления

enum nl_err_enum

Коды ошибок.

Элементы перечислений:
nl_err_OK  Ошибок нет.
nl_err_out_of_memory  Недостаточно памяти.
nl_err_inconsistent_size  Неверный размер.
nl_err_incorrect_index  Неверный индекс.
nl_err_matrix_must_be_square  Матрица должна быть квадратной.
nl_err_matrix_is_singular  Матрица вырождена.
nl_err_matrix_is_not_positive_definite  Матрица не положительно определенная.
nl_err_IO  Ошибка при вводе/выводе.
nl_err_diag_elem_must_be_non_zero  Диагональные элементы должны быть ненулевыми.
nl_err_count  Количество типов зарегистрированных ошибок.


Функции

void nl_dmatrix_add ( size_t  m,
size_t  n,
double **  A,
double **  B 
)

Сложение двух матриц.

double** nl_dmatrix_convert ( double *  A,
size_t  m,
size_t  n 
)

Конвертация представления матрицы.

Матрица $A$ с размерами $m\times n$, представленная в виде списка своих элементов (по строкам), конвертируется в представление, принятое в библиотеке. Тип элементов - double

void nl_dmatrix_copy ( double **  A,
const double **  B,
size_t  m,
size_t  n 
)

Копирует $m\times n$-матрцу B матрицу $A$.

Под элементы матрицы $A$ должно быть выделено место. Тип элементов - double

double** nl_dmatrix_create ( size_t  m,
size_t  n 
)

Создать матрицу с размерами $m\times n$.

Функция размещает память под матрицу и возвращает указатель на него. Тип элементов - double

Примеры:
xband.c, xchol.c, xeig.c, xeigsym.c, xjacobi.c, xlaplace.c, xlu.c, xneldermead.c, xqr.c, xqrls.c, xsparse.c и xsvd.c.

double** nl_dmatrix_create_copy ( const double **  A,
size_t  m,
size_t  n 
)

Создать копию матрицы $A$ с размерами $m\times n$.

Функция размещает память под матрицу, копирует значения и возвращает указатель на него. Тип элементов - double

double nl_dmatrix_diff_norm_inf ( double **  A,
double **  B,
size_t  m,
size_t  n 
)

Вычисление чебышевой нормы разности двух матриц.

void nl_dmatrix_fprint ( FILE *  file,
double **  A,
size_t  m,
size_t  n,
const char *  format 
)

Форматированный вывод $m\times n$ матрицы $A$ в файл $file$.

Тип элементов - double

double** nl_dmatrix_fread ( const char *  filename,
size_t *  m,
size_t *  n 
)

Чтение матрицы из файла.

Функция считывает из файла с именем $filename$ размеры матрицы $m$, $n$, размещает память под матрицу, считывает значения и возвращает указатель на матрицу. Тип элементов - double

void nl_dmatrix_free ( double **  A,
size_t  m 
)

Освободить память, занятую матрицей $A$ с размерами $m\times n$.

Тип элементов - double

Примеры:
xband.c, xchol.c, xeig.c, xeigsym.c, xjacobi.c, xlaplace.c, xlu.c, xneldermead.c, xqr.c, xqrls.c, xsparse.c и xsvd.c.

double** nl_dmatrix_fscan ( FILE *  file,
size_t *  m,
size_t *  n 
)

Чтение матрицы из файла.

Функция считывает из файла $file$ размеры матрицы $m$, $n$, размещает память под матрицу, считывает значения и возвращает указатель на матрицу. Тип элементов - double

void nl_dmatrix_fwrite ( const char *  filename,
double **  A,
size_t  m,
size_t  n,
const char *  format 
)

Форматированный вывод $m\times n$ матрицы $A$ в файл с именем $filename$.

Тип элементов - double

void nl_dmatrix_mult ( size_t  m,
size_t  n,
size_t  k,
double **  A,
double **  B,
double **  Mul 
)

Умножает матрицу $A$ размера $m\times n$ на матрицу B $n \times k$ Результат в $Mul$ размера $m\times k$.

void nl_dmatrix_mult_dvector ( double **  A,
size_t  m,
size_t  n,
const double *  b,
double *  res 
)

Умножение матрицы $A$ на вектор $b$ справа.

void nl_dmatrix_print ( double **  A,
size_t  m,
size_t  n,
const char *  format 
)

Форматированный вывод $m\times n$ матрицы $A$ на экран.

Тип элементов - double

Примеры:
xband.c, xchol.c, xeig.c, xeigsym.c, xjacobi.c, xlaplace.c, xlu.c, xneldermead.c, xqr.c, xqrls.c, xsparse.c и xsvd.c.

double** nl_dmatrix_scan ( size_t *  m,
size_t *  n 
)

Чтение матрицы с клавиатуры.

Функция считывает с клавиатуры размеры матрицы $m$, $n$, размещает память под матрицу, считывает значения и возвращает указатель на матрицу. Тип элементов - double

void nl_dmatrix_sub ( size_t  m,
size_t  n,
double **  A,
double **  B 
)

Вычитает из матрицы $A$ размера $m\times n$ матрицу B размера $m\times n$ Результат в матрице $А$.

void nl_dvector_add ( double *  a,
const double *  b,
size_t  n 
)

Сложение векторов.

void nl_dvector_axpy ( double  alpha,
const double *  x,
const double *  y,
size_t  n,
double *  z 
)

Вычисление вектора $z = \alpha x + y$.

void nl_dvector_copy ( double *  a,
const double *  b,
size_t  n 
)

Копирует вектор $b$ в вектор $a$.

Тип элементов - double

double* nl_dvector_create ( size_t  n  ) 

Создать вектор длины $n$.

Функция размещает память под вектор и возвращает указатель на него. Тип элементов - double

Примеры:
xandrew.c, xband.c, xbicg.c, xchol.c, xeig.c, xeigsym.c, xfft.c, xjacobi.c, xlu.c, xmda.c, xneldermead.c, xqhull.c, xqr.c, xqrls.c, xspbicnj.c, xspconjs.c, xsvd.c и xtridiag.c.

double* nl_dvector_create_copy ( const double *  v,
size_t  n 
)

Создать копию вектора $v$ длины $n$.

Функция размещает память под вектор, копирует значения и возвращает указатель на него. Тип элементов - double

double nl_dvector_diff_norm1 ( const double *  a,
const double *  b,
size_t  n 
)

Вычисление 1-нормы (манхеттенской) разности двух векторов.

double nl_dvector_diff_norm2 ( const double *  a,
const double *  b,
size_t  n 
)

Вычисление 2-нормы разности (евклидовой) двух векторов.

double nl_dvector_dot ( const double *  a,
const double *  b,
size_t  n 
)

Вычисление скалярного произведения векторов.

void nl_dvector_fprint ( FILE *  file,
const double *  v,
size_t  n,
const char *  format 
)

Форматированный вывод вектора $v$ длины $n$ в файл file.

Тип элементов - double

double* nl_dvector_fread ( const char *  filename,
size_t *  n 
)

Чтение вектора из файла.

Функция считывает из файла с именем $filename$ размер вектора $n$, размещает память под вектор, считывает значения и возвращает указатель на вектор. Тип элементов - double

void nl_dvector_free ( double *  v  ) 

Освободить память, занятую вектором $v$ длины $n$.

Тип элементов - double

Примеры:
xandrew.c, xband.c, xbicg.c, xchol.c, xeig.c, xeigsym.c, xfft.c, xjacobi.c, xlu.c, xmda.c, xneldermead.c, xqhull.c, xqr.c, xqrls.c, xspbicnj.c, xspconjs.c, xsvd.c и xtridiag.c.

double* nl_dvector_fscan ( FILE *  file,
size_t *  n 
)

Чтение вектора из файла.

Функция считывает из файла $file$ размер вектора $n$, размещает память под вектор, считывает значения и возвращает указатель на вектор. Тип элементов - double

void nl_dvector_fwrite ( const char *  filename,
double *  v,
size_t  n,
const char *  format 
)

Форматированный вывод вектора $v$ длины $n$ в файл с именем $filename$.

Тип элементов - double

double* nl_dvector_mult_dmatrix ( double *  b,
double **  A,
size_t  m,
size_t  n 
)

Умножение вектора-строки $b$ на матрицу $A$.

Функция выделяет память под результирующий вектор и записывает в него результат умножения.

double nl_dvector_norm1 ( const double *  a,
size_t  n 
)

Вычисление 1-нормы (манхеттенской) вектора.

double nl_dvector_norm2 ( const double *  a,
size_t  n 
)

Вычисление 2-нормы (евклидовой) вектора.

double nl_dvector_norm_inf ( const double *  a,
size_t  n 
)

Вычисление $\infty$-нормы (чебышевой) вектора.

void nl_dvector_permute ( const double *  a,
const size_t *  P,
size_t  n,
double *  b 
)

Перестановка элементов вектора.

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

void nl_dvector_print ( double *  v,
size_t  n,
const char *  format 
)

Форматированный вывод вектора $v$ длины $n$ на экран.

Тип элементов - double

Примеры:
xband.c, xbicg.c, xchol.c, xeig.c, xeigsym.c, xfft.c, xjacobi.c, xlaplace.c, xlu.c, xmda.c, xneldermead.c, xqr.c, xqrls.c, xspbicnj.c, xspchol.c, xspconjs.c, xspseid.c, xsvd.c и xtridiag.c.

double* nl_dvector_scan ( size_t *  n  ) 

Чтение вектора с клавиатуры.

Функция считывает с клавиатуры размер вектора $n$, размещает память под вектор, считывает значения и возвращает указатель на вектор. Тип элементов - double

void nl_dvector_sub ( double *  a,
const double *  b,
size_t  n 
)

Вычитание из вектора $a$ вектора $b$.

void nl_xvector_copy ( size_t *  a,
const size_t *  b,
size_t  n 
)

Копирует вектор $b$ в вектор $a$.

Тип элементов - size_t

size_t* nl_xvector_create ( size_t  n  ) 

Создать вектор длины $n$.

Функция размещает память под вектор и возвращает указатель на него. Тип элементов - size_t

Примеры:
xandrew.c, xband.c, xeig.c, xlu.c, xmda.c и xqhull.c.

size_t* nl_xvector_create_copy ( size_t *  v,
size_t  n 
)

Создать копию вектора $v$ длины $n$.

Функция размещает память под вектор, копирует значения и возвращает указатель на него. Тип элементов - size_t

void nl_xvector_fprint ( FILE *  file,
const size_t *  v,
size_t  n,
const char *  format 
)

Форматированный вывод вектора $v$ длины $n$ в файл file.

Тип элементов - size_t

size_t* nl_xvector_fread ( const char *  filename,
size_t *  n 
)

Чтение вектора из файла.

Функция считывает из файла с именем $filename$ размер вектора $n$, размещает память под вектор, считывает значения и возвращает указатель на вектор. Тип элементов - size_t

void nl_xvector_free ( size_t *  v  ) 

Освободить память, занятую вектором $v$ длины $n$.

Тип элементов - size_t

Примеры:
xandrew.c, xband.c, xeig.c, xlu.c, xmda.c и xqhull.c.

size_t* nl_xvector_fscan ( FILE *  file,
size_t *  n 
)

Чтение вектора из файла.

Функция считывает из файла $file$ размер вектора $n$, размещает память под вектор, считывает значения и возвращает указатель на вектор. Тип элементов - size_t

void nl_xvector_fwrite ( const char *  filename,
size_t *  v,
size_t  n,
const char *  format 
)

Форматированный вывод вектора $v$ длины $n$ в файл с именем $filename$.

Тип элементов - size_t

void nl_xvector_print ( size_t *  v,
size_t  n,
const char *  format 
)

Форматированный вывод вектора $v$ длины $n$ на экран.

Тип элементов - size_t

Примеры:
xeig.c, xlu.c и xmda.c.

size_t* nl_xvector_scan ( size_t *  n  ) 

Чтение вектора с клавиатуры.

Функция считывает с клавиатуры размер вектора $n$, размещает память под вектор, считывает значения и возвращает указатель на вектор. Тип элементов - size_t


Переменные

void(*) nl_error(nl_err_enum error, int critical)

Указатель на функцию, которая вызывается в случае возникновения ошибки.

По умолчанию печатает на консоли сообщение об ошибке и в случае, если critical отлично от нуля или переменная nl_exit_when_error отлична от нуля, аварийно завершает работу программы. В случае необходимости пользователь может написать свой обработчик ошибок.

int nl_exit_when_error

Если значение этой переменной отлично от нуля, то в случае возникновения ошибки процедура nl_error прерывает работу программы.


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