From c94f3a6c6f6b9229aad4d287592c13d65c7b734a Mon Sep 17 00:00:00 2001 From: dymik739 Date: Sat, 25 Feb 2023 14:09:18 +0200 Subject: [PATCH] initial commit --- processor.py | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 processor.py diff --git a/processor.py b/processor.py new file mode 100644 index 0000000..f515b96 --- /dev/null +++ b/processor.py @@ -0,0 +1,72 @@ +import math + +r = 6 + +def avg(a): + return round(sum(a) / len(a), r) + +raw_stats = [] +while True: + n = input() + if n != "": + raw_stats.append(float(n)) + else: + break + +stats = list(map(lambda x: round(x/5, r), raw_stats)) +print("Знаходимо час одного коливання для кожного значення та використовуємо отриманий набір даних для обчислень") + +# processing: constants + +delta_t = float(input("Зазначте Δt = ")) +n = float(input("Зазначте n = ")) + +# processing: formulas + +T_max = max(stats) +T_min = min(stats) + +print(f"\n\nTmin = {T_min}\nTmax = {T_max}\n") + +delta_T = delta_t / n +print(f"Знаходимо ΔT як ΔT = Δt/n = {delta_t} / {n} = {delta_T}") + +m_raw = round(T_max - T_min, r) / (2*delta_T) +if m_raw % 1: + m = math.floor(m_raw) +else: + m = math.floor(m_raw) + 1 + +print(f"Знаходимо m як m = (Tmax - Tmin) / (2*ΔT) = ({T_max} - {T_min}) / (2 * {delta_T}) = {round(T_max - T_min, 3)} / {delta_T*2} = {m}") + + +interval_width = round((T_max - T_min) / m, r) +print(f"Розбиваємо гістограму на m={m} проміжків (кожен з інтервалом по {interval_width} секунди) та обчислюємо кількість результатів, що входять до кожного з них; отримуємо таку статистику:") + +gist_list = [] +Ni = 1 +for i in range(m): + l = round(T_min + i*interval_width, r) + u = round(l + interval_width, r) + a = len([k for k in stats if l <= k < u]) + gist_list.append(a) + print(f"Проміжок: {l}-{u}; № = {Ni} Ti = {avg([l, u])}; Ni = {a}; vi = {round(a/len(stats), r)}") + Ni += 1 + +print("\nОтримуємо таку гістограму:\n") + +print("\n".join([("".join([" |"[int(k > i)] for k in gist_list])) for i in range(max(gist_list))][::-1])) + +avg_T = round(sum(stats) / len(stats), r) +print(f"\nЗнаходимо середнє арифметичне ❬T❭ = {avg_T}") + +D = round((sum(tuple(map(lambda x: x**2, stats))) / len(stats)) - ((sum(stats) / len(stats)) ** 2), r) +print(f"Знаходимо дисперсію D за формулою D = ❬v^2❭ - ❬v❭^2 = {round(sum(tuple(map(lambda x: x**2, stats))) / len(stats), r)} - {round((sum(stats) / len(stats)) ** 2, r)} = {D}") + +sigma = round(math.sqrt(D), r) +print(f"Знаходимо середньоквадратичне відхилення σ як σ = √D = √{D} = {sigma}") + +delta = round(sigma / avg(stats), r) +print(f"Знаходимо відносну флуктуацію δ як δ = σ / ❬T❭ = {sigma} / {avg(stats)} = {delta}") + +