diff --git a/TEMA9/test.md b/TEMA9/test.md index ffad9b8..32b0441 100644 --- a/TEMA9/test.md +++ b/TEMA9/test.md @@ -1,318 +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 - -``` - +# Тест по модулю 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 + +``` +