Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АиПА / include / dalmat Описание.doc
Скачиваний:
8
Добавлен:
07.02.2016
Размер:
78.34 Кб
Скачать

7

В.П. Пинчук

Библиотека VP / C++ . Модуль dalmat.h

Запорожье, ЗНТУ, 2005.

Тел. (0612) 636800, e-mail: vpinchuk@zntu.edu.ua

1. Модуль dalmat.H

1.1 Описание модуля

1.2 Примеры использования классов и функций

1.3 Исключения

1.1 Описание модуля

Библиотечный модуль dalmat.hвходит в состав библиотеки программных компонентовVP/C++, он содержит набор классов, функций и процедур для решения задач линейной алгебры и обработки данных. Интерфейсная часть модуля с подробными комментариями приводится ниже.

/* Библиотека VP/C++, модуль dalmat.h, версия 04.2004 ----------------*/

/* Пинчук В.П. ЗНТУ, Запорожье, Украина */

/*-- класс dmatrix: прямоугольные матрицы с элементами типа double ---*/

class dmatrix

{ public:

int n,m; // n - число строк матрицы, m - число столбцов

double** r; // r - имя для доступа к элементам динамической матрицы

dmatrix() { n=m=0; r=0; } // конструктор без параметров

dmatrix(int); // конструктор для создания квадратной матрицы

dmatrix(int,int); // конструктор для создания прямоугольной матрицы

dmatrix(double**, int, int); // конструктор: создание матрицы и // инициализация с помощью внешнего двухмерног массива

dmatrix(const dmatrix&); // конструктор копирования

~dmatrix(); // деструктор

dmatrix& operator=(const dmatrix&); // перегрузка присваивания

dmatrix& operator=(double); // преобразование матрицы в диагональную

double* operator[](int); // перегрузка для использования индексов

dmatrix operator~(); // операция транспонирования

double det(); // вычисление определителя

void rand(double, double); // формирование матрицы, элементы // которой предсавляют собой случайные числа из заданного интервала };

FILE* operator<<(FILE*, const dmatrix&); // вывод матрицы в файл

FILE* operator>>(FILE*, dmatrix&); // ввод матрицы из файла

double amax(const dmatrix& A); // найти максим. по модулю элемент // матрицы

/*---- класс dvector: одномерные массивы с элементами типа double ----*/

class dvector

{ public:

int m; // число элементов вектора

double* r; // указатель одномерного динамического массива

dvector() { m=0; r=0; } // конструктор без параметров

dvector(int); // конструктор для создания вектора с заданным // числом элементов

dvector(int,double*); // конструктор: создание и инициализация // вектора внешним массивом

dvector(const dvector&); // конструктор копирования

~dvector() { delete[] r; } // деструктор

dvector& operator=(const dvector&); // перегрузка присваивания

double& operator[](int); // перегрузка индексирования

double length(); // геометрическая длина n-мерного вектора

dvector& rand(double, double); // формирование вектора, элементы // которого предсавляют собой случайные числа из заданного интервала };

double amax(const dvector& A); // максимальный по модулю элемент

/*------------------ класс ftable: таблица данных --------------------*/

class ftable

{ public:

int n; // число строк таблицы

double *x, *y; // массивы для значений аргумента и функции

ftable() { n=0; x=y=NULL; } // конструктор без параметров

ftable(int, double*, double*); // конструктор инициализации с // использованием внешних массивов

ftable(dvector&, dvector&); // конструктор инициализации с // использованием значений типа dvector

ftable(const ftable&); // конструктор копирования

~ftable() { delete[] x, delete[] y; } // деструктор

ftable& operator=(const ftable&); // перегрузка присваивания

void operator>>(FILE*); // запись в файл

void operator<<(FILE*); // чтение из файла

};

/* ---------------- Внешние перегруженные операции -------------------*/

dmatrix operator+(const dmatrix& A, const dmatrix& B);

// поэлементное сложение матриц

dmatrix operator-(const dmatrix& A, const dmatrix& B);

// вычитание матриц

dmatrix operator*(const dmatrix& A, const dmatrix& B);

// умножение матриц

dmatrix operator*(double p, const dmatrix& B);

// умножение числа на матрицу

dmatrix operator*(const dmatrix& A, double p);

// умножение матрицы на число

dvector operator*(const dmatrix& A, const dvector& X);

// умножение матрицы на вектор

dmatrix operator/(double e, const dmatrix& D);

// деление числа на матрицу

dmatrix operator/(const dmatrix& A, const dmatrix& B);

// деление матрицы на матрицу

dvector operator+(const dvector& A, const dvector& B);

// поэлементное сложение векторов (одномерных массивов)

dvector operator-(const dvector& A, const dvector& B):

// поэлементное вычитание векторов (одномерных массивов)

double operator*(const dvector& A, const dvector& B);

// скалярное умножение векторов

FILE* operator<<(FILE* f, const dvector& V);

// запись вектора в файл

FILE* operator>>(FILE* f, dvector& V);

// чтение вектора из файла

void gauss(const dmatrix& A, const dvector& B, dvector& X);

// решение системы линейных уравнений методом Гаусса

double polin(dvector& a, double x);

// вичисление полинома

dvector interpolinom(dvector& x, dvector& y);

// получить значения коэффициентов интерполирующего полинома

dvector polinappr(ftable F, int p);

// выполнить аппроксимацию полиномом порядка p

Соседние файлы в папке include