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

4. Комбинаторика

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

ulong fact(int k)

double factd(int k)

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

int permut(int n, int* p);

Получение перестановок элементов массива p размером n. При каждом вызове функция permut изменяет массив p, формируя очередную перестановку. Возвращ. значение - номер очередной выборки или 0 (если все перестановки исчерпаны).

int permut_rand(int n, int* p)

Функция осуществляет случайную перестановку в массиве p. Возвращается текущий номер вызова функции.

int arrang(int m, int n, int* p);

Получение m-элементных размещений элементов массива p размером n. Генерируемые размещения занимают первые m позиций массива p. При каждом вызове функция arrang изменяет массив p, формируя очередную выборку. Возвращаемое значение - номер очередной выборки или 0, если все выборки исчерпаны.

int subsetnext(int n, int r, int* A);

Получение r-элементных подмножеств из n-элементного множества А. Массив А содержит не сами элементы исходного множества, а их номера. Генерируемые подмножества занимают первые r позиций массива А, который должен иметь длину n . При каждом вызове функция subsetnext изменяет массив A, формируя очередное подмножество. Возвращамемое значение - номер очередного подмножества (начиная с 1) или 0, если все подмножества исчерпаны.

5. Интерполяция и аппроксимация

Классы Linter и Spline упрощают программирование операций интерполяции данных. Класс Linter используется для линейной интерполяции, класс Spline – для интерполяции данных кубическими сплайнами.

Пусть x, y – одномерные массивы размером n, представляющие зависимость f(t) в табличной форме. Тогда оператор вида

Linter f(n,x,y);

создает функцию f(t) для линейной интерполяции указанных данных. Оператор

Spline f(n,x,y);

создает функцию f(t) для интерполяции данных кубическими сплайнами. Описание используемого алгоритма сплайн-интерполяции можно посмотреть в [4].

Следующая функция вычисляет параметры a0, a1, выполняя линейную аппроксимацию данных:

void linappr(int n, double* x, double* y, double& a0, double& a1);

Данные представлены таблицей в массивах x,y размером n, аппроксимирующая функция имеет вид:

y = a0 + a1x .

6. Получение случайных чисел

double frand()

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

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

Класс Randis позволяет получать случайные числа, распределение которых соответствует заданному образцу. Пусть x – массив случайных чисел с произвольным распределением, n – размер массива. Оператор

Randis f(m,n,x);

создает функцию f(), возвращающую при каждом вызове случайное число с распределением, соответствующим случайной величине x. Параметр m – число интервалов, используемых для построения функции распределения величины x. Функция – генератор случайных чисел f() не имеет параметров, тип взвращаемого значения double. Для решения задачи используется метод, описанный в [5].

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