Resolver ecuación de segundo grado en Excel

Quisiera saber como puedo crear una función en Excel que me resuelva una ecuación de segundo grado completa.

Para poder crear una función que resuelva una ecuación de segundo grado, hemos de crear una función definida por el usuario. Para ello, seguiríamos los pasos explicados en un artículo anterior

El código a crear sería el siguiente:

Function ecuacion(ByRef a, ByRef b, ByRef c) As String

Dim raiz As Double

Dim X1 As Long, X2 As Long

raiz = (b * b) - 4 * a * c

If raiz > 0 Then

X1 = (-b + Sqr(raiz)) / 2 * a

X2 = (-b - Sqr(raiz)) / 2 * a

ecuacion = "X1 = " & X1 & " ;X2 =" & X2

ElseIf raiz = 0 Then

X1 = -b / 2 * a

X2 = X1

ecuacion = "X1 = " & X1 & " ;X2 =" & X2

ElseIf raiz <>

ecuacion = "Solución Indefinida"

End If

End Function

Explicamos en este sentido el código expuesto:

Function: indica que hemos comenzado un procedimiento que en función de los argumentos que definamos, devuelve un valor.

Ecuacion: nombre que elegimos para denominar a nuestra función. Podemos elegir cualquiera siempre que no sea una palabra reservada de VBA

(ByRef a, ByRef b, ByRef c): es el valor predeterminado de VBA. El argumento se pasa por referencia. Es decir, en vez del valor se pasa la dirección. Por tanto, hay un intercambio entre el procedimiento y la variable real. A, b y c son los argumentos que insertaremos en la función para que nos devuelva el resultado

As: establece que se va a definir el tipo de dato a tratar

String: Tipo de dato. Se establece si es texto, si es número, si es decimal..etc. Hay diferentes tipos. En este caso, el dato será una cadena.

A continuación hemos de definir las variables a utilizar

Dim: Declara la variable y asigna espacio

Raiz: nombre que le damos a la variable. Podemos establecer el que queramos mientras no se trate de una palabra reservada.

As Double: se usa para almacenar números con decimales

As Long: Permite almacenar números enteros

raiz = (b * b) - 4 * a * c: definimos la expresión que ha de cumplir la variable. En este caso aplicamos parte de la fórmula genérica introducida en España por el matemático Abraham bar Hiyya para resolver las ecuaciones de segundo grado. Puesto que en VBA no podemos escribir un superíndice tal y como lo hacemos en texto, o bien multiplicamos el valor por sí mismo, o bien podemos escribir b^2. En este último caso, tendríamos que cambiar el tipo de dato de la variable.

If raiz > 0 Then: comenzamos la ejecución condicional de instrucciones. Esto quiere decir que si el resultado de la variable raiz es mayor que cero, entonces Excel tendrá que hacer lo que establezcamos a continuación.

X1 = (-b + Sqr(raiz)) / 2 * a

X2 = (-b - Sqr(raiz)) / 2 * a

Si se cumple la condición entonces aplicamos la fórmula genérica completa, pero esta vez introduciendo la función Sqr que es la encargada de calcular la raíz cuadrada. Esta función solo permite como tipo de dato Double. Por eso, hemos definido primero la función y establecido posteriormente el cálculo para finalmente incluirla en las siguientes variables. De otra manera, nos daría error porque Excel o no sabría a donde recurrir o el dato que maneja no se corresponde con el cálculo.

ecuacion = "X1 = " & X1 & " ;X2 =" & X2: definimos con este código lo que queremos que haga la macro. En este caso, establecemos que la macro muestre un mensaje en la celda que seleccionamos. Dentro de ese mensaje incluimos los valores X1 y X2.

ElseIf raiz = 0 Then: establecemos otra condición. En este caso, si el resultado de la raíz es = a cero

X1 = -b / 2 * a

X2 = X1

ecuacion = "X1 = " & X1 & " ;X2 =" & X2

Al igual que antes, definimos la fórmula y el mensaje a mostrar.

ElseIf raiz <>

ecuacion = "Solución Indefinida"

Establecemos la última condición a tener en cuenta por parte de la macro. En esta se establece como mensaje Solución indefinida cuando el resultado de la raíz sea un número negativo, ya que la raíz cuadrada de un número negativo es un número imaginario. Los números imaginarios fueron denominados por Descartes para la representación del eje complejo en un plano cartesiano.

End If: finalizamos la condición.

End Function: finalizamos el procedimiento.

En nuestra hoja de Excel, seleccionamos la función ecuación y la probamos escribiendo los argumentos que necesitemos calcular.

Pulsamos Aceptar. El resultado se mostrará en la celda seleccionada.




0 comentarios:

Publicar un comentario

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Top WordPress Themes