二分法求方程f(x)= x^3-x-1=0在区间[1,2]的一个实根,误差不超过0.0001

要使用二分法求解方程f(x)=x^3−x−1=0在区间[1, 2]内的一个实根,并且使得误差不超过0.0001,可以按照以下步骤进行计算:

  1. 确定初始区间[a, b],在本例中即为[1, 2]。
  2. 计算初始区间的中间点x,即x=(a+b)/2​。
  3. 计算f(x)的值。
  4. 如果f(c)的绝对值小于指定的误差(即∣f(x)∣<0.0001),则停止计算,x即为所求的实根。
  5. 否则,根据f(x)的符号确定新的区间:
    • 如果f(x)与f(a)的符号相同,说明实根位于区间[x, b]内,因此更新a=x;
    • 否则,实根位于区间[a, c]内,因此更新b=x。
  6. 重复步骤2至步骤5,直到满足指定的误差要求。

 下面是Java代码实现:

 

public class BinarySearch {
    public static void main(String[] args) {
        double a = 1.0;
        double b = 2.0;
        double x = (a + b) / 2;
        int n = 1;
        System.out.println("n        a          b          x        f(x)");
        while(Math.abs(f(x)) >= 0.001) {
            System.out.printf("%2d%11f%11f%11f%11f\n",n++,  a, b, x, f(x));
            x = (a + b) / 2;
            if((f(x) >= 0 && f(a) >= 0) || (f(x) <= 0 && f(a) <= 0)) {
                a = x;
            } else {
                b = x;
            }
        }
    }

    public static double f(double x) {
        return Math.pow(x, 3) - x - 1;
    }
}

 

运行结果: 

n        a          b          x        f(x)
 1   1.000000   2.000000   1.500000   0.875000
 2   1.000000   1.500000   1.500000   0.875000
 3   1.250000   1.500000   1.250000  -0.296875
 4   1.250000   1.375000   1.375000   0.224609
 5   1.312500   1.375000   1.312500  -0.051514
 6   1.312500   1.343750   1.343750   0.082611
 7   1.312500   1.328125   1.328125   0.014576
 8   1.320313   1.328125   1.320313  -0.018711
 9   1.324219   1.328125   1.324219  -0.002128
10   1.324219   1.326172   1.326172   0.006209
11   1.324219   1.325195   1.325195   0.002037

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值