Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Función Discriminante de un Polinomio Cuadrático

| 2 comentarios

Esta función se emplea para determinar (calcular) la discriminante de un polinomio cuadrático dado los tres coeficientes del polinomio.

Si asumimos que el polinomio cuadrático sigue la fórmula ax^2   + bx +  c

La discriminante es un valor numerico que determina el numero y tipo de las raices del polinomio.

D = b² - 4ac (discriminate)

D > 0 hay 2 diferentes soluciones reales.
D = 0 la soluciones son repetidas, osea las mismas.
D < 0 hay 2 diferentes soluciones y son complejas o imaginarias.

El código correspondiente a esta función sería:

/*Function discriminante(a, b, c)

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

End Function

*/

El valor retornado por la función "discrimimante" es empleado para determinar si existen o no soluciones posible para la ecuación cuadrática que se pretende resolver. Una alternativa de mejora a esta solución podría ser emplear alguna otra de las estructuras de control y en función de los tres resultados posibles emitir una respuesta.

Elaborado por: Susana Malca

2 comentarios

  1. A esta función discriminante, se le podría agregar la fórmula general de la Ecuación cuadrática, para encontrar las soluciones X1 y X2.
    X=(-b±√(b^2-4ac))/2a.

  2. Esta funcion es excelente para obtener el resultado de un polimonio de dos raices, se podria aportar una funcion para cuatro raices utilizando el algoritmo del metodo de biseccion, para lo cual podriamos utilizar el siguiente codigo en visual basic para excel:

    Function fnf(x As Double) As Double
    fnf = x ^ 4 - 2 * x ^ 3 - 12 * x ^ 2 + 16 * x - 40
    End Function

    Private Sub CommandButton1_Click()
    If (Range("b6").Value = "" Or Range("b8").Value = "" Or Range("b4").Value = "") Then
    MsgBox ("Favor de llenar las casillas")
    Else
    Dim n As Integer
    Dim ren As Integer
    Dim a As Double
    Dim b As Double
    Dim fa As Double
    Dim fb As Double
    Dim fab As Double
    Dim xr As Double
    Dim fxr As Double
    Dim ep As Double
    Dim ant As Double
    n = 1
    ren = 14
    a = Range("b6").Value
    b = Range("b8").Value
    If (fnf(a) * fnf(b)) Range("b4").Value
    '********************* se calculan los nuevos valores *********************
    fa = fnf(a)
    fb = fnf(b)
    fab = fnf(a) * fnf(xr)
    xr = (a + b) / 2
    fxr = fnf(xr)
    ep = Abs(((xr - ant) / xr) * 100)
    '*********** se imprime la tabla **********************
    Range("a" + Trim(Str(ren))).Value = n
    Range("b" + Trim(Str(ren))).Value = a
    Range("c" + Trim(Str(ren))).Value = b
    Range("d" + Trim(Str(ren))).Value = fa
    Range("e" + Trim(Str(ren))).Value = fb
    Range("f" + Trim(Str(ren))).Value = fab
    Range("g" + Trim(Str(ren))).Value = xr
    Range("h" + Trim(Str(ren))).Value = fxr
    If ren 14 Then
    Range("i" + Trim(Str(ren))).Value = ep
    End If
    If ((fnf(a) * fnf(xr)) < 0) Then
    b = xr
    Else
    a = xr
    End If
    ant = xr
    ren = ren + 1
    n = n + 1
    Wend
    Range("b10").Value = xr
    Range("a" + Trim(Str(ren))).Value = "FIN"
    Else
    MsgBox ("No existen raices en el intervalo")
    End If
    End If
    End Sub
    Private Sub CommandButton2_Click()
    Dim cel0 As String
    Dim ren As Integer
    ren = 14
    cel0 = "a" + Trim(Str(ren))
    While Range(cel0).Value "FIN"
    Range("a" + Trim(Str(ren))).Value = ""
    Range("b" + Trim(Str(ren))).Value = ""
    Range("c" + Trim(Str(ren))).Value = ""
    Range("d" + Trim(Str(ren))).Value = ""
    Range("e" + Trim(Str(ren))).Value = ""
    Range("f" + Trim(Str(ren))).Value = ""
    Range("g" + Trim(Str(ren))).Value = ""
    Range("h" + Trim(Str(ren))).Value = ""
    Range("i" + Trim(Str(ren))).Value = ""
    ren = ren + 1
    cel0 = "a" + Trim(Str(ren))
    Wend
    Range("a" + Trim(Str(ren))).Value = ""
    Range("b4").Value = ""
    Range("b6").Value = ""
    Range("b8").Value = ""
    Range("b10").Value = ""
    End Sub

    Este codigo tiene tres partes:
    1) La primera parte es la funcion.
    2) la segunda esta en funcion se se llenan los valores en las celdas, si son valores y no estas vacias.
    3) la tercer es limpiar los datos para dejarlos listos para una proximo ingreso de datos.

    Aqui podemos ver con mayor precision el uso de una funcion con aplicado a la obtencion de raices para un polimonio grado cuatro.

Deja una respuesta

Los campos requeridos estan marcados con *.