tp/scripts/valores.py (2757B)
1 import itertools 2 3 # Capacitores 4 E6_C = [1.0, 1.5, 2.2, 3.3, 4.7, 6.8] 5 6 # resistencias de 5% de error 7 E24_R = [ 8 1.0, 1.1, 1.2, 1.3, 1.5, 1.6, 1.8, 2.0, 2.2, 2.4, 2.7, 3.0, 9 3.3, 3.6, 3.9, 4.3, 4.7, 5.1, 5.6, 6.2, 6.8, 7.5, 8.2, 9.1 10 ] 11 12 E24_R_custom = [ 13 1.0, 1.1, 1.2, 1.3, 1.5, 1.6, 1.8, 2.0, 2.2, 2.4, 2.7, 3.0, 14 3.3, 3.6, 3.9, 4.3, 4.7, 5.1, 5.6, 6.2, 6.8, 7.5, 8.2 15 ] 16 17 # resistencias de 2% de error 18 E48_R = [ 19 1.00, 1.05, 1.10, 1.15, 1.21, 1.27, 1.33, 1.40, 1.47, 1.54, 1.62, 1.69, 20 1.78, 1.87, 1.96, 2.05, 2.15, 2.26, 2.37, 2.49, 2.61, 2.74, 2.87, 3.01, 21 3.16, 3.32, 3.48, 3.65, 3.83, 4.02, 4.22, 4.42, 4.64, 4.87, 5.11, 5.36, 22 5.62, 5.90, 6.19, 6.49, 6.81, 7.15, 7.50, 7.87, 8.25, 8.66, 9.09, 9.53 23 ] 24 25 # resistencias de 1% de error 26 E96_R = [ 27 1.00, 1.02, 1.05, 1.07, 1.10, 1.13, 1.15, 1.18, 1.21, 1.24, 1.27, 1.30, 28 1.33, 1.37, 1.40, 1.43, 1.47, 1.50, 1.54, 1.58, 1.62, 1.65, 1.69, 1.74, 29 1.78, 1.82, 1.87, 1.91, 1.96, 2.00, 2.05, 2.10, 2.15, 2.21, 2.26, 2.32, 30 2.37, 2.43, 2.49, 2.55, 2.61, 2.67, 2.74, 2.80, 2.87, 2.94, 3.01, 3.09, 31 3.16, 3.24, 3.32, 3.40, 3.48, 3.57, 3.65, 3.74, 3.83, 3.92, 4.02, 4.12, 32 4.22, 4.32, 4.42, 4.53, 4.64, 4.75, 4.87, 4.99, 5.11, 5.23, 5.36, 5.49, 33 5.62, 5.76, 5.90, 6.04, 6.19, 6.34, 6.49, 6.65, 6.81, 6.98, 7.15, 7.32, 34 7.50, 7.68, 7.87, 8.06, 8.25, 8.45, 8.66, 8.87, 9.09, 9.31, 9.53, 9.76 35 ] 36 37 38 SERIE_R = E24_R_custom 39 SERIE_C = E6_C 40 41 # décadas 42 DECADAS_R = [1, 10, 100, 1_000, 10_000, 100_000] 43 DECADAS_C = [1e-9, 10e-9, 100e-9, 1e-6] # pF–uF 44 45 46 # lista de resistencias y capacitores disponibles 47 resistencias = [v * d for v, d in itertools.product(SERIE_R, DECADAS_R)] 48 capacitores = [v * d for v, d in itertools.product(SERIE_C, DECADAS_C)] 49 50 # a = 1/(RC) 51 def find_lower_error(a, res_list=resistencias, cap_list=capacitores): 52 resultados = [] 53 54 for R, C in itertools.product(res_list, cap_list): 55 R_teorica = 1 / (C * a) 56 57 if R_teorica == 0: 58 continue 59 60 error_porcentual = abs((R - R_teorica) / R_teorica) * 100 61 resultados.append((error_porcentual, R, C, R_teorica)) 62 63 # ordenar por error porcentual 64 resultados.sort(key=lambda x: x[0]) 65 return resultados 66 67 if __name__ == "__main__": 68 top = find_lower_error(250) 69 70 print(f" R [Ω], R_ideal [Ω], C [F], Err [%]") 71 for i, (err, R, C, R_ideal) in enumerate(top[:10], 1): 72 print(f"{R:9.2f}, {R_ideal:11.2f}, {C:8.2e}, {err:7.2f}") 73 74 top_cap_list=[c for (err, R, c, R_ideal) in top[:10]] 75 top_2 = find_lower_error(500, cap_list=top_cap_list) 76 77 print("") 78 print(f" R [Ω], R_ideal [Ω], C [F], Err [%]") 79 for i, (err, R, C, R_ideal) in enumerate(top_2[:10], 1): 80 print(f"{R:9.2f}, {R_ideal:11.2f}, {C:8.2e}, {err:7.2f}")
