Java程序求解二次方程的所有根
要理解这个示例,你应该具备以下 Java 编程主题的知识:
二次方程的标准形式是:
ax2 + bx + c = 0
这里,a
、b
和 c
是实数,且 a
不能等于 0。
我们可以使用下面的公式计算二次方程的根:
x = (-b ± √(b2-4ac)) / (2a)
±
符号表示将有两个根:
root1 = (-b + √(b2-4ac)) / (2a)
root2 = (-b - √(b2-4ac)) / (2a)
项 b2-4ac
被称为二次方程的 判别式。它指定了根的性质。即,
- 如果 判别式 > 0, 根是实数且不相同
- 如果 判别式 == 0,根是实数且相同
- 如果 判别式 < 0,根是复数且不相同
示例:Java 程序寻找二次方程的根
public class Main {
public static void main(String[] args) {
// a, b, c 的值
double a = 2.3, b = 4, c = 5.6;
double root1, root2;
// 计算判别式 (b2 - 4ac)
double determinant = b * b - 4 * a * c;
// 检查判别式是否大于 0
if (determinant > 0) {
// 两个实数且不相同的根
root1 = (-b + Math.sqrt(determinant)) / (2 * a);
root2 = (-b - Math.sqrt(determinant)) / (2 * a);
System.out.format("root1 = %.2f 和 root2 = %.2f", root1, root2);
}
// 检查判别式是否等于 0
else if (determinant == 0) {
// 两个实数且相同的根
// 判别 式等于 0
// 因此 -b + 0 == -b
root1 = root2 = -b / (2 * a);
System.out.format("root1 = root2 = %.2f;", root1);
}
// 如果判别式小于零
else {
// 根是复数且不相同
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 和 root2 = -0.87-1.30i
在上述程序中,系数 a
、b
和 c
分别设定为 2.3、4 和 5.6。然后,计算 判别式
为 b2
- 4ac
。
根据判别式的值,根据上述公式计算根。注意我们使用了库函数 Math.sqrt()
来计算数字的平方根。
我们使用了 format()
方法来打印计算出的根。
format()
函数也可以被 printf()
替换,如:
System.out.printf("root1 = root2 = %.2f;", root1);