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.

Código:
import math as math
from math import pi
from math import exp

#CONVERSIÓN GRADOS-RADIANES
def radianes(theta):
    thetarad=theta*pi/180
    return thetarad

def grad(alpha):
    alphagrad=alpha*180/pi
    return alphagrad
    pass

#VARIABLES CONOCIDAS
a=7
b=9
c=3
d=8
for Th2 in range(360):
    Th2rad=radianes(Th2)
   
#CONSTANTES: K1 K2 K3
K1=d/a
K2=d/c
K3=((a**2-b**2+c**2+d**2)/(2*a*c))

#VARIABLES: A B C
A=(math.cos(Th2rad)-K1-K2*math.cos(Th2rad)+K3)
B=(-2*math.sin(Th2rad))
C=(K1-(K2+1)*math.cos(Th2rad)+K3)

#VARIABLES: THETA 4
Th41=(2*math.atan((-B+(B**2-(4*A*C))**0.5)/2*A))
Th42=(2*math.atan((-B-(B**2-(4*A*C))**0.5)/2*A))

#VARIABLES: K4 K5
K4=d/b
K5=((c**2-d**2-a**2-b**2)/(2*a*b))

#VARIABLES: D E F
D=(math.cos(Th2rad)-K1+K4*math.cos(Th2rad)+K5)
E=(-2*math.sin(Th2rad))
F=(K1+((K4-1)*math.cos(Th2rad))+K5)

#VARIABLES: THETA 3
Th31=(2*math.atan((-E+(E**2-(4*D*F))**0.5)/(2*D)))
Th32=(2*math.atan((-E-(E**2-(4*D*F))**0.5)/(2*D)))

#ÁNGULO DE TRANSMISIÓN
ThT1=(((Th31-Th41)**2)**0.5)
ThT2=(((Th32-Th42)**2)**0.5)

if ThT1 > (pi/2):
    ThT1=(ThT1-pi/2)
print(ThT1)
       
if ThT2 > (pi/2):
    ThT2=(ThT2-pi/2)
print(ThT2)

#RESULTADOS
Resultados = [Th2,grad(Th41),grad(Th42),grad(Th31),grad(Th32),grad(ThT1),grad(ThT2)]
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!
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)