声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2017|回复: 0

[优化设计] 二分法求方程的零解

[复制链接]
发表于 2012-6-6 20:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
function bisect0=bisect(xl,xu,es)
clc
clear all
fun=inline('sin(10*x)+cos(3*x)','x'); XL=3;Xu=5;
max_iter=50;es=0.001; iter=1;

XX=possible_root(fun,XL,Xu,0.1)
m_root=size(XX,1);
for number=1:m_root
xl=XX(number,1);xu=XX(number,2);
fl=fun(xl);xr=xl;
while iter<max_iter
    xrold=xr;
    xr=(xl+xu)/2;
    fr=fun(xr);
    if xr~=0                       % 计算相对误差
        ea=abs((xr-xrold)/xr)*100;
    end
    %%%%%%%%%%%%%%%%%%%%%区间变换%%%%%%%%%%%
    test=fl*fr;
    if test<0
        xu=xr;
    elseif test>0
        xl=xr;
        fl=fr;
    else ea=0;
    end
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    if ea<es
        break;
    end
    bisect(number,:)=xr;
    iter=iter+1;
end
end
bisect=bisect
error=fun(bisect)
end

  function xr=possible_root(fun,xl,xu,size)

n=xl:size:xu;m=1;
for cnt=1:length(n)-1;
    test=fun(n(cnt))*fun(n(cnt+1));
    if test<0
       xr1(m,:)=[n(cnt),n(cnt+1)];
       m=m+1;
    end
end
xr=xr1;
end
  
   
   
回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-14 18:10 , Processed in 0.061578 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表