def MeasureGalvo(R0, R1, R2, U, d, delta_V): Rg = R2 ki = R1 * U / ((R0 + R1) * R2 * d) #不确定度计算 delta_R2 = phylab.DELTA_R(R2) U_Rg = delta_R2 / sqrt(3) delta_R1 = phylab.DELTA_R(R1) U_R1 = delta_R1 / sqrt(3) delta_R0 = phylab.DELTA_R(R0) U_R0 = delta_R0 / sqrt(3) U_V = delta_V / sqrt(3) U_d = 0.5 / sqrt(3) Uki = pow(R0 * U_R0 / (R1 * (R0 + R1)), 2) Uki = Uki + pow(U_V / U, 2) Uki = Uki + pow(U_R0 / (R0 + R1), 2) Uki = Uki + pow(U_Rg / Rg, 2) Uki = Uki + pow(U_d / d, 2) Uki = sqrt(Uki) U_ki = Uki * ki res_Rg = phylab.BitAdapt(Rg, U_Rg) print " res_Rg:" + res_Rg res_ki = phylab.BitAdapt(ki, U_ki) print " res_ki:" + res_ki R0 = round(R0, 1) print " R0:" + str(R0) Rg = round(Rg, 1) print " Rg:" + str(Rg) R2 = round(R2, 1) print "R2 :" + str(R2) d = ("%.0f" % d) print " d:" + d U = round(U, 1) print " U:" + str(U) R1 = ("%.0f" % R1) print "R1 :" + R1 ki = phylab.ToScience(ki) print " ki:" + ki delta_R0 = round(delta_R0, 3) print " delta_R0:" + str(delta_R0) delta_R1 = round(delta_R1, 3) print " delta_R1:" + str(delta_R1) delta_R2 = round(delta_R2, 3) print " delta_R2:" + str(delta_R2) delta_V = round(delta_V, 3) print " delta_V:" + str(delta_V) U_R0 = round(U_R0, 4) print " U_R0:" + str(U_R0) U_R1 = round(U_R1, 4) print " U_R1:" + str(U_R1) U_Rg = round(U_Rg, 4) print " U_Rg:" + str(U_Rg) U_V = round(U_V, 4) print " U_V:" + str(U_V) U_d = round(U_d, 4) print " U_d:" + str(U_d) Uki = round(Uki, 5) print " Uki:" + str(Uki) U_ki = phylab.ToScience(U_ki) print " U_ki:" + U_ki
def VA_HR(Rs,U,delta_V): global ki global d global Rg global U_ki global U_d if ki == 0: return Rx = (Rs*U) / ((Rs + Rg)*ki*d) fRx = (Rs*U) / ((Rs + Rg)*ki*d) - Rg*Rs/(Rg + Rs) #不确定度计算 delta_Rs = phylab.DELTA_R(Rs) delta_Rg = phylab.DELTA_R(Rg) U_Rs = delta_Rs/sqrt(3) U_Rg = delta_Rg/sqrt(3) U_V = delta_V/sqrt(3) a1 = pow(Rg*U_Rs/(Rs*(Rg+Rs)) , 2) a2 = pow(U_V/(U-ki*d*Rg) , 2) a3 = pow((d*Rg/(U-ki*d*Rg)+1/ki)*U_ki,2) a4 = pow((ki*Rg/(U-ki*d*Rg)+1/d)*U_d,2) a5 = pow((ki*d/(U-ki*d*Rg)+1/(Rg+Rs))*U_Rg,2) UfRx = sqrt(a1+a2+a3+a4+a5) U_fRx = UfRx * fRx res_fRx = phylab.BitAdapt(fRx,U_fRx) print "res_fRx:" + res_fRx r_U = round(U,2) print "U:" + str(r_U) r_d = ("%d" %d) print "d:" + r_d r_Rs = ("%d" %Rs) print "Rs:" + r_Rs r_Rx = phylab.ToScience(Rx) print "Rx:" + r_Rx r_fRx = phylab.ToScience(fRx) print "fRx:" + r_fRx r_delta_Rs = round(delta_Rs,2) print "delta_Rs:" + str(r_delta_Rs) r_U_Rs = round(U_Rs,3) print "U_Rs:" + str(r_U_Rs) r_U_Rg = round(U_Rg,3) print "U_Rg:" + str(r_U_Rg) r_delta_V = round(delta_V,3) print "delta_V:" + str(r_delta_V) r_U_V = round(U_V,4) print "U_V:" + str(r_U_V) r_U_ki = phylab.ToScience(U_ki) print "U_ki:" + r_U_ki r_U_d = round(U_d,4) print "U_d:" + str(r_U_d) r_UfRx = phylab.ToScience(UfRx) print "UfRx:" + r_UfRx r_U_fRx = phylab.ToScience(U_fRx) print "U_fRx:" + r_U_fRx
def SteelWire(m, C_plus, C_sub, D, L, H, b, source): # m为等差数列,一般从10到24 单位:kg # C 单位:cm # D 单位:mm # L 单位:cm # H 单位:cm # b 单位:mm C = [] for i in range(0,len(C_plus),1): C.append((C_plus[i] + C_sub[i]) / 2) delta_C = [] for i in range(4): delta_C.append(C[i+4] - C[i]) ave_delta_C = sum(delta_C) / 4 delta_C.append(round(ave_delta_C,2)) ave_D = sum(D) / 5 D.append(ave_D) delta_m = m[4] - m[0]; E = 16 * 9.8 * L * delta_m * H * pow(10,6) / (pi * pow(ave_D,2) * b * ave_delta_C) ua_delta_C = phylab.Ua(delta_C,ave_delta_C,4)#cm ub_delta_C = 0.05 / sqrt(3)#cm u_delta_C = sqrt(ua_delta_C**2 + ub_delta_C**2)#cm ua_D = phylab.Ua(D,ave_D,5)#mm ub_D = 0.005 / sqrt(3)#mm u_D = sqrt(ua_D**2 + ub_D**2)#mm u_b = 0.02 / sqrt(3)#cm u_L = 0.3 / sqrt(3)#cm u_H = 0.5 / sqrt(3)#cm u_E_E = sqrt(pow(u_L / L,2)+pow(u_H / H,2)+pow(2 * u_D / ave_D,2)+pow(u_b / b,2)+pow(u_delta_C / ave_delta_C,2)) u_E = u_E_E * E final = phylab.BitAdapt(E,u_E) return env.from_string(source).render( L = L, H = H, b = b, D = D, ave_D = ave_D, m = m, delta_m = delta_m, C_plus = C_plus, C_sub = C_sub, C = C, ave_delta_C = ave_delta_C, E = phylab.ToScience(E), ua_D = ua_D, u_D = u_D, ua_C = ua_delta_C, u_C = u_delta_C, u_E_E = u_E_E, u_E = u_E, final = final )
def Inertia(m, d, T, l, T2, source): # 所有测得的数据必须是5倍周期 I = [-1] # 实际值 J = [-1] # 理论值 len_T = [] delta = [] for a in T: a.append(sum(a) / len(a) / 5) len_T += [len(a)] # 计算扭转常数k temp = m[0] * pow(d[0], 2) * pow(10, -9) / 8 I.append(temp) J.append(temp) k = 4 * pow(pi, 2) * temp / (pow(T[1][-1], 2) - pow(T[0][-1], 2)) I[0] = pow(T[0][-1], 2) * k / (4 * pow(pi, 2)) # 圆筒转动惯量 I.append(pow(T[2][-1], 2) * k / (4 * pow(pi, 2)) - I[0]) J.append(m[1] * (d[1]**2 + d[2]**2) * pow(10, -9) / 8) # 球转动惯量 I.append(pow(T[3][-1], 2) * k / (4 * pow(pi, 2))) J.append(m[2] * pow(d[3], 2) * pow(10, -9) / 10) # 细杆转动惯量 I.append(pow(T[4][-1], 2) * k / (4 * pow(pi, 2))) J.append(m[3] * pow(d[4], 2) * pow(10, -9) / 12) for i in range(2, 5): delta.append(abs(J[i] - I[i]) * 100 / J[i]) # 百分之多少 # # 验证平行轴定理 # for a in T2: # a.append(sum(a) / len(a)) # # 线性回归计算 # x, y, xy, x2, y2 = [], [], [], [], [] # temp = 0 # for i in range(5): # temp += 5 # x.append(temp ** 2) # x2.append(x[i] ** 2) # y.append(pow(T2[i][-1] / 5, 2)) # y2.append(y[i] ** 2) # xy.append(x[i] * y[i]) # ave_x = sum(x) / len(x) # ave_y = sum(y) / len(y) # ave_x2 = sum(x2) / len(x2) # ave_y2 = sum(y2) / len(y2) # ave_xy = sum(xy) / len(xy) # b = (ave_x * ave_y - ave_xy) / (ave_x ** 2 - ave_x2) * pow(10, 4) # a = ave_y - b * ave_x * pow(10, -4) # r = abs(ave_xy - ave_x * ave_y) / sqrt((ave_x2 - ave_x ** 2) * (ave_y2 - ave_y ** 2)) # I1 = m[4] * (l[0] ** 2 + l[1] ** 2) * pow(10, -9) / 16 + m[4] * l[2] ** 2 * pow(10, -9) / 12 # I2 = m[5] * (l[0] ** 2 + l[1] ** 2) * pow(10, -9) / 16 + m[5] * l[2] ** 2 * pow(10, -9) / 12 # b1 = (m[4] + m[5]) * 4 * pi ** 2 / k / pow(10, 3) # a1 = (J[3] + I1 + I2) * 4 * pi ** 2 / k # res = [r, b] phylab.RoundTwo(T, 2) phylab.RoundOne(delta, 2) return env.from_string(source).render(m=m, d=d, T=T, len_T=len_T, K=phylab.ToScience(k), I=map(phylab.ToScience, I), J=map(phylab.ToScience, J), delta=delta)