MATLAB利用逐步搜索法求隔根区间

逐步搜索法的原理:

从区间[a,b]的左端点a出发,按选定的步长h一步步向右搜索,若:

f(a+jh)f(a+(j+1)h)<0j=0,1,2,\cdots ​​​​​​​

则区间[a+jh,a+(j+1)h]内必有根。搜索过程也可以从b开始,这时应取步长h<0。

本文编程思路是构建一个searchInterval函数,输入左端点a,右端点b,步长h。输出隔根区间。

文件searchInterval.m:

function [interval] = searchInterval(a,b,h)
interval = [];
for j = 0:floor((b-a)/h)
    x = a+j*h;
    if f(x)*f(x+h) < 0
        a0 = x;
        b0 = x+h;
        interval(end+1) = [a0];
        interval(end+1) = [b0];
    end
end

文件f.m:

function y = f(x)
y = x^2-5*x+1;
% 函数仅为算例

比如输入命令searchInterval(-100,100,0.0001),可得到输出结果为:

  0.2087    0.2088    4.7912    4.7913

意即在[-100,100]之间,在步长0.0001下有两个隔根区间,一个是[0.2087,0.2088],一个是[4.7912,4.7913]。

显然,可以在先大范围、低精度(a,b之间距离大,步长h小)缩小隔根区间范围,再在缩小后的范围内利用更小的步长h得到高精度隔根区间。实际上,此法也可以求函数的近似零点。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值