C ++这个版本的二次公式有什么问题?

时间:2017-09-21 03:17:23

标签: c++

在我的书中,它问我以下问题这是针对compsci-1

此版本的二次公式有什么问题?

x1 = (-b - sqrt(b * b - 4 * a * c)) / 2 * a; 
x2 = (-b + sqrt(b * b - 4 * a * c)) / 2 * a;

1 个答案:

答案 0 :(得分:2)

您的代码正在翻译的等式是:

wrong quadratic formula

当然不是二次方程的解。您需要这个等式的解决方案:

correct quadratic formula

区别是什么?在第一个计算分子,然后除以2,然后乘以a。这就是你的代码正在做的事情。在第二个你计算分子,然后你计算分母,最后你划分它们。

所以使用其他变量:

num1 = -b - sqrt(b * b - 4 * a * c);
num2 = -b + sqrt(b * b - 4 * a * c);
den = 2 * a;

x1 = num1 / den;
x2 = num2 / den;

当然可以写成:

x1 = (-b - sqrt(b * b - 4 * a * c)) / (2 * a);
x2 = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);

您必须插入这些括号以强制在分割之前计算分母。正如@atru评论中所建议的那样。