Algorithm 二进制搜索与一次固定一个数字
问题:我想搜索一个实数Algorithm 二进制搜索与一次固定一个数字,algorithm,matlab,scientific-computing,Algorithm,Matlab,Scientific Computing,问题:我想搜索一个实数x0,这样f(x0)=0。我们只知道,f是单调递增的,没有导数,x_0是实正数,但不是非常大,因此程序不会终止 当我没有参加算法课程时,我为此编写了一个程序,让我们将此方法称为替代搜索 方法是初始化步长h并从左侧递增。如果f(x_0)>0,则从现在开始后退,并按h/10递增。换句话说,一次固定一个数字,当步长非常小时终止 这种方法与二进制搜索(或有人称之为二分法)相比如何 我的直觉告诉我,每次另类搜索解决问题的十分之一比一半要慢。应该是对的,是吗?如果您只对眼前问题的答案感
x0
,这样f(x0)=0
。我们只知道,f
是单调递增的,没有导数,x_0
是实正数,但不是非常大,因此程序不会终止
当我没有参加算法课程时,我为此编写了一个程序,让我们将此方法称为替代搜索
方法是初始化步长h
并从左侧递增。如果f(x_0)>0
,则从现在开始后退,并按h/10
递增。换句话说,一次固定一个数字,当步长非常小时终止
这种方法与二进制搜索(或有人称之为二分法)相比如何
我的直觉告诉我,每次
另类搜索
解决问题的十分之一比一半要慢。应该是对的,是吗?如果您只对眼前问题的答案感兴趣,请跳到第二部分。在第一节中,我将解释如何在您的案例中实际使用二进制搜索 二进制搜索 首先,这个问题不能仅仅通过二进制搜索来解决,因为你需要一个区间[a,b],在这个区间内你的解x*和f(x*)=0。 例如,可以使用指数搜索算法找到这样的间隔:
- 从值x0开始,使f(x)<0
- 只要f(x)<0,将x乘以2(或另一个固定因子>1)
因为X只是考虑在两种情况下,你经常评估<代码> f>代码>以使间隔缩小到大致相同的大小。