Заголовки функций из готовых модулей со списком входных и выходных параметров (Модуль Matrix. Модуль LinSys. Модуль Root. Модуль DataFile)

Страницы работы

Фрагмент текста работы

Приложение 2

Готовые функции, используемые в лабораторных работах

В данном приложении приводятся заголовки функций из готовых модулей со списком входных и выходных параметров. Они необходимы для правильного использования этих функций. С полными текстами можно ознакомиться по cpp-файлам. Заголовочный файл define.h приводится полностью. 

Заголовочный файл define.h

// Заголовочный файл для описания нестандартных типов

// - одномерных и двумерных массивов

// Вариант для 2-го семестра Информатики

#ifndef DEFINE_H_

#define DEFINE_H_

#define MatVecSize  20

#define LongVecSize 400

// одномерныймассив - вещественныйвектор

typedef double  Vector[MatVecSize+1];

// одномерный массив - длинный вещественный вектор

     typedef double  LVector[LongVecSize+1];

// двумерный массив - вещественная матрица

typedef double  Matrix[MatVecSize+1][MatVecSize+1];

// одномерный символьный массив - строка

     typedef char string[80];

// двумерный символьный массив - лист текста

     typedef char list[40][80];

// вещественная функция вещественного аргумента

typedef double (*f_x)(double);

#endif DEFINE_H_

Модуль  Matrix

Модуль Matrix содержит функции для работы с матрицами:

InpMat() – ввод матрицы с клавиатуры;

OutMat() – вывод матрицы на экран монитора;

MultMat() – умножение двух матриц;

DegMat() – возведение матрицы в целую степень;

NormMat() – вычисление нормы матрицы.

Заголовок и список параметров функции InpMat() следующий:

void InpMat(int& m, int& n, Matrix A)

Входные переменные:

m - число строк матрицы;

n -исло столбцов матрицы;

Выходные переменные:

m - число строк матрицы;

n - число столбцов матрицы;

A - вводимая матрица (двумерный массив);

Примечание:

Переменные m и n являются одновременно входными и выходными. В зависимости от того, какие значения они будут иметь при вызове функции InpMat(), реализуется следующее:

m== 0 и n == 0 - происходит запрос числа строк и столбцов матрицы;

m != 0 и n != 0 - происходит ввод матрицы с числом строк, равным m и числом столбцов, равным n;

m != 0, а n == 0 - происходит запрос числа строк и столбцов квадратной матрицы.

M == 0, а n != 0 - происходит ввод квадратной матрицы с числом строк и столбцов, равным n;

Заголовок и список параметров функции OutMat() следующий:

void OutMat(int m, int n, Matrix A, int w, int p)

Входные переменные:

m   - число строк матрицы;

n   - число столбцов матрицы;

A   - выводимая матрица (двумерный массив);

w   - число позиций для вывода одного элемента матрицы;

p   - число позиций для вывода дробной части элемента матрицы.

Выходные переменные - нет.

Заголовок и список параметров функции MultMat() следующий:

void MultMat(int m, int n, int p, Matrix A, Matrix B,

Matrix C)

Входные переменные:

m - число строк матрицы A - первого сомножителя;

n - число столбцов матрицы A - первого сомножителя и строк матрицы B

– второго сомножителя;

p - число столбцов матрицы B - второго сомножителя;

A - матрица-первый сомножитель (двумерный массив);

B - матрица-второй сомножитель (двумерный массив);

Выходные переменные:

С - матрица-произведение - результат  (двумерный массив).

Заголовок и список параметров функции DegMat() следующий:

void DegMat(int n, Matrix A, int m, Matrix Am)

Входные переменные:

n - число строк и столбцов возводимой квадратной матрицы;

A - возводимая матрицы (двумерный массив);

m - степень, в которую возводится матрица;

Выходные переменные:

Am - результат возведения в степень (тоже квадратная матрица)

Заголовок и список параметров функции NormMat() следующий:

double NormMat(int m, int n, Matrix A)

Входные переменные:

m - число строк матрицы;

n - число столбцов матрицы;

A - матрица (двумерный массив);

Возвращаемое значение - норма матрицы;

Модуль LinSys

Модуль LinSys содержит функцию LinGauss(). Она предназначена для решения систем линейных алгебраических уравнений методом Гаусса. Ее заголовок имеет вид:

