Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
TypeError: convertir complex a float
#1
Estoy empezando en el mundo del Python, interesado en aprender éste lenguaje y en lo posible retroalimentar a los demás con lo que valla aprendiendo.
Adjunto mi primer proyecto, me sale un error de: TypeError: can't convert complex to float.

  1. import math as math
  2. from math import pi
  3. from math import exp
  4.  
  5. #CONVERSIÓN GRADOS-RADIANES
  6. def radianes(theta):
  7.     thetarad=theta*pi/180
  8.     return thetarad
  9.  
  10. def grad(alpha):
  11.     alphagrad=alpha*180/pi
  12.     return alphagrad
  13.     pass
  14.  
  15. #VARIABLES CONOCIDAS
  16. a=7
  17. b=9
  18. c=3
  19. d=8
  20. for Th2 in range(360):
  21.     Th2rad=radianes(Th2)
  22.    
  23. #CONSTANTES: K1 K2 K3
  24. K1=d/a
  25. K2=d/c
  26. K3=((a**2-b**2+c**2+d**2)/(2*a*c))
  27.  
  28. #VARIABLES: A B C
  29. A=(math.cos(Th2rad)-K1-K2*math.cos(Th2rad)+K3)
  30. B=(-2*math.sin(Th2rad))
  31. C=(K1-(K2+1)*math.cos(Th2rad)+K3)
  32.  
  33. #VARIABLES: THETA 4
  34. Th41=(2*math.atan((-B+(B**2-(4*A*C))**0.5)/2*A))
  35. Th42=(2*math.atan((-B-(B**2-(4*A*C))**0.5)/2*A))
  36.  
  37. #VARIABLES: K4 K5
  38. K4=d/b
  39. K5=((c**2-d**2-a**2-b**2)/(2*a*b))
  40.  
  41. #VARIABLES: D E F
  42. D=(math.cos(Th2rad)-K1+K4*math.cos(Th2rad)+K5)
  43. E=(-2*math.sin(Th2rad))
  44. F=(K1+((K4-1)*math.cos(Th2rad))+K5)
  45.  
  46. #VARIABLES: THETA 3
  47. Th31=(2*math.atan((-E+(E**2-(4*D*F))**0.5)/(2*D)))
  48. Th32=(2*math.atan((-E-(E**2-(4*D*F))**0.5)/(2*D)))
  49.  
  50. #ÁNGULO DE TRANSMISIÓN
  51. ThT1=(((Th31-Th41)**2)**0.5)
  52. ThT2=(((Th32-Th42)**2)**0.5)
  53.  
  54. if ThT1 > (pi/2):
  55.     ThT1=(ThT1-pi/2)
  56. print(ThT1)
  57.        
  58. if ThT2 > (pi/2):
  59.     ThT2=(ThT2-pi/2)
  60. print(ThT2)
  61.  
  62. #RESULTADOS
  63. Resultados = [Th2,grad(Th41),grad(Th42),grad(Th31),grad(Th32),grad(ThT1),grad(ThT2)]
  64. print(Resultados)


Requiero que me imprima los valores de la última línea, y al revisar  los valores de las ecuaciones no encuentro falla, no sé si es por notación o que hace referencia el error.
Responder
#2
Hola, bienvenido.

En la línea 34, la siguiente expresión retorna un complex (i. e. un número imaginario):

Código:
(-B+(B**2-(4*A*C))**0.5)/2*A

No podés llamar a math.atan() sobre un número imaginario, de ahí el error.

Muevo el tema a la sección General.

Saludos!
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)