找到窦function的零点

我想在java中实现一个函数,找到正弦函数的零点。 我知道怎么做但我真的不明白该问题的以下定义:

实现一个函数,在a和b之间的间隔中搜索正弦函数中的空点。 搜索间隔[下限,上限]应减半,直到下限和上限彼此小于0.0001。

替代文字

为什么间隔减半? 有任何想法吗?

听起来你被要求实施二进制搜索 ,你可能需要|ba| < pi |ba| < pi所以间隔中有一个唯一的根。 顺便说一句,这些在英语中被称为“正弦”和“根”(或“零”)。

这个想法是在你的间隔的终点评估的函数(正弦)将给出一个肯定答案和一个否定答案(如果两者都是正数或两者都是负数,那么它就会失败)。 因为正弦是连续的,所以必须有一个值为零的点(中间值定理)。 检查间隔的中点。 如果是正数,则从您的区间折叠到负值终点和中点之间的区间。 否则,崩溃到另一半。 重复此操作,直到您处于所需的零接近范围内。

提示:您可以预期区间中至少有一个根

 (A) sgn(f(lower_limit) != sgn(f(upper_limit)) 

如果条件A为真:将间隔减半,则:

 {[min,max]} -> {[min, (max-min)/2] , ](max-min)/2,max]} 

并检查两个子间隔。

只需在纸上试一试(使用图表,将interfals减半并尝试弄清楚,哪个区间是“根容器”的候选者)

Sinus由它的频率定义。 在窦的0.5和1期发现零交叉。 即sin * pi和* 2pi用于普通的sin代码函数。 因此,在A和B之间,零交叉都是小于B的小于A的点,等于周期== 1和0.1,使用模数来忽略诸如2,2.5等的值。