matlab实现二分法、牛顿法与割线法

准备工作

因为后面会有比较,所以就选了同一个方程:2*exp(-x)-sin(x)=0,有根区间为[0,1],精度设置为1e-10,再给牛顿法和割线法一个迭代次数上限:100(虽然肯定不会运行这么多)。再来个计时小工具:tic和toc,程序运行到tic时,会开始计时,运行到toc时,会主动匹配上一个tic,并打印时间差,我们在tic和toc之间放上循环体代码即可。

二分法

二分法的要求:f(x)在单调区间[a,b]上连续,且f(a)*f(b)<0
二分法的求根思想:将区间[a,b]不断对半分,依据分点处的函数来逐步缩小有根区间,当区间足够小(小于所设定的精度时),方程有且仅有一根。

二分法的matlab代码

二分法的优点:直观、简单,方法可靠,对f(x)的要求不高,且一定收敛
缺点:不能求复根和偶重根收敛速度慢,迭代次数多。

eps=5e-8;%二分法
delta=1e-10;
a=0;b=1;fa=f1_1(a);fb=f1_1(b);
n=0;tic%计时开始
while(1)
    if(fa*fb>0)
        break
    end
    c=(a+b)/2;
    fc=f1_1(c);
    if(abs(fc)<delta)
        break
    elseif(fa*fc<0)
        b=c;fb=fc;
    else
        a=c;fa=fc;
    end
    if((b-a)<eps)
        break
    end
    n=n+1;%n是迭代次数
    n,c,fc%将每次二分的结果都打印出来
end
toc%自动匹配上一个tic,并打印出时间差
function output=f
  • 23
    点赞
  • 264
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值