aboutsummaryrefslogtreecommitdiffstats
path: root/vtek2.py
blob: 4350159fec1fc36f88cbca2fa3f94e71c4b687cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/home/main/coding/py/venv/bin/python3

from prak2 import *
from math import pow, sqrt 


PI = 3.141592657 # ;)

def main():
    timer = [];
    photo = [];
    Ns = [];
    Tsqs = [];
    STsqs = [];
    H = float(input('Введите H и погрешность H'))
    H_err = float(input())
    m0 = float(input('Введите m0 (количество измерений) '))
    n = float(input('Введите n (количество колебаний на 1 измерение) '))

    print('\n', '-' * 35, "\nОБРАБОТКА С РУЧНЫМИ ЧАСАМИ\n", '-' * 35);
    for i in range(10):
        print("введите t_1, t_2, t_3 для N  = ", i);
        list = [float(input()) for _ in range(3)];
        mean = avg(list);
        dev = stddev(list);
        mean_err = sqrt(dev * dev + pow(1e-3 * mean, 2));
        T = mean / n;
        T_err = mean_err / n;
        tsq = T * T;
        tsq_err = 2 * T * T_err;
        timer.append((i, tsq, tsq_err));
        print(f"avg = {mean}; err = {mean_err}; T = {T} +- {T_err}\nTsq = {tsq} +- {tsq_err}");
    Ns = np.array([i[0] for i in timer]);
    Tsqs = np.array([i[1] for i in timer]);
    STsqs = np.array([i[2] for i in timer]);
    res = mnk(Ns, Tsqs, STsqs);
    print(f"A = {res['a']} +- {res['sa']}; B = {res['b']} +- {res['sb']}");
    g = 4 * PI * PI * H / res['a'] / m0;
    g_err = g * sqrt(pow(res['sa'] / res['a'], 2) + pow(H_err / H, 2));
    l = res['b'] * g / 4 / PI / PI;
    l_err = l * sqrt(pow(res['sb'] / res['b'], 2) + pow(g_err/g , 2));
    print(f"g = {g} +- {g_err}; l = {l} +- {l_err}");


    print('\n', '-' * 35, "\nОБРАБОТКА С ФОТОДАТЧИКАМИ\n", '-' * 35);
    for i in range(10):
        print("Введите t, St для N = ", i);
        mean = float(input())
        dev = 0.0001 #  НАГЛО ПОДОГНАТЬ!!!
        mean_err = sqrt(dev * dev + pow(1e-3 * mean, 2));
        T = 2 * mean;
        T_err = 2 * mean_err;
        tsq = T * T;
        tsq_err = 2 * T * T_err;
        photo.append((i, tsq, tsq_err));
        print(f"T = {T} +- {T_err}\nTsq = {tsq} +- {tsq_err}");
    Ns = np.array([i[0] for i in photo]);
    Tsqs = np.array([i[1] for i in photo]);
    STsqs = np.array([i[2] for i in photo]);
    res = mnk(Ns, Tsqs, STsqs);
    print(f"A = {res['a']} +- {res['sa']}; B = {res['b']} +- {res['sb']}");
    g = 4 * PI * PI * H / res['a'] / m0;
    g_err = g * sqrt(pow(res['sa'] / res['a'], 2) + pow(H_err / H, 2));
    l = res['b'] * g / 4 / PI / PI;
    l_err = l * sqrt(pow(res['sb'] / res['b'], 2) + pow(g_err/g , 2));
    print(f"g = {g} +- {g_err}; l = {l} +- {l_err}");
    
    print('\n', '-' * 35, "ОБРАБОТКА ВТОРОГО УПРАЖНЕНИЯ\n", '-' * 35);
    omegas = [];
    Us = [0.3 * (i+1) for i in range(6)];
    U_errs = [0.003 * i + 0.002 for i in Us];
    U_errs[0] -= 0.0015;
    for U, U_err in zip(Us, U_errs):
        tg = float(input('Введите t_д: '));
        # tg_err = float(input('Введите погрешность t_д'));
        tg_err = 0.0001
        omega = 2*PI / tg;
        omega_err = omega * tg_err / tg;
        omegas.append((U, omega, U_err, omega_err));
        print(f"omega = {omega} +- {omega_err}");
    with open("outputU.data", "w+") as f:
        for a, b, c, d in omegas:
            f.write(f"{a} {b} {c} {d}\n");
    with open("outputT2_timer.data", "w+") as f:
        for a, b, c in timer:
            f.write(f"{a} {b} {c}\n")
    with open("outputT2_photo.data", "w+") as f:
        for a, b, c in photo:
            f.write(f"{a} {b} {c}\n")


if __name__ == "__main__": main();