2.从键盘输入一元二次方程的三个系数,求解该一元二次方程并输出结果。
时间: 2024-09-10 08:30:34 浏览: 89
一元二次方程通常具有形式 ax^2 + bx + c = 0,其中a、b和c是方程的系数,且a不为0。为了求解这个方程,我们需要计算判别式Δ = b^2 - 4ac。根据判别式的值,我们可以确定方程的根的情况:
1. 如果 Δ > 0,方程有两个不相等的实根。
2. 如果 Δ = 0,方程有两个相等的实根(一个实根)。
3. 如果 Δ < 0,方程没有实根,但有两个复数根。
实根可以通过以下公式计算:
x1 = (-b + √Δ) / (2a)
x2 = (-b - √Δ) / (2a)
复数根可以通过以下公式计算(当Δ < 0时):
r = -b / (2a)
θ = arccos(c / (ar^2))
x1 = r * (cos(θ) + i*sin(θ))
x2 = r * (cos(θ) - i*sin(θ))
其中,i是虚数单位。
现在我们来编写一个简单的程序,从键盘输入系数a、b和c,然后计算并输出一元二次方程的根:
```java
import java.util.Scanner;
import java.lang.Math;
public class QuadraticEquationSolver {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一元二次方程的系数 a, b 和 c:");
double a = scanner.nextDouble();
double b = scanner.nextDouble();
double c = scanner.nextDouble();
double delta = b * b - 4 * a * c;
if (a == 0) {
System.out.println("系数a不能为0,因为它不是一元二次方程。");
} else if (delta > 0) {
double x1 = (-b + Math.sqrt(delta)) / (2 * a);
double x2 = (-b - Math.sqrt(delta)) / (2 * a);
System.out.println("方程有两个不同的实根: x1 = " + x1 + ", x2 = " + x2);
} else if (delta == 0) {
double x = -b / (2 * a);
System.out.println("方程有两个相同的实根: x = " + x);
} else {
double r = -b / (2 * a);
double theta = Math.acos(c / (r * r));
double x1 = r * (Math.cos(theta) + Math.sin(theta));
double x2 = r * (Math.cos(theta) - Math.sin(theta));
System.out.println("方程有两个复数根: x1 = " + x1 + "+i*" + x2 + " 和 x2 = " + x1 + "-i*" + x2);
}
scanner.close();
}
}
```
这段代码首先提示用户输入系数a、b和c,然后计算判别式Δ,并根据Δ的值来确定方程的根,并将结果输出到控制台。在实际使用中,需要处理输入错误和异常情况,例如输入非数字字符。
阅读全文