大家。我试图制作一个二次方程求解器,但没有任何工作。它给了我错误的答案。当这个等式的答案是-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;
?>
答案 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的值。我刚刚把它作为一个字符串回应。