initial commit
This commit is contained in:
		
						commit
						c94f3a6c6f
					
				
							
								
								
									
										72
									
								
								processor.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								processor.py
									
									
									
									
									
										Normal file
									
								
							@ -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}")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user