Upv*_*ote 0 java math recursion binary-search
我想找到正弦函数的零点.参数是区间[a,b].我必须与二进制搜索类似.
实现一个在a和b之间的间隔中搜索窦函数中的空点的函数.搜索间隔[下限,上限]应减半,直到下限和上限彼此小于0.0001.
这是我的代码:
public class Aufg3 {
public static void main(String[] args) {
System.out.println(zeropoint(5,8));
}
private static double zeropoint(double a, double b){
double middle = (a + b)/2;
if(Math.sin(middle) < 0){
return zeropoint(a,middle);
}else if(Math.sin(middle) > 0){
return zeropoint(middle,b);
}else{
return middle;
}
}
}
Run Code Online (Sandbox Code Playgroud)
它在返回零点(中间,b)的行上给了我很多错误;
在第一步中,我想找到间隔中的第一个零点.
有任何想法吗?
每个人都忽视的基本问题:
显然,需要的是一组(可能是空的)值.
所以函数的伪代码真的要求(不使用Java,因为这是作业):
Set zeropoint(double a, double b)
{
double middle = mid point of a and b;
if a and be less than 0.0001 apart
{
if (sin(a) and sin(b) are on opposite sides of 0)
{
return set containing middle
}
else
{
return empty set
}
}
else
{
return union of zeropoint(a, middle) and zeropoint(middle, b)
}
}
Run Code Online (Sandbox Code Playgroud)