Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

174 строки
6.3 KiB
Markdown

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

# Индивидуальное контрольное задание по теме 9
Бушманов А.С. А-01-23
## Задание: Вариант 14
M3_14
1)      Создайте модуль М1, содержащий две функции:
- функция 1: аргумент - список или кортеж с выборкой; функция должна произвести расчет по выборке списка с наименьшим и наибольшим значениями, размахом (разность наибольшего и наименьшего значений), оценкой стандартного отклонения и отношением размаха к стандартному отклонению;
- функция 2: аргументы - список или кортеж с выборкой и целочисленный параметр m; функция должна обратиться к функции 1 и затем определить границы m непересекающихся интервалов в диапазоне величины между наибольшим и наименьшим значениями по выборке, содержащих примерно одинаковое число элементов выборки; функция должна вернуть 2 списка: со значениями границ интервалов и с числами элементов в интервалах.
2)      Создайте еще один модуль М2, в котором должны выполняться следующие операции:
- запрашивается имя текстового файла с выборкой, проверяется его наличие и при отсутствии - повторяется запрос;
- выборка вводится из файла и записывается в список (в строках файла может быть разное число значений, разделенных пробелами);
- запрашиваются у пользователя число интервалов разбиения;
- с помощью функций 1 и 2 производится определение границ интервалов и чисел элементов в них.
- отображается столбиковая диаграмма с интервалами и числами элементов выборки в них.
3)      Создайте модуль М0 - главную программу, которая вызывает М2 и отображает результаты расчета на экране.
4)      Проведите расчеты при 2-х разных файлах с выборками
## Решение:
#### Модуль 1: M1
```python
import math
def stats(sample):
x = list(sample)
n = len(x)
mn = min(x)
mx = max(x)
razmah = mx - mn
mean = sum(x) / n
if n > 1:
s = math.sqrt(sum((xi - mean) ** 2 for xi in x) / (n - 1))
else:
s = 0.0
if s == 0:
ratio = None
else:
ratio = razmah / s
return mn, mx, razmah, s, ratio
def intervals(sample, m):
mn, mx, razmah, s, ratio = stats(sample)
x = sorted(sample)
n = len(x)
borders = [mn]
for k in range(1, m):
idx = int(k * n / m)
borders.append(x[idx])
borders.append(mx)
counts = [0] * m
for v in sample:
placed = False
for i in range(m - 1):
if borders[i] <= v < borders[i + 1]:
counts[i] += 1
placed = True
break
if not placed:
if borders[m - 1] <= v <= borders[m]:
counts[m - 1] += 1
return borders, counts
```
#### Модуль 2: M2
```python
import math
def stats(sample):
x = list(sample)
n = len(x)
mn = min(x)
mx = max(x)
razmah = mx - mn
mean = sum(x) / n
if n > 1:
s = math.sqrt(sum((xi - mean) ** 2 for xi in x) / (n - 1))
else:
s = 0.0
if s == 0:
ratio = None
else:
ratio = razmah / s
return mn, mx, razmah, s, ratio
def intervals(sample, m):
mn, mx, razmah, s, ratio = stats(sample)
x = sorted(sample)
n = len(x)
borders = [mn]
for k in range(1, m):
idx = int(k * n / m)
borders.append(x[idx])
borders.append(mx)
counts = [0] * m
for v in sample:
placed = False
for i in range(m - 1):
if borders[i] <= v < borders[i + 1]:
counts[i] += 1
placed = True
break
if not placed:
if borders[m - 1] <= v <= borders[m]:
counts[m - 1] += 1
return borders, counts
```
#### Модуль 3: M0
```python
import M2
result = M2.run()
print("\nГотово. Результаты получены.")
```
## Ответ c sampe1.txt:
```python
import M0
Введите имя файла с выборкой: sample1
Файл не найден. Попробуйте ещё раз.
Введите имя файла с выборкой: sample1.txt
Файл не найден. Попробуйте ещё раз.
Введите имя файла с выборкой: sample1.txt
Размер выборки: 20
Введите число интервалов m: 5
--- Статистики ---
min = 1.0
max = 12.0
размах = 11.0
std = 3.216323497738569
размах/std = 3.4200539864022432
--- Интервалы ---
[1.0; 3.0) -> 4
[3.0; 4.0) -> 3
[4.0; 6.0) -> 5
[6.0; 9.0) -> 4
[9.0; 12.0] -> 4
Готово. Результаты получены.
```
![[task_figure_1.png]]## Ответ c sampe2.txt:
```python
import M0
Введите имя файла с выборкой: sample2.txt
Размер выборки: 18
Введите число интервалов m: 8
--- Статистики ---
min = -5.0
max = 34.0
размах = 39.0
std = 9.751319669363612
размах/std = 3.9994586704534942
--- Интервалы ---
[-5.0; -3.0) -> 2
[-3.0; -1.0) -> 2
[-1.0; 0.0) -> 1
[0.0; 1.0) -> 3
[1.0; 2.0) -> 2
[2.0; 5.0) -> 3
[5.0; 13.0) -> 2
[13.0; 34.0] -> 3
Готово. Результаты получены.
```
![[task_figure_2.png]]#### Файл sample1.txt:
```
1 2 3 4 5 6
2 2 3 3 4 4
5 6 7 8 9
10 11 12
```
#### Файл sample2.txt:
```
-5 -4 -3 -2 -1 0
0 0 1 1 2 2
3 5 8 13 21
34
```