Autor Tema: Relación de engranajes  (Leído 627 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Carlos Net

  • Junior
  • ***
  • Mensajes: 116
Relación de engranajes
« en: 07/Oct./2015, 11:42:32 a. m. »
Código: Python
  1. # Relatran
  2. relation = 3.1415927
  3.  
  4. gears = 2
  5. dientes_min = 8
  6. dientes_max = 32
  7.  
  8. rels = {}
  9. for t1 in range(dientes_min, dientes_max+1):
  10.    for t2 in range(dientes_min, dientes_max+1):
  11.       rel = float(t1)/t2
  12.       if not rel in rels:
  13.           rels[rel] = [t1, t2, rel]
  14.  
  15. best_r = 1
  16. for r1 in rels:
  17.    for r2 in rels:
  18.       error = abs(((r1 * r2)/relation) - 1)
  19.       if error < best_r:
  20.          best_r = error
  21.          print error, rels[r1], rels[r2], r1*r2
  22.  
« Última modificación: 09/Oct./2015, 11:41:12 a. m. por Crawler »

Carlos Net

  • Junior
  • ***
  • Mensajes: 116
Re:Relación de engranajes
« Respuesta #1 en: 09/Oct./2015, 13:55:08 p. m. »
Código: Python
  1. # Relatran
  2. import math
  3. relation = math.exp(1)
  4.  
  5. gears = 2
  6. teeth_min = 8
  7. teeth_max = 32
  8.  
  9. rels = {}
  10. for t1 in range(teeth_min, teeth_max+1):
  11.    for t2 in range(teeth_min, teeth_max+1):
  12.       rel = float(t1)/t2
  13.       if not rel in rels:
  14.           rels[rel] = [t1, t2, rel]
  15.  
  16. best_r = 1
  17. rels12 = {}
  18. for r1 in rels:
  19.   for r2 in rels:
  20.      r12 = r1 * r2 / relation
  21.      if not r12 in rels12:
  22.         rels12[r12] = [r1, r2]
  23.  
  24. count = len(rels)
  25. paso = 0
  26. for r3 in rels:
  27.   if paso <= 0:
  28.      paso = len(rels) / 100
  29.      print (100*count)/len(rels),
  30.      count -= paso
  31.   paso -=1
  32.  
  33.   for rel12 in rels12:
  34.     if abs(rel12 * r3 - 1) < best_r:
  35.       best_r = abs(rel12 * r3 - 1)
  36.       r1, r2 = rels12[rel12]
  37.       print '\n\n', best_r, rels[r1], rels[r2], rels[r3], r1*r2*r3
  38.  
  39.  
« Última modificación: 09/Oct./2015, 13:56:44 p. m. por Crawler »