Обработка ошибок | |
| 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) |
Создать вектор длины . | |
| size_t * | nl_xvector_create (size_t n) |
Создать вектор длины . | |
| double * | nl_dvector_create_copy (const double *v, size_t n) |
Создать копию вектора длины . | |
| size_t * | nl_xvector_create_copy (size_t *v, size_t n) |
Создать копию вектора длины . | |
| void | nl_dvector_copy (double *a, const double *b, size_t n) |
Копирует вектор в вектор . | |
| void | nl_xvector_copy (size_t *a, const size_t *b, size_t n) |
Копирует вектор в вектор . | |
| void | nl_dvector_free (double *v) |
Освободить память, занятую вектором длины . | |
| void | nl_xvector_free (size_t *v) |
Освободить память, занятую вектором длины . | |
Ввод и вывод векторов | |
| void | nl_dvector_print (double *v, size_t n, const char *format) |
Форматированный вывод вектора длины на экран. | |
| void | nl_xvector_print (size_t *v, size_t n, const char *format) |
Форматированный вывод вектора длины на экран. | |
| void | nl_dvector_fprint (FILE *file, const double *v, size_t n, const char *format) |
Форматированный вывод вектора длины в файл file. | |
| void | nl_xvector_fprint (FILE *file, const size_t *v, size_t n, const char *format) |
Форматированный вывод вектора длины в файл file. | |
| void | nl_dvector_fwrite (const char *filename, double *v, size_t n, const char *format) |
Форматированный вывод вектора длины в файл с именем . | |
| void | nl_xvector_fwrite (const char *filename, size_t *v, size_t n, const char *format) |
Форматированный вывод вектора длины в файл с именем . | |
| 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) |
Вычитание из вектора вектора . | |
| 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) |
Вычисление -нормы (чебышевой) вектора. | |
| 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) |
Вычисление вектора . | |
| 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) |
Создать матрицу с размерами . | |
| double ** | nl_dmatrix_create_copy (const double **A, size_t m, size_t n) |
Создать копию матрицы с размерами . | |
| void | nl_dmatrix_copy (double **A, const double **B, size_t m, size_t n) |
Копирует -матрцу B матрицу . | |
| void | nl_dmatrix_free (double **A, size_t m) |
Освободить память, занятую матрицей с размерами . | |
| 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) |
Форматированный вывод матрицы на экран. | |
| void | nl_dmatrix_fprint (FILE *file, double **A, size_t m, size_t n, const char *format) |
Форматированный вывод матрицы в файл . | |
| void | nl_dmatrix_fwrite (const char *filename, double **A, size_t m, size_t n, const char *format) |
Форматированный вывод матрицы в файл с именем . | |
| 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) |
Умножает матрицу размера на матрицу B Результат в размера . | |
| 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) |
Вычитает из матрицы размера матрицу B размера Результат в матрице . | |
| 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) |
Умножение вектора-строки на матрицу . | |
| void | nl_dmatrix_mult_dvector (double **A, size_t m, size_t n, const double *b, double *res) |
Умножение матрицы на вектор справа. | |
Файл содержит вспомогательные процедуры для библиотеки численных методов.
| enum nl_err_enum |
Коды ошибок.
| 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 | |||
| ) |
Конвертация представления матрицы.
Матрица
с размерами
, представленная в виде списка своих элементов (по строкам), конвертируется в представление, принятое в библиотеке. Тип элементов - double
| void nl_dmatrix_copy | ( | double ** | A, | |
| const double ** | B, | |||
| size_t | m, | |||
| size_t | n | |||
| ) |
Копирует
-матрцу B матрицу
.
Под элементы матрицы
должно быть выделено место. Тип элементов - double
| double** nl_dmatrix_create | ( | size_t | m, | |
| size_t | n | |||
| ) |
| double** nl_dmatrix_create_copy | ( | const double ** | A, | |
| size_t | m, | |||
| size_t | 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 | |||
| ) |
Форматированный вывод
матрицы
в файл
.
Тип элементов - double
| double** nl_dmatrix_fread | ( | const char * | filename, | |
| size_t * | m, | |||
| size_t * | n | |||
| ) |
Чтение матрицы из файла.
Функция считывает из файла с именем
размеры матрицы
,
, размещает память под матрицу, считывает значения и возвращает указатель на матрицу. Тип элементов - double
| void nl_dmatrix_free | ( | double ** | A, | |
| size_t | m | |||
| ) |
| double** nl_dmatrix_fscan | ( | FILE * | file, | |
| size_t * | m, | |||
| size_t * | n | |||
| ) |
Чтение матрицы из файла.
Функция считывает из файла
размеры матрицы
,
, размещает память под матрицу, считывает значения и возвращает указатель на матрицу. Тип элементов - double
| void nl_dmatrix_fwrite | ( | const char * | filename, | |
| double ** | A, | |||
| size_t | m, | |||
| size_t | n, | |||
| const char * | format | |||
| ) |
Форматированный вывод
матрицы
в файл с именем
.
Тип элементов - double
| void nl_dmatrix_mult | ( | size_t | m, | |
| size_t | n, | |||
| size_t | k, | |||
| double ** | A, | |||
| double ** | B, | |||
| double ** | Mul | |||
| ) |
Умножает матрицу
размера
на матрицу B
Результат в
размера
.
| void nl_dmatrix_mult_dvector | ( | double ** | A, | |
| size_t | m, | |||
| size_t | n, | |||
| const double * | b, | |||
| double * | res | |||
| ) |
Умножение матрицы
на вектор
справа.
- исходная матрица
- число строк матрицы 
- число столбцов матрицы 
- вектор-столбец
| void nl_dmatrix_print | ( | double ** | A, | |
| size_t | m, | |||
| size_t | n, | |||
| const char * | format | |||
| ) |
| double** nl_dmatrix_scan | ( | size_t * | m, | |
| size_t * | n | |||
| ) |
Чтение матрицы с клавиатуры.
Функция считывает с клавиатуры размеры матрицы
,
, размещает память под матрицу, считывает значения и возвращает указатель на матрицу. Тип элементов - double
| void nl_dmatrix_sub | ( | size_t | m, | |
| size_t | n, | |||
| double ** | A, | |||
| double ** | B | |||
| ) |
Вычитает из матрицы
размера
матрицу B размера
Результат в матрице
.
| 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 | |||
| ) |
Вычисление вектора
.
- коэффициент перед 
- вектор размера 
- вектор размера 
- размер вектора 
- вектор размера
| void nl_dvector_copy | ( | double * | a, | |
| const double * | b, | |||
| size_t | n | |||
| ) |
Копирует вектор
в вектор
.
Тип элементов - double
| double* nl_dvector_create | ( | size_t | n | ) |
Создать вектор длины
.
Функция размещает память под вектор и возвращает указатель на него. Тип элементов - double
| double* nl_dvector_create_copy | ( | const double * | v, | |
| size_t | 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 | |||
| ) |
Форматированный вывод вектора
длины
в файл file.
Тип элементов - double
| double* nl_dvector_fread | ( | const char * | filename, | |
| size_t * | n | |||
| ) |
Чтение вектора из файла.
Функция считывает из файла с именем
размер вектора
, размещает память под вектор, считывает значения и возвращает указатель на вектор. Тип элементов - double
| void nl_dvector_free | ( | double * | v | ) |
Освободить память, занятую вектором
длины
.
Тип элементов - double
| double* nl_dvector_fscan | ( | FILE * | file, | |
| size_t * | n | |||
| ) |
Чтение вектора из файла.
Функция считывает из файла
размер вектора
, размещает память под вектор, считывает значения и возвращает указатель на вектор. Тип элементов - double
| void nl_dvector_fwrite | ( | const char * | filename, | |
| double * | v, | |||
| size_t | n, | |||
| const char * | format | |||
| ) |
Форматированный вывод вектора
длины
в файл с именем
.
Тип элементов - double
| double* nl_dvector_mult_dmatrix | ( | double * | b, | |
| double ** | A, | |||
| size_t | m, | |||
| size_t | n | |||
| ) |
Умножение вектора-строки
на матрицу
.
Функция выделяет память под результирующий вектор и записывает в него результат умножения.
- вектор-строка
- исходная матрица
- число строк матрицы 
- число столбцов матрицы 
| 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 | |||
| ) |
Вычисление
-нормы (чебышевой) вектора.
- вектор размера 
- размер вектора 
| void nl_dvector_permute | ( | const double * | a, | |
| const size_t * | P, | |||
| size_t | n, | |||
| double * | b | |||
| ) |
Перестановка элементов вектора.
- вектор длины 
- перестановка чисел 
- длина векторов
, 
- вектор, составленный из компонент вектора
, переставленных согласно
| void nl_dvector_print | ( | double * | v, | |
| size_t | n, | |||
| const char * | format | |||
| ) |
Форматированный вывод вектора
длины
на экран.
Тип элементов - double
| double* nl_dvector_scan | ( | size_t * | n | ) |
Чтение вектора с клавиатуры.
Функция считывает с клавиатуры размер вектора
, размещает память под вектор, считывает значения и возвращает указатель на вектор. Тип элементов - double
| void nl_dvector_sub | ( | double * | a, | |
| const double * | b, | |||
| size_t | n | |||
| ) |
Вычитание из вектора
вектора
.
- вектор
- вектор
- размер векторов
| void nl_xvector_copy | ( | size_t * | a, | |
| const size_t * | b, | |||
| size_t | n | |||
| ) |
Копирует вектор
в вектор
.
Тип элементов - size_t
| size_t* nl_xvector_create | ( | size_t | n | ) |
| size_t* nl_xvector_create_copy | ( | size_t * | v, | |
| size_t | n | |||
| ) |
Создать копию вектора
длины
.
Функция размещает память под вектор, копирует значения и возвращает указатель на него. Тип элементов - size_t
| void nl_xvector_fprint | ( | FILE * | file, | |
| const size_t * | v, | |||
| size_t | n, | |||
| const char * | format | |||
| ) |
Форматированный вывод вектора
длины
в файл file.
Тип элементов - size_t
| size_t* nl_xvector_fread | ( | const char * | filename, | |
| size_t * | n | |||
| ) |
Чтение вектора из файла.
Функция считывает из файла с именем
размер вектора
, размещает память под вектор, считывает значения и возвращает указатель на вектор. Тип элементов - size_t
| void nl_xvector_free | ( | size_t * | v | ) |
| size_t* nl_xvector_fscan | ( | FILE * | file, | |
| size_t * | n | |||
| ) |
Чтение вектора из файла.
Функция считывает из файла
размер вектора
, размещает память под вектор, считывает значения и возвращает указатель на вектор. Тип элементов - size_t
| void nl_xvector_fwrite | ( | const char * | filename, | |
| size_t * | v, | |||
| size_t | n, | |||
| const char * | format | |||
| ) |
Форматированный вывод вектора
длины
в файл с именем
.
Тип элементов - size_t
| void nl_xvector_print | ( | size_t * | v, | |
| size_t | n, | |||
| const char * | format | |||
| ) |
| size_t* nl_xvector_scan | ( | size_t * | n | ) |
Чтение вектора с клавиатуры.
Функция считывает с клавиатуры размер вектора
, размещает память под вектор, считывает значения и возвращает указатель на вектор. Тип элементов - size_t
| void(*) nl_error(nl_err_enum error, int critical) |
Указатель на функцию, которая вызывается в случае возникновения ошибки.
По умолчанию печатает на консоли сообщение об ошибке и в случае, если critical отлично от нуля или переменная nl_exit_when_error отлична от нуля, аварийно завершает работу программы. В случае необходимости пользователь может написать свой обработчик ошибок.
Если значение этой переменной отлично от нуля, то в случае возникновения ошибки процедура nl_error прерывает работу программы.
1.4.7