Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math
- g = 9.81
- def average(a): # выборочное среднее значение
- return sum(a) / len(a)
- def standard_deviation(a): # выборочное стандартное отклонение среднего арифметического
- n = len(a)
- av = sum(a) / n
- s = 0
- for i in range(n):
- s += (a[i] - av)**2
- return math.sqrt(s / (n * (n - 1)))
- def standard_deviation2(a): # не знаю
- n = len(a)
- av = sum(a) / n
- s = 0
- for i in range(n):
- s += (a[i] - av)**2
- return math.sqrt(s / (n - 1))
- def relative_error(exp, teor): # в процентах
- return 100 * (abs(teor - exp) / teor)
- d1 = {"0.199307" : 0.297941,
- "0.181059" : 0.280880,
- "0.156232" : 0.265667,
- "0.164659" : 0.252017,
- "0.155193" : 0.239701}
- d = {"0.154769" : 0.239701,
- "0.528000" : 0.719104,
- "0.787079" : 1.198507,
- "0.937859" : 1.677910,
- "1.114233" : 2.157312}
- #a1 = [2.539, 2.458, 2.485]
- #a1 = [4.646, 4.700, 4.673]
- #a1 = [4.322, 4.376, 4.349]
- #a1 = [4.049, 4.065, 4.057]
- #a1 = [3.825, 3.817, 3.833]
- #a1 = [3.541, 3.552, 3.559]
- '''
- [2.550, 2.545, 2.541],
- [2.544, 2.542, 2.539],
- [2.549, 2.544, 2.545],
- [2.544, 2.548, 2.545],
- [2.543, 2.551, 2.547],
- '''
- '''
- h = [
- [5.966, 5.871, 5.162],
- [5.133, 5.203, 5.151],
- [4.273, 4.300, 4.334],
- [3.735, 3.796, 3.790],
- [3.523, 3.309, 3.293],
- [6.566, 6.322, 6.394],
- [9.918, 9.992, 9.518],
- [7.629, 8.015, 8.111],
- [13.030, 12.397, 13.141],
- [6.245, 6.382, 5.998],
- [5.995, 6.133, 6.019],
- [6.433, 6.321, 6.262],
- [6.698, 6.682, 6.688],
- ]
- '''
- #f = [[4.04, 3.84, 3.77], [3.73, 3.69, 3.71], [3.77, 3.75, 3.75], [3.77, 3.76, 3.77], [3.71, 3.72, 3.75], [3.76, 3.77, 3.76]]
- #h = [2.550, 2.545, 2.541, 2.544, 2.542, 2.539, 2.549, 2.544, 2.545, 2.544, 2.548, 2.545, 2.543, 2.551, 2.547]
- #print(average(h))
- '''
- times = [
- [6.245, 6.382, 5.998],
- [5.995, 6.133, 6.019],
- [6.433, 6.321, 6.262],
- [6.698, 6.682, 6.688]
- ]
- for i in range(len(times)):
- for j in range(len(times[0])):
- times[i][j] *= times[i][j]
- for time in times:
- print(f"{average(time)} ± {standard_deviation(time)}")
- '''
- '''times = [
- [5.682, 5.642, 5.643],
- [7.343, 7.315, 7.311],
- [9.500, 9.507, 9.458],
- [11.905, 11.772, 11.893],
- [14.422, 14.358, 14.381],
- [5.738, 5.733, 5.746],
- [5.772, 5.777, 5.774],
- [6.347, 6.346, 6.346],
- [7.302, 7.315, 7.314]
- ]'''
- '''
- times = [
- [15.0, 15.5, 15.0, 15.0, 15.5],
- [20.5, 20.0, 20.0, 20.5, 20.0],
- [25.0, 25.0, 25.0, 25.5, 25.0],
- [30.0, 30.5, 30.5, 30.0, 30.0]
- ]'''
- '''
- a_s = [[5.417582, 5.458621, 5.460714],
- [5.556485, 5.631667, 5.637500],
- [24.18, 24.32, 24.20],
- [13.79, 13.78, 13.64],
- [2.4446, 1.9711, 1.91356],
- [9.898976, 9.801047, 9.832461],
- [12.939394, 12.953020, 12.881119]]
- for a in a_s:
- print(f"{average(a)} ± {standard_deviation(a)}")
- '''
- '''
- times = [
- [17.196, 17.102, 17.112],
- [18.150, 18.260, 18.241],
- [19.693, 19.704, 19.670],
- [21.564, 21.489, 21.475],
- [23.792, 23.897, 23.728],
- [25.568, 25.536, 25.503],
- [27.768, 27.780, 27.720],
- [29.721, 29.716, 29.684],
- [31.848, 31.845, 31.855],
- [26.141, 26.237, 26.136],
- [21.299, 21.292, 21.234],
- [21.762, 21.912, 21.811]
- ]
- '''
- '''
- times = [
- [123.5, 124.7, 125.1],
- [5.0, 5.0, 5.0],
- [158.02, 158.03, 158.03],
- [0.596, 0.587, 0.593],
- [0.397, 0.389, 0.394],
- [0.294, 0.290, 0.291],
- [0.250, 0.254, 0.254],
- [0.221, 0.222, 0.221],
- [0.422, 0.422, 0.420],
- [0.277, 0.276, 0.277],
- [0.213, 0.212, 0.213],
- [0.183, 0.182, 0.183],
- [0.168, 0.167, 0.167],
- [0.341, 0.343, 0.344],
- [0.225, 0.225, 0.224],
- [0.176, 0.176, 0.176],
- [0.151, 0.151, 0.150],
- [0.135, 0.135, 0.135],
- [0.408, 0.412, 0.418],
- [0.273, 0.277, 0.273],
- [0.212, 0.211, 0.211],
- [0.181, 0.180, 0.180],
- [0.160, 0.158, 0.160],
- [0.421, 0.425, 0.422],
- [0.278, 0.280, 0.278],
- [0.213, 0.214, 0.214],
- [0.182, 0.183, 0.182],
- [0.162, 0.162, 0.161]
- ]'''
- times = [
- #[36.571/25, 44.018/30, 29.420/20],
- #[36.972/25, 44.092/30, 29.420/20],
- #[36.719/25, 43.797/30, 29.721/20],
- #[36.498/25, 43.797/30, 29.235/20]
- #[25.622/20, 31.889/25, 38.341/30],
- #[25.806/20, 32.074/25, 38.433/30]
- [8.793, 9.217, 8.848],
- [8.903, 9.309, 8.774]
- ]
- for time in times:
- print(f"{average(time)} ± {standard_deviation(time)}")
- for time in times:
- for a in time:
- print(round(a, 3))
- '''
- times = [
- [11.25, 11.34, 11.35],
- [11.75, 11.66, 11.81],
- [12.13, 12.19, 12.16],
- [12.50, 12.53, 12.44],
- [12.78, 12.84, 12.94],
- [13.16, 13.25, 13.25],
- [13.63, 13.60, 13.59],
- [13.90, 14.00, 14.04],
- [14.25, 14.19, 14.16],
- [14.59, 14.56, 14.50],
- ]
- for time in times:
- #print(f"{(average(time) / 10)**2} ± {((2 * (average(time) / 10)) * ((math.sqrt((standard_deviation(time))**2 + (average(time) * 0.1 * 0.01)**2)) / 10))}")
- #print(f"{average(time)} ± {math.sqrt((standard_deviation(time))**2 + (average(time) * 0.1 * 0.01)**2)}")
- print(f"{average(time)} ± {standard_deviation(time)}")'''
- #for key in d.keys():
- # print(relative_error(float(key), d[key]))
- #print(standard_deviation2(
- # [1.90, 1.91, 1.90, 1.91, 1.92, 1.88, 1.87, 1.88, 1.88]
- # ))
- #N = 5
- #for N in range(4, 9 + 1):
- # print((g * N * 1.89) / (60.34 + N * 1.89))
- #arasch = (g * N * 1.89) / (60.34 + N * 1.89)
- #print(arasch)
- '''
- [1.90, 1.91, 1.90, 1.91, 1.92, 1.88, 1.87, 1.88, 1.88] # массы грузов
- [0.202568, .203348, .202948]
- [.370912, .441602, .422424]
- [0.570058, .659372, .615812]
- [.761000, .791408, .763414]
- [.814328, .917818, .905114]
- [.934452, .912838, .930280]
- [.985542, 1.029438, .974522]
- [1.136286, 1.131194, 1.132678]
- [1.005936, 1.138060, 1.161482]
- '''
- import math
- # in CM
- '''
- L = [
- [2.4, 2.5, 2.4, 2.6, 2.7],
- [3.9, 4.1, 4.0, 3.8, 3.9],
- [5.8, 5.7, 5.6, 5.6, 6.0],
- [7.3, 7.4, 7.2, 7.5, 7.0],
- [9.2, 8.9, 9.1, 9.1, 9.4],
- [3.1, 3.0, 2.9, 3.2, 2.8],
- [8.0, 8.5, 8.3, 8.1, 8.1],
- [14.4, 14.2, 13.1, 13.0, 12.8]
- ]
- '''
- #for length in L:
- #print(f"{average(length)} ± {math.sqrt(standard_deviation(length)**2 + 0.05**2)}")
- # print(f"{average(length)} ± {standard_deviation(length)}")
- #x = [math.sqrt(abs(2.740-2.735)), math.sqrt(abs(2.690-2.735)), math.sqrt(abs(2.640-2.735)), math.sqrt(abs(2.590-2.735)), math.sqrt(abs(2.540-2.735))]
- #y = [5.666333333333333, 5.162333333333334, 4.302333333333333, 3.7736666666666667, 3.375]
- #sigma = [0.2536535257218223, 0.020986768318263033, 0.017647788655932042, 0.019410764482054234, 0.07414400402819726]
- #x = [3.3**2, 6.3**2, 9.3**2, 12.3**2]
- #y = [6.21**2, 6.05**2, 6.34**2, 6.689**2]
- #sigma = [1.4, 0.5, 0.6, 0.07]
- def LinearWLS(x, y, yerr):
- sum1 = 0
- for i in range(len(x)):
- sum1 += x[i]**2 / yerr[i]**2
- sum2 = 0
- for i in range(len(x)):
- sum2 += 1 / yerr[i]**2
- sum3 = 0
- for i in range(len(x)):
- sum3 += x[i] / yerr[i]**2
- delta = sum1 * sum2 - sum3**2
- sum4 = 0
- for i in range(len(x)):
- sum4 += x[i] * y[i] / yerr[i]**2
- sum5 = 0
- for i in range(len(x)):
- sum5 += 1 / yerr[i]**2
- sum6 = 0
- for i in range(len(x)):
- sum6 += x[i] / yerr[i]**2
- sum7 = 0
- for i in range(len(x)):
- sum7 += y[i] / yerr[i]**2
- delta_a = sum4 * sum5 - sum6 * sum7
- a = delta_a / delta
- sum8 = 0
- for i in range(len(x)):
- sum8 += 1 / yerr[i]**2
- s_a = math.sqrt(sum8 / delta)
- sum9 = 0
- for i in range(len(x)):
- sum9 += x[i]**2 / yerr[i]**2
- sum10 = 0
- for i in range(len(x)):
- sum10 += y[i] / yerr[i]**2
- sum11 = 0
- for i in range(len(x)):
- sum11 += x[i] / yerr[i]**2
- sum12 = 0
- for i in range(len(x)):
- sum12 += x[i] * y[i] / yerr[i]**2
- delta_b = sum9 * sum10 - sum11 * sum12
- b = delta_b / delta
- s_b = math.sqrt(sum9 / delta)
- return {
- "A" : a,
- "S_A" : s_a,
- "B" : b,
- "S_B" : s_b
- }
- '''
- print(LinearWLS([0, 10, 20, 30, 40, 50, 60],
- [5.4000, 5.0017, 4.8000, 4.5000, 4.3000, 4.0017, 3.8017],
- [0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05]))
- print(LinearWLS([0, 10, 20, 30, 40, 50, 60],
- [5.4104, 4.3013, 3.2980, 2.4007, 1.5993, 0.7967, 0.1987],
- [0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05]))
- print(LinearWLS([0, 10, 20, 30, 40, 50, 60],
- [6.2016, 5.3980, 4.8990, 4.2990, 3.8000, 3.3010, 2.8000],
- [0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05]))
- print(LinearWLS([0, 10, 20, 30, 40, 50, 60],
- [6.1963, 5.6000, 4.9007, 4.2980, 3.6993, 3.2013, 2.6993],
- [0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05]))
- print(LinearWLS([0, 1, 2, 3, 4, 5, 6],
- [5.1978, 3.5075, 2.3041, 1.5088, 0.8012, 0.5088, 0.3099],
- [0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05]))
- '''
- '''
- print(LinearWLS([0, 10, 20, 30, 40, 50, 60],
- [0, 22.352381, 44.742859, 67.076187, 89.409523, 111.676193, 133.895233],
- [0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001]))
- print(LinearWLS([0, 10, 20, 30, 40, 50, 60],
- [0, 22.194253, 44.333164, 66.174205, 87.81084, 109.142421, 130.278781],
- [0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001]))
- print(LinearWLS([0, 10, 20, 30, 40, 50, 60],
- [0, 22.230215, 44.422909, 66.572685, 88.660789, 110.722466, 132.881058],
- [0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001]))
- print(LinearWLS([0, 10, 20, 30, 40, 50, 60],
- [0, 22.295918, 44.551022, 66.734695, 88.826530, 110.867348, 132.877548],
- [0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001]))
- print(LinearWLS([0, 1, 2, 3, 4, 5, 6],
- [0, 2.020661, 4.033536, 6.006098, 7.935976, 9.820122, 11.658537],
- [0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001]))'''
- def ProportionalWLS(x, y, yerr):
- sum1 = 0
- for i in range(len(x)):
- sum1 += x[i] * y[i] / yerr[i]**2
- sum2 = 0
- for i in range(len(x)):
- sum2 += x[i]**2 / yerr[i]**2
- a = sum1 / sum2
- s_a = math.sqrt(1 / sum2)
- return {
- "A" : a,
- "S_A" : s_a,
- }
- '''
- print(ProportionalWLS([0.2, 135.2, 272.2, 412.0, 546.0, 696.0],
- [0.0, 9.2, 18.4, 27.9, 37.1, 47.9],
- [(0.01 * y + 2 * 0.1) for y in [0.0, 9.2, 18.4, 27.9, 37.1, 47.9]]))
- print(ProportionalWLS([0.1, 59.6, 91.2, 112.6, 175.40, 268.9],
- [0.0, 11.0, 16.8, 20.8, 32.3, 49.4],
- [(0.01 * y + 2 * 0.1) for y in [0.0, 11.0, 16.8, 20.8, 32.3, 49.4]]))
- print(ProportionalWLS([0.0, 25.4, 45.9, 84.2, 104.7, 123.1],
- [0.0, 12.5, 22.5, 41.1, 51.1, 60.0],
- [(0.01 * y + 2 * 0.1) for y in [0.0, 12.5, 22.5, 41.1, 51.1, 60.0]]))
- print(ProportionalWLS([1 / 0.0176715, 1 / 0.0490874, 1 / 0.1256637], [14.68, 5.4318, 2.049], [0.001, 0.001, 0.001]))
- print(ProportionalWLS([0.50, 1.00, 1.50], [1 / 0.06812159975124797, 1 / 0.0340818569933156, 1 / 0.022685820854011673], [0.11, 0.26, 0.3]))
- print(ProportionalWLS([1 / 0.0176715, 1 / 0.0490874, 1 / 0.1256637], [14.68, 5.4318, 2.049], [0.001, 0.001, 0.001]))
- '''
- '''
- print(LinearWLS([0.2, 0.4, 0.6, 0.8, 1.0],
- [0.00713, 0.0162, 0.0294, 0.0391, 0.0510],
- [0.00016, 0.0004, 0.0006, 0.0009, 0.0010]))
- print(LinearWLS([0.2, 0.4, 0.6, 0.8, 1.0],
- [0.0141, 0.0327, 0.0553, 0.0749, 0.0893],
- [0.00029, 0.0007, 0.0011, 0.0015, 0.0018]))
- print(LinearWLS([0.2, 0.4, 0.6, 0.8, 1.0],
- [0.0213, 0.0495, 0.0807, 0.1101, 0.1372],
- [0.0004, 0.0010, 0.0016, 0.0022, 0.0027]))
- '''
- '''
- print(LinearWLS([3, 6, 9],
- [0.024, 0.047, 0.071],
- [0.003, 0.003, 0.003]))
- print(LinearWLS([3, 6, 9],
- [0.0268, 0.0491, 0.0730],
- [0.0004, 0.0008, 0.0011]))
- '''
- #x = [4.010, 6.430, 10.090, 12.760, 16.270, 4.010, 10.090, 16.270]
- #y = [100*0.056, 100*0.086, 100*0.12, 100*0.15, 100*0.19, 7.9, 24, 41]
- #yerr = [100*0.017, 100*0.025, 100*0.03, 100*0.04, 100*0.06, 2.4, 7, 12]
- #print(ProportionalWLS([4.010, 10.090, 16.270],
- # [7.9, 24, 41],
- # [2.4, 7, 12]))
- '''
- print(LinearWLS([0.2, 0.4, 0.6, 0.8, 1.0],
- [0.0147, 0.0332, 0.0560, 0.0769, 0.0985],
- [0.0004, 0.0007, 0.0011, 0.0016, 0.0021]))
- print(LinearWLS([0.2, 0.4, 0.6, 0.8, 1.0],
- [0.01399, 0.0322, 0.0547, 0.0752, 0.0956],
- [0.00029, 0.0007, 0.0011, 0.0015, 0.0019]))
- '''
- '''print(ProportionalWLS([0, 0.012*100/100, 0.002*100/100, 0.004*100/100, 0.007*100/100],
- [0, 0.46107, 0.0981, 0.1962, 0.2943],
- [0.01, 0.01, 0.01, 0.01, 0.01]))
- '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement