main
BushmanovAS 1 месяц назад
Родитель 73ab8c0532
Сommit 3ade8d3cbf

@ -65,45 +65,55 @@ def intervals(sample, m):
```
#### Модуль 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
import os
import M1
import matplotlib.pyplot as plt
def read_sample(filename):
data = []
with open(filename, "r", encoding="utf-8") as f:
for line in f:
for t in line.split():
data.append(float(t))
return data
def run():
while True:
fname = input("Введите имя файла с выборкой: ").strip()
if os.path.exists(fname):
break
print("Файл не найден. Попробуйте ещё раз.")
sample = read_sample(fname)
print("Размер выборки:", len(sample))
m = int(input("Введите число интервалов m: "))
mn, mx, razmah, s, ratio = M1.stats(sample)
borders, counts = M1.intervals(sample, m)
print("\n--- Статистики ---")
print("min =", mn)
print("max =", mx)
print("размах =", razmah)
print("std =", s)
print("размах/std =", ratio)
print("\n--- Интервалы ---")
for i in range(m):
left = borders[i]
right = borders[i+1]
print(f"[{left}; {right}) -> {counts[i]}" if i < m-1 else f"[{left}; {right}] -> {counts[i]}")
labels = []
for i in range(m):
a = borders[i]
b = borders[i+1]
if i < m-1:
labels.append(f"[{a:.2f};{b:.2f})")
else:
labels.append(f"[{a:.2f};{b:.2f}]")
plt.bar(labels, counts)
plt.xticks(rotation=45, ha="right")
plt.title("Распределение элементов по интервалам")
plt.xlabel("Интервалы")
plt.ylabel("Число элементов")
plt.tight_layout()
plt.show()
return mn, mx, razmah, s, ratio, borders, counts
```
#### Модуль 3: M0
```python

Загрузка…
Отмена
Сохранить