diff --git a/TEMA9/d.png b/TEMA9/d.png new file mode 100644 index 0000000..e070d38 Binary files /dev/null and b/TEMA9/d.png differ diff --git a/TEMA9/d2.png b/TEMA9/d2.png new file mode 100644 index 0000000..ae4e2ff Binary files /dev/null and b/TEMA9/d2.png differ diff --git a/TEMA9/test.md b/TEMA9/test.md new file mode 100644 index 0000000..ffad9b8 --- /dev/null +++ b/TEMA9/test.md @@ -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 + +``` +