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

2.4. Математические функции

Type abs(Type x);

Абсолютная величина (или модуль) от x.

template <class T>

inline Type Max(const Type& a, const Type& b);

Возвращается большее из значений аргументов a,b.

template <class T>

inline Type Min(const Type& a, const Type& b);

Возвращается меньшее из значений аргументов a,b.

double frac(double x)

Дробная часть x в формате double.

int round(double x)

Приведение к целому путем округления.

float frand()

Случайное число из интервала [0,1]. Для формирования результата используется стандартный генератор целых случайных чисел random(int).

float frand(float a, float b) Случайное число из заданного интервала [a,b].

ulong fact(int k)

double factd(int k)

Фунцкии для вычисления факториала. Разные типы возвращаемых значений позволяют получить факториал для разных интервалов значений аргумента: для функции factk12, для функцииfactdk170.

ulong Cmb(int n, int r); Число сочетаний изnпоr.

double simps(double (*fun)(double), double a, double b, int N);

Функция вычисляет интеграл по методу Симпсона. Параметры: a,b- пределы интегрирования,N- число шагов интегрирования,fun- имя подынтегральной функции, которая должна быть описана как функция типаdouble fun(double).

double erfc(double x);

Функция возвращает значение дополнительного интеграла ошибок.

,

где

.

Используется комбинированный алгоритм из работы [2].

inline int numbit(Type x)

Число единиц в бинарном коде значения x.

int hamdist(Type a, Type b)

Расстояние Хэмминга для бинарных кодов значений a,b (количество несовпадающих битов).

double polin(int n, double* a, double x);

Вычисление полинома порядка n по схеме Горнера, размер массива коэффициентов a равен n+1 .

double th(double x)

Тангенс гиперболический от x .

double lanj(double x)

Значение функции ланжевена:

.

Для вычисления используется метод разложения в цепную дробь, описание см. в работе [3]. Значения параметров алгоритма: размерность цепной дроби: 13, точка переключения: 2.0.

2.5. Специальные классы. Класс Spline для интерполяции данных сплайнами

class Spline

{ int n; // n - размер таблицы

float *x, *y; // массивы x,y содержат копию исходной таблицы // зависимости y(x)

float *M; // M - вспомогательный рабочий массив

public:

Spline(int, float*, float*); // конструктор, выполняет // инициализацию создаваемого объекта и вычисляет // вспомогательный массив M

~Spline();

double operator()(double);

// перегрузка операции вызова функции, для выполнения сплайн-интерполяцию

};

Программная реализация алгоритма сплайн-интерполяции на языке BASICприводится в книге [4]. Ниже приведен простой пример использования классаSplineдля сплайн-интерполяции табличных данных. Исходная таблица данных размещается в массивахx,y.

#include <syst.h>

void main()

{ float t; int i;

float x[]= { 0, 1, 2, 3, 4, 5 },

y[]= { 1, 4, 6, 6, 5, 4 };

Spline f(6,x,y); // создать функцию f для интерполяции

for (i=0;i<12;i++) { t=i*0.5; printf("t=%f y=%f \n",t,f(t)); }

pause;

}

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