Buenas,
Sabiendo que la fórmula para resoluciones de ecuaciones de segundo grado es:
__________
-b ± √ b² - 4 · a ·c
x = ---------------------------
2 · a
Siendo el discriminante el radicando de la raíz.
¿Por qué separamos el radicando como operación aparte?
Debido a que la raíz cuadrada de un número negativo da ∃/ (No existe, al menos no realmente) ; entonces no podríamos resolver la ecuación, por lo cuál no existe la resolución correcta.
Si el valor fuese '0', la raiz de 0, es 0 por lo cual se sumaría y se restaría 0, por lo tanto es una única solución.
Por lo demás, si es mayor que 1, tiene dos soluciones diferentes (generalmente, con unos números determinados se ven que tienen el mismo resultado).
Sabiendo esto, entonces programemos un poco
Haré una simple función en PHP:
==========================
Código: php
Es fácil de entender, pero si tenéis alguna duda preguntar nada más!
Un abrazo.
Sabiendo que la fórmula para resoluciones de ecuaciones de segundo grado es:
__________
-b ± √ b² - 4 · a ·c
x = ---------------------------
2 · a
Siendo el discriminante el radicando de la raíz.
¿Por qué separamos el radicando como operación aparte?
Debido a que la raíz cuadrada de un número negativo da ∃/ (No existe, al menos no realmente) ; entonces no podríamos resolver la ecuación, por lo cuál no existe la resolución correcta.
Si el valor fuese '0', la raiz de 0, es 0 por lo cual se sumaría y se restaría 0, por lo tanto es una única solución.
Por lo demás, si es mayor que 1, tiene dos soluciones diferentes (generalmente, con unos números determinados se ven que tienen el mismo resultado).
Sabiendo esto, entonces programemos un poco

Haré una simple función en PHP:
==========================
<?php
function resolveEc($terms=array()) {
# Comprobamos que los valores esten en un array bien introducido
if(!is_array($terms)) die("Los valores introducidos deben estar en un array formando un array del tipo array(\"Termino a\",\"Termino b\",\"Termino C\").");
# Rellenamos con 0 los valores siguientes hasta el termino c (valor 2 en el array). Por si hay menos de 3 valores (a, b y c).
while(count($terms)<3) $terms[] = 0;
# Calculamos el discriminante
$disc = pow($b,2) - 4 * $terms[0] * $terms[1]; // Operacion: b al cuadrado menos 4 por a por c.
# Comprobamos resultado
if($disc < 0) return "No se encontro resultado alguno"; // Devolvemos un mensaje de retorno unicamente si el discriminante es menor que 0
# Calculamos termino $x[0] (Sera x sub 1) y $x[1] (Sera x sub 2)
$x[] = ($terms[1] + sqrt($disc))/(2*$terms[0]); // (b + raiz de $disc) entre 2 * termino a
$x[] = ($terms[1] - sqrt($disc))/(2*$terms[0]); // (b - raiz de $disc) etnre 2 * termino a
#Devolvemos el resultado
return $x;
}
$resultados = resolveEc(array(1,2,3));
if(is_array($resultados)) echo "Resultado para x<sub>1</sub>:".$resultados[0]."<br>Resultado para x<sub>2</sub>:".$resultados[1]."<br>";
else echo $resultados;
?>
Es fácil de entender, pero si tenéis alguna duda preguntar nada más!

Un abrazo.