Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def mean(a):
- return sum(a) / len(a);
- tpn = [0, 0, 12.7, 4.3, 3.2, 2.8, 2.6, 2.5, 2.4, 2.3, 2.3, 100]
- bpn = [0, 0, 0, 1.30, 0.72, 0.51, 0.40, 0.33, 0.29, 0.25, 0.23, 0.21, 0.19]
- upn = {3: 0.94, 4: 0.76, 5: 0.64, 7: 0.51, 10: 0.41, 15: 0.34, 20: 0.30, 30: 0.26, 100: 0.20}
- #input all direct measures
- measures = [float(i) for i in input('Введите измерения: ').split()]
- instr = int(input("Введите тип прибора 1 - секундомер электронный, 2 - простейший прибор, 3 - приборы имеющие класс точности: "))
- if (instr == 3):
- g = float(input("Введите класс точности: "))
- k = int(input("Введите предел измерения: "))
- measures = sorted(measures)
- #number of measures
- n = len(measures)
- #Sampling scope
- rx = max(measures) - min(measures)
- while abs(min(measures) - measures[1]) > upn[n] * rx or abs(max(measures) - measures[n - 1]) > upn[n] * rx:
- if abs(min(measures) - measures[1]) > upn[n] * rx:
- measures.pop(0)
- else:
- measures.pop(len(measures))
- n -= 1
- print("Ряд, проверенный на промахи: {}".format(measures))
- #average value of measures
- average = mean(measures)
- print('Среднее значение: {}'.format(average))
- #Difference between measures and mean value
- measuresSub = [(average - i) ** 2 for i in measures]
- #S from x
- sx = (sum(measuresSub) / (n - 1)) ** 0.5
- print('Среднеквадратичное отклонение результатов x от среднего: {}'.format(sx))
- #S from mean x
- sxm = sx / (n ** 0.5)
- print('СКО среднего: {}'.format(sxm))
- #Random fault of Student tpn[n], tpn(100) == tpn[10]
- dx = tpn[n] * sxm
- print('Случайная погрешность по Стьюденту: {}'.format(dx))
- #Random fault for sampling scope
- dxb = bpn[n] * rx
- print('Случайная погрешность по размаху выборки: {}'.format(dxb))
- #Instrument fault
- if instr == 1:
- omx = 0.01
- elif instr == 2:
- omx = d / 2
- else:
- omx = g * k / 100
- print('Приборная погрешность: {}'.format(omx))
- #Entire fault
- dxm = (dx ** 2 + omx ** 2) ** 0.5
- print('Полная погрешность: {}'.format(dxm))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement