2016-04-07 5 views
0

tout le monde. J'essaye de faire un solveur d'équation quadratique mais rien ne fonctionne. Cela me donne une mauvaise réponse. Je reçois x = - 2,5 et x = - 3,5 quand la réponse est -2 et -1 pour cette équation:Solveur équation quadratique PHP

x^2 + 3x + 2

Voici mon code:

<?php 

$ax = $_REQUEST['num9']; 

$bx = $_REQUEST['num10']; 

$c = $_REQUEST['num11']; 

$answerx1 = ($bx * -1) + (sqrt(($bx * $bx) + (-1 * 4 * $ax * $c))/(2 * $ax)); 

$answerx2 = ($bx * -1) - (sqrt(($bx * $bx) + (-1 * 4 * $ax * $c))/(2 * $ax)); 

echo "The answers are: x = " . $answerx1 . " or x = " . $answerx2; 

?> 

Répondre

3

Vous avez besoin d'un autre ensemble de parens:

$answerx1 = (($bx * -1) + (sqrt(($bx * $bx) + (-1 * 4 * $ax * $c)))/(2 * $ax)); 

$answerx2 = (($bx * -1) - (sqrt(($bx * $bx) + (-1 * 4 * $ax * $c)))/(2 * $ax)); 

le -b dans la formule d'équation quadratique est également divisée par 2a

2

En effet, vous avez implémenté le formula avec des erreurs.

Ceci est correct (et plus lisible) formule:

$answerx1 = (- $bx + sqrt($bx * $bx - 4 * $ax * $c))/(2 * $ax); 
$answerx2 = (- $bx - sqrt($bx * $bx - 4 * $ax * $c))/(2 * $ax); 
+0

Merci beaucoup! Cela a fonctionné pour moi :) –

0

seule formule n'est pas la solution parce que sqrt (bx $ * bx $ - 4 * ax $ * $ c) peut être complexe et résultat ne vous donnera aucune solution. Pour en savoir plus sur les nombres complexes - complex numbers

en nombre peu complexe, "i" est ici sqrt (-1)

Pour résoudre cela, vous devez ajouter la condition: par exemple: 3x2 + 4x + 2 = 0

$num = ($bx * $bx - 4 * $ax * $c) 
if($num<0) { 
echo "(- $bx + ".sqrt(abs($bx * $bx - 4 * $ax * $c)."i))/".(2 * $ax); 
echo "\n"; 
echo "(- $bx + ".sqrt(abs($bx * $bx - 4 * $ax * $c)."i))/".(2 * $ax); 
} else { 
    //(-b(+/-)sqrt(b*b-(4*a*c)))/2a formula method. 
} 

que vous avez besoin de décider comment vous voulez afficher vos valeurs ax et bx. Je viens de faire écho comme une chaîne.