fork download
  1. def secante_tabla(fx, xa, tolerancia):
  2. dx = 4 * tolerancia
  3. xb = xa + dx
  4. tramo = dx
  5. tabla = []
  6. while (tramo >= tolerancia):
  7. fa = fx(xa)
  8. fb = fx(xb)
  9. xc = xa - fa * (xb - xa) / (fb - fa)
  10. tramo = abs(xc - xa)
  11.  
  12. tabla.append([xa, xb, xc, tramo])
  13. xb = xa
  14. xa = xc
  15.  
  16. return tabla
  17.  
  18. a = 3.592
  19. b = 0.04267
  20. # L atm/mol k
  21. R = 0.082054
  22. p = 10
  23. xa = 1.5
  24. tolerancia = 0.001
  25. tramos = 100
  26.  
  27. # Temperatura predefinida
  28. T = 300 # Cambia este valor según la temperatura deseada
  29.  
  30. fx = lambda x: (p + a / x**2) * (x - b) - R * T
  31. dfx = lambda x: p - (a / x**2) + (2 * a * b / x**3)
  32. tabla = secante_tabla(fx, xa, tolerancia)
  33. n = len(tabla)
  34. raiz = tabla[n - 1][2]
  35. print('[xa ,\t xb , \t xc , \t tramo]')
  36. for i in range(0, n, 1):
  37. print(tabla[i])
  38. print('raíz en: ', raiz)
  39.  
  40.  
Success #stdin #stdout 0.02s 7224KB
stdin
Standard input is empty
stdout
[xa ,	 xb , 	 xc , 	 tramo]
[1.5, 1.504, 2.4079914908459217, 0.9079914908459217]
[2.4079914908459217, 1.5, 2.352499646674397, 0.05549184417152464]
[2.352499646674397, 2.4079914908459217, 2.354492683241415, 0.0019930365670179917]
[2.354492683241415, 2.352499646674397, 2.3544955808627037, 2.8976212886888675e-06]
('ra\xc3\xadz en: ', 2.3544955808627037)