查找二次方程所有根的 Java 程序
要理解此示例,您应具备以下 Java 编程的知识:
- Java if…else 语句
- Java Math sqrt()
二次方程的标准形式是:
ax² + bx + c = 0
这里, a
, b
, 和 c
是实数并且 a
不能等于 0。
我们可以使用以下公式计算二次方的根:
x = (-b ± √(b²-4ac)) / (2a)
±
符号表示将有两个根:
root1 = (-b + √(b²-4ac)) / (2a)
root2 = (-b - √(b²-4ac)) / (2a)
术语称为二次方程的行列式。它指定了根的性质。那是, b2-4ac
- 如果行列式 > 0,则根为实数且不同
- 如果行列式 == 0,则根为实数且相等
- 如果行列式 < 0,则根是复数且不同
示例:查找二次方程根的 Java 程序
public class Main {
public static void main(String[] args) {
// value a, b, and c
double a = 2.3, b = 4, c = 5.6;
double root1, root2;
// calculate the determinant (b2 - 4ac)
double determinant = b * b - 4 * a * c;
// check if determinant is greater than 0
if (determinant > 0) {
// two real and distinct roots
root1 = (-b + Math.sqrt(determinant)) / (2 * a);
root2 = (-b - Math.sqrt(determinant)) / (2 * a);
System.out.format("root1 = %.2f and root2 = %.2f", root1, root2);
}
// check if determinant is equal to 0
else if (determinant == 0) {
// two real and equal roots
// determinant is equal to 0
// so -b + 0 == -b
root1 = root2 = -b / (2 * a);
System.out.format("root1 = root2 = %.2f;", root1);
}
// if determinant is less than zero
else {
// roots are complex number and distinct
double real = -b / (2 * a);
double imaginary = Math.sqrt(-determinant) / (2 * a);
System.out.format("root1 = %.2f+%.2fi", real, imaginary);
System.out.format("\nroot2 = %.2f-%.2fi", real, imaginary);
}
}
}
输出
root1 = -0.87+1.30i and root2 = -0.87-1.30i
在上面的程序中,系数 a
, b
, 和 c
分别设置为 2.3
、4
和 5.6
。然后,根据 b2
- 4ac
计算 determinant
。
根据行列式的值,根的计算如上式所示。注意我们使用了库函数 Math.sqrt()
来计算一个数的平方根。
我们使用 format()
方法打印计算出的根。
format()
函数也可以替换 printf()
为:
System.out.printf("root1 = root2 = %.2f;", root1);