int LinGauss(int n, Matrix A, Vector F, int KeyDemo,

VectorX, double& det)

Входные переменные:

n - порядок СЛАУ (число уравнений);

A   - матрица коэффициентов (двумерный массив);

F   - вектор свободных членов (одномерный массив);

KeyDemo - ключ демонстрации хода решения:

KeyDemo = 0 - нет демонстрации;

KeyDemo = 3 – вывод данных в файл;

Выходные переменные:

X - вектор неизвестных (одномерный массив);

det - определитель матрицы коэффициентов системы;

Возвращаемое значение:

LinGauss - это код ошибки:

LinGauss = 0 - все нормально;

    LinGauss = 1,2,3... - в главной диагонали при пересчете матрицы образовался нулевой элемент. Дальнейшее решение невозможно - определитель будет равен нулю. При этом возвращаемое значение указывает индексы этого элемента.

МодульIntegral

Модуль Integral содержит функцию SdxSimps(). Она предназначена для расчета определенных интегралов методом Симпсона.  Ее заголовок имеет вид:

double SdxSimps(f_x FuncName, double a, double b, int n)

Входные переменные:                                            

FuncName  - имя подпрограммы, задающей подынтегральную функцию;

a         - нижний предел интегрирования;                       

b         - верхний предел интегрирования;                     

n         - число элементарных интервалов интегрирования;      

Возвращаемое значение:                                         

SdxSimps - значение интеграла;                              

МодульRoot

Модуль Root содержит функцию RootNewton(). Она предназначена для решения нелинейных уравнений методом Ньютона. Ее заголовок имеет следующий вид:

int RootNewton(f_x FuncName, double epsX, double epsF,

         double& X, double& Fx, int& Nckl, int KeyDemo=0,

 double dXmax=FLT_MAX, int limit=500)

Входные переменные:

FuncName - имя функции,  реализующей левую часть уравнения;

epsX - абсолютная погрешность вычисления корня;

epsF - абсолютная погрешность невязки левой части уравнения с нулем;

X - нулевое приближение корня;

Необязательные входные переменные:

KeyDemo - ключ демонстрации промежуточных данных (итераций):

KeyDemo = 1 происходит непрерывный  вывод  данных итераций на дисплей;

KeyDemo = 2 происходит вывод с приостановом;

KeyDemo = 0 вывода нет.

dXmax - максимальная величина итерационного шага, при превышении которой происходит его ограничение;

limit - предельно допустимое число итераций, при достижении которого происходит выход из подпрограммы для предупреждения зацикливания;

Выходные переменные:

X     - найденное значение корня;

Fx    - значение левой части уравнения от значения корня;

Nckl  - число совершенных итераций.

Возвращаемое значение:

RootNewton - код ошибки:

RootNewton = 0 - все нормально;

RootNewton= 1 - левая часть уравнения не вычисляется (аргумент принял недопустимое значение);

RootNewton = 2 - сходимость на limit итераций не достигнута;

RootNewton = 3 - значение производной равно нулю и дальнейшие итера- ции невозможны.

Примечания:

1.  Левая часть уравнения  должна быть оформлена  в виде функции с заголовком:     doubleFuncName(doublex).

2.  Имя функции может быть любым и передается в RootNewton через указатель *FuncName в списке ее формальных параметров.

3.  Рекомендуется, чтобы  FuncName  возвращало значение FLT_MAX  (константа из <float.h>),если значение аргумента вышло изобласти определения функции. Например,

#include <math.h>

#include <float.h>

double f(double x)

{

if (x<0.0) return FLT_MAX;

return sqrt(x);

}

Это позволит корректно завершить итерационный процесс.

4.  Для исключения механизма  ограничения приращений  (если это необходимо) следует значение параметра  dXmax задать достаточно большим, например, той же константе FLT_MAX.

Модуль  DataFile

Модуль DataFile содержит функции для работы с файлами. Основные функции предназначены для записи в файл и чтения из файла одномерных и двумерных массивов:

WriteVec() – запись одномерного массива - вектора;

ReadVec() – чтение одномерного массива - вектора;

Write2Vec()- запись двух одномерных массивов – векторов;

WriteMat() – запись двумерного массива – матрицы;

ReadMat() – чтение двумерного массива – матрицы.

Заголовок и список параметров функции WriteVec() следующий:

Похожие материалы

Информация о работе