[ Foro de Pascal ]
Buenas tardes, amigos. Tengo el siguiente código con el que quiero crear una funcion en VBA con la que conocidos a,b y c (en celdas) de una ecuación cubica de la siguiente forma: z ^3+az ^2+bz+c=0 me halle sus respectivas raices y me las escriba. El problema es que el codigo me da error diciendo que no he definido el sub o función y la verdad es que no entiendo por que? Ayudaa por fa y tambien como haria en el caso del condicional 2 para que si me va a dar en resultado de esas 3 raices me las coloque en las casillas que yo deseara. :)
Function Cardano(a As Double, b As Double, c As Double) As Double
Dim Q, R, tita, z1, z2, z3, AA, BB, zz As Double
'calculos
Q = ((a ^ 2) - 3 * b) / 9
R = (2 * (a ^ 3) - 9 * a * b + 27 * c) / 54
'Uso de if.
If (R ^ 2 < Q ^ 3) Then
tita = Acos(R / RCUAD(Q ^ 3))
z1 = -2 * RCUAD(Q) * Cos(tita / 3) - a / 3
z2 = -2 * RCUAD(Q) * Cos((tita + 2 * Pi) / 3) - a / 3
z3 = -2 * RCUAD(Q) * Cos((tita - 2 * Pi) / 3) - a / 3
End If
If R ^ 2 > Q ^ 3 Then
AA = -Sign(R) * (Abs(R) + RCUAD(R ^ 2 - Q ^ 3)) ^ (1 / 3)
If AA = 0 Then BB = 0
ElseIf (AA < 0 Or AA > 0) Then BB = Q / AA
End If
zz = (AA + BB) - a / 3
End If
End Function
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)