Пример #1
0
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
Пример #2
0
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
Пример #3
0
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
Пример #4
0
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
Пример #5
0
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)
Пример #6
0
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
Пример #7
0
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
Пример #8
0
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
Пример #9
0
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
Пример #10
0
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)