You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求Secant Method失效但Bisection Method收敛的函数示例(区间[a,b],初始点a、b)

满足条件的函数示例:割线法失效但二分法收敛

我来给你举一个完美符合要求的例子,咱们一步步拆解清楚它为什么满足条件。

函数与区间定义

  • 目标函数:f(x) = 1/x - 1
  • 测试区间:[0.5, 2]
  • 区间内的根:x=1(代入函数可得f(1)=1/1 -1=0)

二分法的收敛性分析

二分法的核心要求很简单:区间两端点的函数值必须异号(也就是f(a)*f(b) < 0),这样根据中间值定理,区间内必然存在至少一个根,迭代过程会不断缩小区间范围,最终收敛到根。

咱们验证一下:

  • f(0.5) = 1/0.5 -1 = 1(正数)
  • f(2) = 1/2 -1 = -0.5(负数)
  • 两者乘积为-0.5 < 0,完全满足二分法的启动条件。

迭代过程大概是这样的:

  1. 第一次取中点1.25,f(1.25)=-0.2(负数),新区间变为[0.5, 1.25]
  2. 第二次取中点0.875,f(0.875)≈0.1429(正数),新区间变为[0.875, 1.25]
  3. 后续每次迭代都会把区间缩小一半,最终必然收敛到根x=1。

割线法的失效分析

割线法依赖两点的函数值来构造割线,迭代公式是:
x_{n+1} = x_n - f(x_n) * (x_n - x_{n-1}) / (f(x_n) - f(x_{n-1}))

咱们从初始点x0=0.5和x1=2开始计算:

  1. 第一步计算x2:
    x2 = 2 - (-0.5) * (2-0.5) / (-0.5 -1)
    = 2 - (-0.75) / (-1.5)
    = 2 - 0.5 = 1.5
    
    此时f(1.5)≈-0.3333
  2. 第二步计算x3:
    x3 = 1.5 - (-0.3333) * (1.5-2) / (-0.3333 - (-0.5))
    = 1.5 - (0.16665) / 0.1667
    ≈1.5 -1 = 0.5
    
    你看,x3直接回到了初始点x0=0.5!接下来的迭代会进入0.5 → 2 →1.5 →0.5 →2...的死循环,永远碰不到根x=1,完全失效。

代码示例(Python)

用代码直观展示两种方法的表现:

def f(x):
    return 1/x - 1

# 二分法实现
def bisection(a, b, tol=1e-6):
    if f(a)*f(b) >= 0:
        raise ValueError("二分法要求区间端点函数值异号")
    while (b - a)/2 > tol:
        mid = (a + b)/2
        if f(mid) == 0:
            return mid
        elif f(a)*f(mid) < 0:
            b = mid
        else:
            a = mid
    return (a + b)/2

# 割线法实现(展示循环失效)
def secant(x0, x1, max_iter=10):
    print("=== 割线法迭代过程 ===")
    for i in range(max_iter):
        fx0 = f(x0)
        fx1 = f(x1)
        if abs(fx1 - fx0) < 1e-10:
            print("分母接近0,无法继续迭代")
            break
        x2 = x1 - fx1 * (x1 - x0)/(fx1 - fx0)
        print(f"迭代{i+1}: x={x2:.4f}, f(x)={f(x2):.4f}")
        # 检查是否回到初始点,判断循环
        if abs(x2 - x0) < 1e-8:
            print("割线法陷入循环,失效!")
            break
        x0, x1 = x1, x2

# 测试二分法
print("=== 二分法结果 ===")
print(f"收敛到根:{bisection(0.5, 2):.6f}")

# 测试割线法
secant(0.5, 2)

运行这段代码后,二分法会输出1.000000左右的结果,而割线法会在第3次迭代后回到初始点,提示陷入循环失效。

内容的提问来源于stack exchange,提问作者Ekber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:39:38