форкнуто от main/python-labs
Родитель
0dec7f90aa
Сommit
ad7c31afbf
@ -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]}')
|
||||
@ -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)
|
||||
@ -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()
|
||||
Двоичный файл не отображается.
@ -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]}')
|
||||
```
|
||||
Загрузка…
Ссылка в новой задаче