форкнуто от main/python-labs
Родитель
dbfcbf4f1c
Сommit
eedbfb0c3c
|
После Ширина: | Высота: | Размер: 4.3 KiB |
|
После Ширина: | Высота: | Размер: 4.2 KiB |
@ -0,0 +1,318 @@
|
||||
\# Тест по модулю 3
|
||||
|
||||
Турханов Артем, А-03-23, Вариант 30
|
||||
|
||||
\## Задание
|
||||
|
||||
1\) Создайте модуль М1, содержащий две функции:
|
||||
|
||||
|
||||
|
||||
\- функция 1: аргумент - список или кортеж с выборкой наблюдений; функция должна произвести расчет по выборке оценок математического ожидания, стандартного отклонения, медианы, наименьшего и наибольшего значений и вернуть их в виде списка в вызывающую программу;
|
||||
|
||||
|
||||
|
||||
\- функция 2; аргументы - список или кортеж с выборкой наблюдений и целочисленный параметр m; функция должна произвести расчет по этой выборке гистограммы распределения случайной величины с m интервалами и вернуть ее в виде списка в вызывающую программу.
|
||||
|
||||
|
||||
|
||||
2\) Создайте еще один модуль М2, в котором должны выполняться следующие операции:
|
||||
|
||||
|
||||
|
||||
\- запрашивается имя текстового файла с выборкой, проверяется его наличие и при отсутствии - повторяется запрос;
|
||||
|
||||
|
||||
|
||||
\- выборка вводится из файла и записывается в список (в строках файла может быть разное число значений, разделенных пробелами);
|
||||
|
||||
|
||||
|
||||
\- запрашивается число интервалов для гистограммы (с проверкой его принадлежности к интервалу от 2 до 10);
|
||||
|
||||
|
||||
|
||||
\- с помощью функций 1 и 2 по выборке рассчитывается оценки статистических параметров случайной величины;
|
||||
|
||||
|
||||
|
||||
\- гистограмма отображается на экране в виде диаграммы;
|
||||
|
||||
|
||||
|
||||
\- рассчитанные значения записываются в бинарный файл Res1010.bib.
|
||||
|
||||
|
||||
|
||||
3\) Создайте модуль М0 - главную программу, которая вызывает М2 и отображает результаты расчета на экране.
|
||||
|
||||
|
||||
|
||||
4\) Проведите расчеты с 2 файлами с исходными данными.
|
||||
|
||||
\## Решение
|
||||
|
||||
Содержимое модуля M1:
|
||||
|
||||
```py
|
||||
|
||||
def stats(t):
|
||||
|
||||
t = list(t)
|
||||
|
||||
N = len(t)
|
||||
|
||||
m = sum(t)/N
|
||||
|
||||
s = 0
|
||||
|
||||
for i in t:
|
||||
|
||||
s += (i - m)\*\*2
|
||||
|
||||
std = s\*\*0.5
|
||||
|
||||
t.sort()
|
||||
|
||||
med = 0
|
||||
|
||||
if N%2 != 0: med = t\[N//2]
|
||||
|
||||
else:
|
||||
|
||||
med = (t\[N//2 - 1] + t\[N//2])/2
|
||||
|
||||
return \[m,std,med,min(t),max(t)]
|
||||
|
||||
|
||||
|
||||
def hist(t,m):
|
||||
|
||||
t = list(t)
|
||||
|
||||
f = False
|
||||
|
||||
N = len(t)
|
||||
|
||||
L = max(t) - min(t)
|
||||
|
||||
l = L//m
|
||||
|
||||
lg = min(t)
|
||||
|
||||
rg = min(t)+l
|
||||
|
||||
res = \[]
|
||||
|
||||
for j in range(m):
|
||||
|
||||
k = 0
|
||||
|
||||
for i in range(N):
|
||||
|
||||
if (t\[i] >= lg) and (t\[i] < rg):
|
||||
|
||||
k+=1
|
||||
|
||||
res.append(k)
|
||||
|
||||
lg += l
|
||||
|
||||
rg += l
|
||||
|
||||
res\[-1] = res\[-1]+1
|
||||
|
||||
return res
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
Содержимое модуля M2:
|
||||
|
||||
```py
|
||||
|
||||
import M1
|
||||
|
||||
import os
|
||||
|
||||
import pickle
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
fName = input('Введите имя файла: ')
|
||||
|
||||
if os.path.exists(fName) == True:
|
||||
|
||||
print('Успешно! Файл найден!')
|
||||
|
||||
else:
|
||||
|
||||
while os.path.exists(fName) != True:
|
||||
|
||||
print('Такой файл не найден!')
|
||||
|
||||
fName = input('Введите имя файла: ')
|
||||
|
||||
|
||||
|
||||
fp = open(fName, 'r')
|
||||
|
||||
data = fp.read()
|
||||
|
||||
fp.close()
|
||||
|
||||
ls = list(map(int, data.replace('\\n', ' ').split(' ')))
|
||||
|
||||
|
||||
|
||||
m = int(input('Введите количество интервалов m (m > 2; m < 10): '))
|
||||
|
||||
if (m <= 2) or (m >= 10):
|
||||
|
||||
while (m <= 2) or (m >= 10):
|
||||
|
||||
print('Недопустимое значение!')
|
||||
|
||||
m = int(input('Введите m: '))
|
||||
|
||||
|
||||
|
||||
st = M1.stats(ls)
|
||||
|
||||
hs = M1.hist(ls,m)
|
||||
|
||||
|
||||
|
||||
print('Гистограмма по данным (количество \* - количество значений в интервале):')
|
||||
|
||||
for i in range(m):
|
||||
|
||||
print(hs\[i]\*'\*')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
b = open('Res1010.bin', 'wb')
|
||||
|
||||
pickle.dump(st, b)
|
||||
|
||||
b.close()
|
||||
|
||||
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
Содержимое модуля M0:
|
||||
|
||||
```py
|
||||
|
||||
import M2
|
||||
|
||||
print('Мат. ожидание: ',M2.st\[0])
|
||||
|
||||
print('Стандартное отклонение: ',M2.st\[1])
|
||||
|
||||
print('Медиана: ',M2.st\[2])
|
||||
|
||||
print('Минимальное значение: ',M2.st\[3])
|
||||
|
||||
print('Максимальное значение: ',M2.st\[4])
|
||||
|
||||
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
Содержимое файла data.txt:
|
||||
|
||||
!\[d.png](d.png)
|
||||
|
||||
|
||||
|
||||
Содержимое файла data2.txt:
|
||||
|
||||
!\[d2.png](d2.png)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Запуск модуля M0:
|
||||
|
||||
```py
|
||||
|
||||
= RESTART: D:/!!!Download/Documents/учёба МЭИ/5 СЕМЕСТР/GIT/python-labs/TEMA9/M0.py
|
||||
|
||||
Введите имя файла: data2.txt
|
||||
|
||||
Успешно! Файл найден!
|
||||
|
||||
Введите количество интервалов m (m > 2; m < 10): 7
|
||||
|
||||
Гистограмма по данным (количесто \* - количество значений в интервале):
|
||||
|
||||
\*\*\*
|
||||
|
||||
\*\*\*\*
|
||||
|
||||
\*\*\*\*\*\*
|
||||
|
||||
\*\*
|
||||
|
||||
\*\*\*\*
|
||||
|
||||
\*
|
||||
|
||||
\*\*\*\*
|
||||
|
||||
Мат. ожидание: 4.5
|
||||
|
||||
Стандартное отклонение: 13.228756555322953
|
||||
|
||||
Медиана: 4.0
|
||||
|
||||
Минимальное значение: 1
|
||||
|
||||
Максимальное значение: 9
|
||||
|
||||
|
||||
|
||||
= RESTART: D:/!!!Download/Documents/учёба МЭИ/5 СЕМЕСТР/GIT/python-labs/TEMA9/M0.py
|
||||
|
||||
Введите имя файла: data.txt
|
||||
|
||||
Успешно! Файл найден!
|
||||
|
||||
Введите количество интервалов m (m > 2; m < 10): 5
|
||||
|
||||
Гистограмма по данным (количесто \* - количество значений в интервале):
|
||||
|
||||
\*\*
|
||||
|
||||
\*
|
||||
|
||||
\*\*\*
|
||||
|
||||
\*\*
|
||||
|
||||
\*\*\*
|
||||
|
||||
Мат. ожидание: 4.266666666666667
|
||||
|
||||
Стандартное отклонение: 7.933053216343208
|
||||
|
||||
Медиана: 4
|
||||
|
||||
Минимальное значение: 1
|
||||
|
||||
Максимальное значение: 8
|
||||
|
||||
```
|
||||
|
||||
Загрузка…
Ссылка в новой задаче