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
09/11/2012 a las 5:50 pm
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.
03/02/2013 a las 10:53 pm
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.