форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
67 строки
3.4 KiB
Markdown
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]}')
|
|
```
|