非线性方程求根方法——二分法

1.1 非线性方程

  • 非线性方程的一般形式: f(x)=0
    代数方程: f(x) = a0 + a1x + …… +anx^n(an≠0)
    超越方程 :f(x)中含三角函数、指数函数、或其他超越函数
  • 用数值方法求解非线性方程的步骤:
    找出有根区间:只含一个实根的区间称隔根区间
    近似根的精确化:从隔根区间内的一个或多个点出发,逐次逼近,寻求满足精度的根的近似值

1.2 二分法

  • 介值定理:设函数f(x)在区间[a, b]连续,且f(a)f(b)<0,则方程f(x)=0在区间[a, b] 内至少有一个根。
  • 二分法的基本思想
    a. 假定 f(x) = 0 在 [a, b] 内有唯一单实根x* ,考察有根区间[a, b]
    b. 取中点 x0 = (a+b)/2 ,若 f(x0) = 0, 则 x* = x0 ,否则——若 f(x0)f(a)>0,则x在x0右侧,令 a1 = x0, b1 = b ; 若 f(x0)f(a)<0,则x在x0左侧,令 a1 = a, b1 = x0
    c. 以 [a1,b1] 为新的隔根区间,且仅为 [a, b] 的一半, 对 [a1,b1] 重复前过程,得新的隔根区间 [a2,b2], 如此二分下去,得一系列隔根区间:……⊂[ak, bk]⊂……⊂[a2, b2]⊂[a1, b]⊂[a , b],其中每个区间都是前一区间的一半,故 [ak,bk] 的长度:bk - ak = (b - a)/2^k
    d. 当k趋于无穷时长度趋于0,即若二分过程无限继续 下去,这些区间最后必收敛于一点x* ,即方程的根
  • 二分法的收敛定理:设x为方程 f(x) = 0 在 [a, b] 内唯一根,且 f(x) 满足 f(a)f(b)<0,则由 二分法产生的第n个区间 [an,bn] 的中点 xn 满足不等式:|xn - x| ≤ (b - a)/2^(n + 1)。

1.3 二分法的代码实现(matlab)

  • 用二分法求方程exp(-x)-sin(pi*x/2)=0在区间[0,1]内的根,要求误差不超过2^-5
f = inline('exp(-x) - sin(pi*x/2)');
a = 0; b = 1; n = 0; er0 = 2^(-5);
fa = f(a); fb = f(b); er = b-a;
while er>er0
    c = (a+b)/2;
    fc = f(c);
    if fa*fc<0
        b = c;
    else
        a = c;
        fa = fc;
    end
    disp([a,b]);
    er = b - a;
    k = k + 1
end
  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值