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) return res_fRx
def MeasureGalvo(R0, R1, R2, U, delta_V): global ki global d global Rg global U_ki global U_d 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) return res_Rg
def SteelWire(m, C_plus, C_sub, D, L, H, b): C = [] for i in range(0,9,1): C.append((C_plus[i] + C_sub[i]) / 2) delta_C = [] for i in range(4): delta_C.append(C[i+5] - 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 = 10 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 final
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 单位:cm 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 = round(sum(D) / len(D), 3) 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, len(D) - 1) #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[:-1], 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=phylab.ToScience(ua_D), u_D=phylab.ToScience(u_D), ua_C=phylab.ToScience(ua_delta_C), u_C=phylab.ToScience(u_delta_C), u_E_E=phylab.ToScience(u_E_E), u_E=phylab.ToScience(u_E), final=final)
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 LloydSodium(lx, bmin, bmax, loc): tenx = phylab.DWM(lx) delta_x = [] for a in tenx: delta_x.append(a / 10.0) delta_x.append(sum(delta_x) / len(delta_x)) ua_x = phylab.Ua(delta_x, delta_x[len(delta_x) - 1], len(delta_x) - 1) ub_x = 0.005 / sqrt(3) u_x = sqrt(ub_x**2 + ua_x**2) ave_bi = abs(bmin[0] - bmin[1] + bmin[2] - bmin[3]) / 2 bmin.append(ave_bi) ave_ba = abs(bmax[0] - bmax[1] + bmax[2] - bmax[3]) / 2 bmax.append(ave_ba) ua_bmin = sqrt( pow(ave_bi - (bmin[0] - bmin[1]), 2) / 2 + pow(ave_bi - (bmin[2] - bmin[3]), 2) / 2) ua_bmax = sqrt( pow(ave_ba - (bmax[0] - bmax[1]), 2) / 2 + pow(ave_ba - (bmax[2] - bmax[3]), 2) / 2) u_bmin = sqrt( pow(0.025 * ave_bi / sqrt(3), 2) + pow(0.005 / sqrt(3), 2) + pow(ua_bmin, 2)) u_bmax = sqrt( pow(0.025 * ave_ba / sqrt(3), 2) + pow(0.005 / sqrt(3), 2) + pow(ua_bmax, 2)) smin = abs(loc[0] - loc[4]) * 10 smax = abs(loc[0] - loc[3]) * 10 u_smin = sqrt(pow(0.5 / sqrt(3), 2) + pow(0.05 / sqrt(3), 2)) u_smax = sqrt(pow(0.5 / sqrt(3), 2) + pow(0.05 / sqrt(3), 2)) lbd = delta_x[len(delta_x) - 1] * sqrt( ave_bi * ave_ba) / (smin + smax) * pow(10, 6) temp = pow(u_x / delta_x[len(delta_x) - 1], 2) temp += pow(u_bmin / 2 / ave_bi, 2) temp += pow(u_bmax / 2 / ave_ba, 2) temp += pow(u_smin / 10 / (smin + smax), 2) temp += pow(u_smax / 10 / (smin + smax), 2) u_lbd = lbd * sqrt(temp) res = phylab.BitAdapt(lbd, u_lbd) return res
def VA_MR(R1, R2, R_o, U, I): mark = 0 temp1 = abs(R1 - R_o) / R_o temp2 = abs(R2 - R_o) / R_o if temp1 > temp2: mark = 1 U.append(sum(U) / len(U)) I.append(sum(I) / len(I)) #一元线性回归计算R res = phylab.ULR(I, U) b = res[0] r = res[1] R = b * 1000 ua_R = b * sqrt((1 / pow(r, 2) - 1) / (len(U) - 1 - 2)) * 1000 u_R = ua_R res = phylab.BitAdapt(R, u_R) return res
def VA_MR(R1, R2, R_o, U, I, source): mark = 0 temp1 = abs(R1 - R_o) / R_o temp2 = abs(R2 - R_o) / R_o if temp1 > temp2: mark = 1 U.append(sum(U) / len(U)) I.append(sum(I) / len(I)) #一元线性回归计算R res = phylab.ULR(I, U) b = res[0] r = res[1] R = b * 1000 ua_R = b * sqrt((1 / pow(r, 2) - 1) / (len(U) - 1 - 2)) * 1000 u_R = ua_R res = phylab.BitAdapt(R, u_R) phylab.RoundOne(U, 1) phylab.RoundOne(I, 1) b = round(b, 7) r = round(r, 7) R = round(R, 4) u_R = round(u_R, 3) ua_R = round(ua_R, 3) result = env.from_string(source).render(R1=R1, R2=R2, R_o=R_o, U=U, I=I, MARK=mark, b=b, r=r, R=R, UA_R=ua_R, U_R=u_R, RES=res) return result
def LloydSodium(lx, bmin, bmax, loc): tenx = phylab.DWM(lx) delta_x = [] for a in tenx: delta_x.append(a / 10.0) delta_x.append(sum(delta_x) / len(delta_x)) ua_x = phylab.Ua(delta_x, delta_x[len(delta_x) - 1], len(delta_x) - 1) ub_x = 0.005 / sqrt(3) u_x = sqrt(ub_x**2 + ua_x**2) ave_bi = abs(bmin[0] - bmin[1] + bmin[2] - bmin[3]) / 2 bmin.append(ave_bi) ave_ba = abs(bmax[0] - bmax[1] + bmax[2] - bmax[3]) / 2 bmax.append(ave_ba) u_bmin = sqrt(pow(0.025 * ave_bi / sqrt(3), 2) + pow(0.005 / sqrt(3), 2)) u_bmax = sqrt(pow(0.025 * ave_ba / sqrt(3), 2) + pow(0.005 / sqrt(3), 2)) smin = abs(loc[0] - loc[4]) smax = abs(loc[0] - loc[3]) u_smin = 2.8 u_smax = 2.8 lbd = delta_x[len(delta_x) - 1] * sqrt( ave_bi * ave_ba) / (smin + smax) * pow(10, 5) temp = pow(u_x / delta_x[len(delta_x) - 1], 2) temp += pow(u_bmin / 2 / ave_bi, 2) temp += pow(u_bmax / 2 / ave_ba, 2) temp += pow(u_smin / 10 / (smin + smax), 2) temp += pow(u_smax / 10 / (smin + smax), 2) u_lbd = lbd * sqrt(temp) res = phylab.BitAdapt(lbd, u_lbd) print "res: " + str(res) phylab.RoundOne(lx, 3) print "lx: " + str(lx) phylab.RoundOne(tenx, 3) print "tenx: " + str(tenx) phylab.RoundOne(delta_x, 4) print "delta_x: " + str(delta_x) ua_x = round(ua_x, 5) print "ua_x: " + str(ua_x) ub_x = round(ub_x, 5) print "ub_x: " + str(ub_x) u_x = round(u_x, 5) print "u_x: " + str(u_x) phylab.RoundOne(bmin, 3) print "bmin: " + str(bmin) phylab.RoundOne(bmax, 3) print "bmax: " + str(bmax) u_bmin = round(u_bmin, 4) print "u_bmin: " + str(u_bmin) u_bmax = round(u_bmax, 4) print "u_bmax: " + str(u_bmax) phylab.RoundOne(loc, 1) print "loc: " + str(loc) smin = round(smin, 1) print "smin: " + str(smin) smax = round(smax, 1) print "smax: " + str(smax) u_smin = round(u_smin, 1) print "u_smin: " + str(u_smin) u_smax = round(u_smax, 1) print "u_smax: " + str(u_smax) lbd = round(lbd, 3) print "lbd: " + str(lbd) u_lbd = round(u_lbd, 3) print "u_lbd: " + str(u_lbd)