Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

67 строки
3.4 KiB
Markdown

# Индивидуальное контрольное задание по теме 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]}')
```