diff --git a/TEMA9/M0.py b/TEMA9/M0.py new file mode 100644 index 0000000..c5d3512 --- /dev/null +++ b/TEMA9/M0.py @@ -0,0 +1,7 @@ +import M2 +from numpy import frombuffer, float64 + +with open('Res456.bin', 'rb') as file: + data = file.read() + decoded = frombuffer(data, dtype=float64) + print(f'Оценка мат. ожидания {decoded[-2]}\nОценка медианы {decoded[-1]}') \ No newline at end of file diff --git a/TEMA9/M1.py b/TEMA9/M1.py new file mode 100644 index 0000000..1ebdc5f --- /dev/null +++ b/TEMA9/M1.py @@ -0,0 +1,7 @@ +from numpy import median, mean + +def func1(SPS, KL): + return sorted(SPS, reverse=KL) + +def func2(data): + return median(data), mean(data) \ No newline at end of file diff --git a/TEMA9/M2.py b/TEMA9/M2.py new file mode 100644 index 0000000..56bbbca --- /dev/null +++ b/TEMA9/M2.py @@ -0,0 +1,19 @@ +from numpy.random import normal +from math import sqrt +from pylab import plot, show +import M1 + +print('Введите параметры выборки случайной велечины') +n = int(input('Введите число элементов: ')) +m = int(input('Введите мат ожидание: ')) +d2 = int(input('Введите дисперсию: ')) +data = normal(m, sqrt(d2), n) +KL = int(input('Введите значение бинарного ключа: ')) +orderedData = M1.func1(data, KL) +me, mede = M1.func2(orderedData) +with open('Res456.bin', 'wb') as file: + data.tofile(file) + me.tofile(file) + mede.tofile(file) +plot(data) +show() \ No newline at end of file diff --git a/TEMA9/Res456.bin b/TEMA9/Res456.bin new file mode 100644 index 0000000..7b00711 Binary files /dev/null and b/TEMA9/Res456.bin differ diff --git a/TEMA9/test.md b/TEMA9/test.md new file mode 100644 index 0000000..6759758 --- /dev/null +++ b/TEMA9/test.md @@ -0,0 +1,66 @@ +# Индивидуальное контрольное задание по теме 9 + +Коваленко Дмитрий, А-01-23 + +## Задание 12 + +1) Создайте модуль М1, содержащий две функции: +- функция 1: аргумент - список SPS и бинарный ключ KL; функция должна создавать новый список с элементами из SPS, упорядоченными по возрастанию (при KL=0) или по убыванию величины (при KL=1); +- функция 2: аргумент - список или кортеж; функция должна рассчитать по нему медиану и среднее значение. +2) Создайте еще один модуль М2, в котором должны выполняться следующие операции: +- по запросу вводятся параметры выборки случайной величины, подчиняющейся нормальному распределению: N - число элементов выборки, M - её математическое ожидание, D2-дисперсия, +- создаётся выборка с заданными параметрами, +- у пользователя запрашивается значение бинарного ключа; +- с помощью функции 1 по выборке рассчитывается упорядоченный ряд и по нему - медиана и среднее значение; +- с помощью функции 2 по выборке рассчитываются оценка матожидания и медиана; +- исходная выборка и результаты расчета записываются в бинарный файл Res456.bin. +- выборка представляется в виде графика. +3) Создайте модуль М0 - главную программу, которая вызывает М2 и отображает результаты расчета на экране. +4) Проведите расчеты при 3-х разных наборах значений параметров. + +## Решение + +Модуль-реализация M1 +```py +from numpy import median, mean + +def func1(SPS, KL): + return sorted(SPS, reverse=KL) + +def func2(data): + return median(data), mean(data) +``` + +Модуль-реализация M2 +```py +from numpy.random import normal +from math import sqrt +from pylab import plot, show +import M1 + +print('Введите параметры выборки случайной велечины') +n = int(input('Введите число элементов: ')) +m = int(input('Введите мат ожидание: ')) +d2 = int(input('Введите дисперсию: ')) +data = normal(m, sqrt(d2), n) +KL = int(input('Введите значение бинарного ключа: ')) +orderedData = M1.func1(data, KL) +me, mede = M1.func2(orderedData) +with open('Res456.bin', 'wb') as file: + data.tofile(file) + me.tofile(file) + mede.tofile(file) +plot(data) +show() +``` + +Модуль-проверка +```py +import M2 +from numpy import frombuffer, float64 + +with open('Res456.bin', 'rb') as file: + data = file.read() + decoded = frombuffer(data, dtype=float64) + print(f'Оценка мат. ожидания {decoded[-2]}\nОценка медианы {decoded[-1]}') +```