我正在做一个二分法方法,你输入系数达到5的幂,我找到多项式的每个根。我的代码只打印出多项式的第一个根。我如何让它继续寻找其他根源?这是我的代码
public void bisectionMethod(double a, double b) {
double average;
double yOfC;
double [] roots;
int size = 1;
while (size <= 5) {
average = (a + b) / 2;
yOfC = calculateY(average);
if (Math.abs(yOfC) < 0.001) {
System.out.println(average);
size++;
} else if (yOfC * calculateY(a) > 0) {
a = average;
} else {
b = average;
}
}
}
这是我的输出
-0.9999990463256836
-0.9999990463256836
-0.9999990463256836
-0.9999990463256836
-0.9999990463256836
答案 0 :(得分:1)
这更像是一个数学问题,而不是一个编程问题。
在连续函数 f 中给出两点,如果 f,保证在点 a 和 b 之间找到根点(a)* f(b)&lt; 0 (即一个值为正,另一个为负)。但是,这只能保证一个根。
要查找另一个根,如果存在,则必须选择不同的间隔。但是,在计算根之前,您将无法知道此新间隔是否会产生新根。如果对其他寻根算法感兴趣,我建议你阅读它们here。