Задание 3 (индивидуальное): использование динамических библиотек

  1. Реализовать следующие алгоритмы генераторов псевдослучайных величин:
    • Равномерное распределение: 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.

    Замечание: фигурные скобки: { } обозначают операцию взятия дробной части числа.

    Каждый из алгоритмов реализовать в отдельной динамической библиотеке, загружать которые необходимо в основной программе динамически по запросу пользователя. Также основная программа должна статически зависеть от динамической библиотеки, в которой реализован алгоритм нахождения гистограммы заданного генератора случайных чисел (указатель на функцию) в заданном диапазоне, с заданным количеством интервалов разбиения с заданным количеством испытаний. Основная программа должна спрашивать у пользователя все требуемые входные данные, загружать библиотеку с генератором и вызывать функцию получения гистограммы.
  2. Реализовать следующие передаточные функции фильтров:
    • Нижних частот: yi = (1 - α) xi + α yi - 1
    • Верхних частот: yi = α yi - 1 + α (xi - xi - 1)

    Где α = RC / (RC + Δt), RC = 1 / (2 π fc), fc - пороговая частота, Δt - шаг квантования сигнала по времени.

    Каждую из функций реализовать в отдельной динамической библиотеке, загружать которые необходимо в основной программе динамически по запросу пользователя. Также основная программа должна статически зависеть от динамической библиотеки, в которой реализован алгоритм фильтрации заданного дискретезированного сигнала, хранящегося в массиве. Основная программа должна считывать из файла входные данные или генерировать сигнал с заранее известными частотами, загружать библиотеку с функцией фильтра и вызывать функцию фильтрации.
  3. Реализовать несколько вещественных функций–левых частей уравнения f(x) = 0. Каждую из функций вместе с её первой и второй производными реализовать в отдельной динамической библиотеке, загружать которые необходимо в основной программе динамически по запросу пользователя. Также основная программа должна статически зависеть от динамической библиотеки, в которой реализован алгоритм решения уравнения методом Ньютона. В основной программе необходимо спрашивать у пользователя название используемой функции, точность и интервал поиска решения, после чего вызывать функцию поиска решения, реализованную в динамической библиотеке.
  4. Реализовать несколько вещественных функций–левых частей уравнения f(x) = 0. Каждую из функций реализовать в отдельной динамической библиотеке, загружать которые необходимо в основной программе динамически по запросу пользователя. Также основная программа должна статически зависеть от динамической библиотеки, в которой реализован алгоритм решения уравнения методом простых итераций. В основной программе необходимо спрашивать у пользователя название используемой функции, точность и интервал поиска решения, после чего вызывать функцию поиска решения, реализованную в динамической библиотеке.
  5. Реализовать несколько вещественных функций–подынтегральных выражений определённого интеграла ∫ba f(x) dx. Каждую из функций реализовать в отдельной динамической библиотеке, загружать которые необходимо в основной программе динамически по запросу пользователя. Также основная программа должна статически зависеть от динамической библиотеки, в которой реализован алгоритм нахождения определённого интеграла методом Симпсона. В основной программе необходимо спрашивать у пользователя название используемой функции, точность и интервал поиска решения, после чего вызывать функцию вычисления интеграла, реализованную в динамической библиотеке.
  6. Реализовать несколько вещественных функций–рекуррентных соотношений для вычисления очередного слагаемого ряда Тейлора ak = f(ak - 1) для рядов функций sin x, ex, arctg x. Каждую из функций реализовать в отдельной динамической библиотеке, загружать которые необходимо в основной программе динамически по запросу пользователя. Также основная программа должна статически зависеть от динамической библиотеки, в которой реализован алгоритм нахождения суммы ряда с заданным начальным слагаемым, заданной рекуррентной функцией, точностью и максимальным количеством слагаемых. В основной программе необходимо спрашивать у пользователя название используемого рекуррентного соотношения, точность и максимальное количество слагаемых, после чего вызывать функцию вычисления суммы ряда, реализованную в динамической библиотеке.
  7. Реализовать следующие алгоритмы генераторов равномерно распределённых псевдослучайных величин:
    • ri + 1 = { 11 ri + π }
    • ri + 1 = { eπ + ri }
    • ri + 1 = { (π - 2 + ri)2 }

    Замечание: фигурные скобки: { } обозначают операцию взятия дробной части числа.

    Каждый из алгоритмов реализовать в отдельной динамической библиотеке, загружать которые необходимо в основной программе динамически по запросу пользователя. Также основная программа должна статически зависеть от динамической библиотеки, в которой реализован алгоритм нахождения тройного интеграла заданной функции методом Монте-Карло на шаре единичного диаметра. Также в отдельных библиотеках необходимо реализовать две функции от трёх аргументов, для которых необходимо искать интеграл. Основная программа должна спрашивать у пользователя все требуемые входные данные, загружать библиотеки с генератором и подынтегральной функцией и вызывать функцию интегрирования.
  8. Реализовать несколько вещественных функций от двух переменных-правых частей дифференциальных уравнений первого порядка: f(xy). Каждую из функций реализовать в отдельной динамической библиотеке, загружать которые необходимо в основной программе динамически по запросу пользователя. Также основная программа должна статически зависеть от динамической библиотеки, в которой реализован алгоритм нахождения решения задачи Коши методом Эйлера на заданном интервале с заданным шагом:
    y' = f(x, y)
    y(x0) = y0
    Основная программа должна спрашивать у пользователя все требуемые входные данные, загружать библиотеки с функцией и вызывать алгоритм метода Эйлера.