Advertisement
Guest User

Faults

a guest
Sep 26th, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.26 KB | None | 0 0
  1. def mean(a):
  2.     return sum(a) / len(a);
  3.  
  4. tpn = [0, 0, 12.7, 4.3, 3.2, 2.8, 2.6, 2.5, 2.4, 2.3, 2.3, 100]
  5. bpn = [0, 0, 0, 1.30, 0.72, 0.51, 0.40, 0.33, 0.29, 0.25, 0.23, 0.21, 0.19]
  6. 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}
  7.  
  8. #input all direct measures
  9. measures = [float(i) for i in input('Введите измерения: ').split()]
  10. instr = int(input("Введите тип прибора 1 - секундомер электронный, 2 - простейший прибор, 3 - приборы имеющие класс точности: "))
  11. if (instr == 3):
  12.     g = float(input("Введите класс точности: "))
  13.     k = int(input("Введите предел измерения: "))
  14.  
  15. measures = sorted(measures)
  16.  
  17. #number of measures
  18. n = len(measures)
  19.  
  20. #Sampling scope
  21. rx = max(measures) - min(measures)
  22.  
  23. while abs(min(measures) - measures[1]) > upn[n] * rx or abs(max(measures) - measures[n - 1]) > upn[n] * rx:
  24.     if abs(min(measures) - measures[1]) > upn[n] * rx:
  25.         measures.pop(0)
  26.     else:
  27.         measures.pop(len(measures))
  28.     n -= 1
  29. print("Ряд, проверенный на промахи: {}".format(measures))
  30.  
  31. #average value of measures
  32. average = mean(measures)
  33. print('Среднее значение: {}'.format(average))
  34.  
  35. #Difference between measures and mean value
  36. measuresSub = [(average - i) ** 2 for i in measures]
  37.  
  38. #S from x
  39. sx = (sum(measuresSub) / (n - 1)) ** 0.5
  40. print('Среднеквадратичное отклонение результатов x от среднего: {}'.format(sx))
  41.  
  42. #S from mean x
  43. sxm = sx / (n ** 0.5)
  44. print('СКО среднего: {}'.format(sxm))
  45.  
  46. #Random fault of Student tpn[n], tpn(100) == tpn[10]
  47. dx = tpn[n] * sxm
  48. print('Случайная погрешность по Стьюденту: {}'.format(dx))
  49.  
  50. #Random fault for sampling scope
  51. dxb = bpn[n] * rx
  52. print('Случайная погрешность по размаху выборки: {}'.format(dxb))
  53.  
  54. #Instrument fault
  55. if instr == 1:
  56.     omx = 0.01
  57. elif instr == 2:
  58.     omx = d / 2
  59. else:
  60.     omx = g * k / 100
  61. print('Приборная погрешность: {}'.format(omx)) 
  62.  
  63. #Entire fault
  64. dxm = (dx ** 2 + omx ** 2) ** 0.5
  65. print('Полная погрешность: {}'.format(dxm))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement