Задание 3 (индивидуальное): использование динамических библиотек
Требуемые условия завершения
Открыто с: понедельник, 17 ноября 2014, 13:15
Срок сдачи: четверг, 4 декабря 2014, 16:15
- Реализовать следующие алгоритмы генераторов псевдослучайных величин:
- Равномерное распределение: ri + 1 = { 11 ri + π }
- Равномерное распределение: ri + 1 = { eπ + ri }
- Равномерное распределение: ri + 1 = { (π - 2 + ri)2 }
- Нормальное распределение с параметрами m и σ: сумма большого количества (K ≈ 50) случайных величин, распределённых равномерно на отрезке [0, 1]. Из полученной суммы необходимо вычесть K / 2, разделить на (K / 12)1 / 2, умножить на σ и прибавить m.
Замечание: фигурные скобки: { } обозначают операцию взятия дробной части числа.
Каждый из алгоритмов реализовать в отдельной динамической библиотеке, загружать которые необходимо в основной программе динамически по запросу пользователя. Также основная программа должна статически зависеть от динамической библиотеки, в которой реализован алгоритм нахождения гистограммы заданного генератора случайных чисел (указатель на функцию) в заданном диапазоне, с заданным количеством интервалов разбиения с заданным количеством испытаний. Основная программа должна спрашивать у пользователя все требуемые входные данные, загружать библиотеку с генератором и вызывать функцию получения гистограммы. - Реализовать следующие передаточные функции фильтров:
- Нижних частот: yi = (1 - α) xi + α yi - 1
- Верхних частот: yi = α yi - 1 + α (xi - xi - 1)
Где α = RC / (RC + Δt), RC = 1 / (2 π fc), fc - пороговая частота, Δt - шаг квантования сигнала по времени.
Каждую из функций реализовать в отдельной динамической библиотеке, загружать которые необходимо в основной программе динамически по запросу пользователя. Также основная программа должна статически зависеть от динамической библиотеки, в которой реализован алгоритм фильтрации заданного дискретезированного сигнала, хранящегося в массиве. Основная программа должна считывать из файла входные данные или генерировать сигнал с заранее известными частотами, загружать библиотеку с функцией фильтра и вызывать функцию фильтрации. - Реализовать несколько вещественных функций–левых частей уравнения f(x) = 0. Каждую из функций вместе с её первой и второй производными реализовать в отдельной динамической библиотеке, загружать которые необходимо в основной программе динамически по запросу пользователя. Также основная программа должна статически зависеть от динамической библиотеки, в которой реализован алгоритм решения уравнения методом Ньютона. В основной программе необходимо спрашивать у пользователя название используемой функции, точность и интервал поиска решения, после чего вызывать функцию поиска решения, реализованную в динамической библиотеке.
- Реализовать несколько вещественных функций–левых частей уравнения f(x) = 0. Каждую из функций реализовать в отдельной динамической библиотеке, загружать которые необходимо в основной программе динамически по запросу пользователя. Также основная программа должна статически зависеть от динамической библиотеки, в которой реализован алгоритм решения уравнения методом простых итераций. В основной программе необходимо спрашивать у пользователя название используемой функции, точность и интервал поиска решения, после чего вызывать функцию поиска решения, реализованную в динамической библиотеке.
- Реализовать несколько вещественных функций–подынтегральных выражений определённого интеграла ∫ba f(x) dx. Каждую из функций реализовать в отдельной динамической библиотеке, загружать которые необходимо в основной программе динамически по запросу пользователя. Также основная программа должна статически зависеть от динамической библиотеки, в которой реализован алгоритм нахождения определённого интеграла методом Симпсона. В основной программе необходимо спрашивать у пользователя название используемой функции, точность и интервал поиска решения, после чего вызывать функцию вычисления интеграла, реализованную в динамической библиотеке.
- Реализовать несколько вещественных функций–рекуррентных соотношений для вычисления очередного слагаемого ряда Тейлора ak = f(ak - 1) для рядов функций sin x, ex, arctg x. Каждую из функций реализовать в отдельной динамической библиотеке, загружать которые необходимо в основной программе динамически по запросу пользователя. Также основная программа должна статически зависеть от динамической библиотеки, в которой реализован алгоритм нахождения суммы ряда с заданным начальным слагаемым, заданной рекуррентной функцией, точностью и максимальным количеством слагаемых. В основной программе необходимо спрашивать у пользователя название используемого рекуррентного соотношения, точность и максимальное количество слагаемых, после чего вызывать функцию вычисления суммы ряда, реализованную в динамической библиотеке.
- Реализовать следующие алгоритмы генераторов равномерно распределённых псевдослучайных величин:
- ri + 1 = { 11 ri + π }
- ri + 1 = { eπ + ri }
- ri + 1 = { (π - 2 + ri)2 }
Замечание: фигурные скобки: { } обозначают операцию взятия дробной части числа.
Каждый из алгоритмов реализовать в отдельной динамической библиотеке, загружать которые необходимо в основной программе динамически по запросу пользователя. Также основная программа должна статически зависеть от динамической библиотеки, в которой реализован алгоритм нахождения тройного интеграла заданной функции методом Монте-Карло на шаре единичного диаметра. Также в отдельных библиотеках необходимо реализовать две функции от трёх аргументов, для которых необходимо искать интеграл. Основная программа должна спрашивать у пользователя все требуемые входные данные, загружать библиотеки с генератором и подынтегральной функцией и вызывать функцию интегрирования. - Реализовать несколько вещественных функций от двух переменных-правых частей дифференциальных уравнений первого порядка: f(x, y). Каждую из функций реализовать в отдельной динамической библиотеке, загружать которые необходимо в основной программе динамически по запросу пользователя. Также основная программа должна статически зависеть от динамической библиотеки, в которой реализован алгоритм нахождения решения задачи Коши методом Эйлера на заданном интервале с заданным шагом:
y' = f(x, y) y(x0) = y0 Основная программа должна спрашивать у пользователя все требуемые входные данные, загружать библиотеки с функцией и вызывать алгоритм метода Эйлера.