实现二次算法
Implementing a Quadratic Algorithm
我正在阅读 Robert Sedgewick 和 Kevin Wayne 合着的入门编程书籍。
在其中一个示例中,他们实现了二次 class,如下所示:
public class Quadratic
{
public static void main(String[] args)
{
double b = Double.parseDouble(args[0]);
double c = Double.parseDouble(args[1]);
double discriminant = b * b - 4.0 * c;
double d = Math.sqrt(discriminant);
System.out.println((-b + d) / 2.0);
System.out.println((-b - d) / 2.0);
}
}
作者省略了二次公式的'a'系数。这是因为 'a' 系数可以抵消(分子/分母)吗?
根据反馈...以下是否是正确的解决方案:
public static void main(String[] args)
{
double b = Double.parseDouble(args[0]);
double c = Double.parseDouble(args[1]);
double a = Double.parseDouble(args[2]);
double discriminant = b * b - 4.0 * a * c;
double d = Math.sqrt(discriminant);
System.out.println((-b + d) / (2.0 * a));
System.out.println((-b - d) / (2.0 * a));
}
不,作者可能以不同方式实现了该算法。假设一般情况下,a
无法取消,因为 -b
因素不包含 a.
求二次方程根的公式是:-
roots = (-b +(-) sqrt((b^2) - (4*a*c))) / (2*a).
// here - alongwith + represents how to find second root.
我建议你通过常用的方式。如果作者使用了不同的约定,那么请不要遵循。
请按照standard/common方式进行。很容易理解。
Based on the feedback… Would the following be the correct solution:..
您作为编辑添加到问题中的解决方案看起来是正确的。所以,我建议你走那条路。
我认为作者假设了某种归一化,其中二次方程的主系数为 1。
因此,例如:
2x2 + 4x + 8 = 0
将表示为
x2 + 2x + 4 = 0
这两个是同一个方程式,只是一个被归一化了,可以这么说。
我正在阅读 Robert Sedgewick 和 Kevin Wayne 合着的入门编程书籍。
在其中一个示例中,他们实现了二次 class,如下所示:
public class Quadratic
{
public static void main(String[] args)
{
double b = Double.parseDouble(args[0]);
double c = Double.parseDouble(args[1]);
double discriminant = b * b - 4.0 * c;
double d = Math.sqrt(discriminant);
System.out.println((-b + d) / 2.0);
System.out.println((-b - d) / 2.0);
}
}
作者省略了二次公式的'a'系数。这是因为 'a' 系数可以抵消(分子/分母)吗?
根据反馈...以下是否是正确的解决方案:
public static void main(String[] args)
{
double b = Double.parseDouble(args[0]);
double c = Double.parseDouble(args[1]);
double a = Double.parseDouble(args[2]);
double discriminant = b * b - 4.0 * a * c;
double d = Math.sqrt(discriminant);
System.out.println((-b + d) / (2.0 * a));
System.out.println((-b - d) / (2.0 * a));
}
不,作者可能以不同方式实现了该算法。假设一般情况下,a
无法取消,因为 -b
因素不包含 a.
求二次方程根的公式是:-
roots = (-b +(-) sqrt((b^2) - (4*a*c))) / (2*a).
// here - alongwith + represents how to find second root.
我建议你通过常用的方式。如果作者使用了不同的约定,那么请不要遵循。
请按照standard/common方式进行。很容易理解。
Based on the feedback… Would the following be the correct solution:..
您作为编辑添加到问题中的解决方案看起来是正确的。所以,我建议你走那条路。
我认为作者假设了某种归一化,其中二次方程的主系数为 1。
因此,例如:
2x2 + 4x + 8 = 0
将表示为
x2 + 2x + 4 = 0
这两个是同一个方程式,只是一个被归一化了,可以这么说。