import math
if __name__ == "__main__":
#模式 (0:并联;1:串联)
mode = 1
#频率(Hz)
f = 50
#电压(V)
Vol = 50
#线性支路使能
route_r_en = 1
#线性支路电阻(Ω)
R = 10
#RL支路使能
route_rl_en = 1
#RL支路电阻(Ω)
Rl = 1
#RL支路电感(H)
L = 0.03183
#RC支路使能
route_rc_en = 0
#RC支路电阻(Ω)
Rc = 0
#RC支路电容(H)
C = 0.0006366
###################################
#角频率
w = 2 * math.pi * f
if mode: #串联
Xl = w * L
if C:
Xc = 1 / (w*C)
else:
Xc = 0
X = Xl - Xc
Z = math.sqrt(R*R + X*X)
#电流有效值
I_rms = Vol / Z
#功率因数
if X >= 0:
PF = R / Z
else:
PF = -R / Z
else: #并联
#线性支路电流
if route_r_en:
Ir = Vol / R
else:
Ir = 0
#RL支路电流
if route_rl_en:
Xl = w * L
Z = math.sqrt(Rl*Rl + Xl*Xl)
Irl = Vol / Z
Irl0 = Irl * Rl / Z
Irl1 = Irl * Xl / Z
else:
Irl = 0
Irl0 = 0
Irl1 = 0
#RC支路电流
if route_rc_en:
if C:
Xc = 1 / (w*C)
else:
Xc = 0
Z = math.sqrt(Rc*Rc + Xc*Xc)
Irc = Vol / Z
Irc0 = Irc * Rc / Z
Irc1 = Irc * Xc / Z
else:
Irc = 0
Irc0 = 0
Irc1 = 0
#线性电流
I_line = Ir + Irl0 + Irc0
#非线性电流
I_lc = Irl1 - Irc1
#电流有效值
I_rms = math.sqrt(I_line*I_line + I_lc*I_lc)
#功率因数
if I_lc >= 0:
PF = I_line / I_rms
else:
PF = -I_line / I_rms
print("I_rms = "+str(I_rms)+"A\nPF = "+str(PF))