Пример #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)
	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
Пример #3
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     单位: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
			)
Пример #4
0
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)