二次方程求解器PHP

时间:2016-04-07 19:47:26

标签: php math quadratic sqrt

大家。我试图制作一个二次方程求解器,但没有任何工作。它给了我错误的答案。当这个等式的答案是-2和-1时,我得到x = - 2.5和x = - 3.5:

x ^ 2 + 3x + 2

这是我的代码:

<?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;

?>

3 个答案:

答案 0 :(得分:3)

你还需要一套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));

二次方程公式中的-b也除以2a

答案 1 :(得分:2)

那是因为您实施了C Standard错误。

这是正确的(更易读)公式:

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

答案 2 :(得分:0)

只有公式不是解决方案,因为sqrt($ bx * $ bx - 4 * $ ax * $ c)可能很复杂,结果将无法解决问题。 要了解复数 - complex numbers

简短的复数,&#34; i&#34;这是sqrt(-1)

要解决此问题,您需要添加条件: 例如: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.
}

比您需要决定如何显示ax和bx的值。我刚刚把它作为一个字符串回应。