From 3ade8d3cbf8988f989a347c788c6c4abb687ef4f Mon Sep 17 00:00:00 2001 From: BushmanovAS Date: Fri, 19 Dec 2025 11:38:20 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=98=D0=9A=D0=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TEMA9/test.md | 86 ++++++++++++++++++++++++++++----------------------- 1 file changed, 48 insertions(+), 38 deletions(-) diff --git a/TEMA9/test.md b/TEMA9/test.md index b907a86..2855cfc 100644 --- a/TEMA9/test.md +++ b/TEMA9/test.md @@ -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