bisect

function [x,xN] = bisect(f,x0,N,tol)  
% x0有解区间
% 精度,浮点数最小值
if nargin<4
    tol=eps;    
end
% N 迭代次数
if nargin<3
    N=17;      
end
% 有解必要条件 x0(1)*x0(2)>0 , 否则 无解,报错,退出程序
if sign(f(x0(1)))*sign(f(x0(2)))>0     
    error('The condition f(a)f(b)<=0 is not satisfied!')  
end
% x 中点值
x=sum(x0)/2;    
% xN 记录每次迭代区间的中点值
xN=zeros(1,N);  
xN(1)=x;
% 迭代次数从2开始
for k=2:N
% 中点取值为 0 ,找到零点,传给函数输出x
    if f(x)==0    
        break       
    end
 %判断区间除2是否满足容差条件
    if (x0(2)-x0(1))/2>tol   
% 大于容差 更新左右端点
        if sign(f(x0(1)))*sign(f(x))>0    
        x0(1)=x;                          
        else                              
        x0(2)=x;                          
        end
        x=sum(x0)/2;        
% 记录迭代值              
        xN(k)=x;  
% 小于容差 退出                        
    else
        break
    end
end
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值