24小时热门版块排行榜    

查看: 1166  |  回复: 4

wtisunday

木虫 (正式写手)

[求助] m文件调用问题

大侠们,我依据教科书编了一个二分法的程序(标准的啊),然后调用的时候总是出现如下情况,还请赐教!本人乃初学菜鸟级的
f=inline('x^3-x-1');
>> bisect(f,1,2)
??? Error using ==> feval
Undefined function or method 'f' for input arguments of type 'double'.

Error in ==> bisect at 10
ya=feval('f',a)
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dbb627

荣誉版主 (著名写手)

【答案】应助回帖

wtisunday(金币+10): 版主?涓Π� 2011-12-01 12:04:32
CODE:
function [approx_root,n]=bisect(f,a,b)
%a,b为根的区间
fa=feval(f,a)
fb=feval(f,b)
n=0;
while(abs(b-a)> 0.0001)
     c=(a+b)/2;
     approx_root=c;
         fc=feval(f,c)
     [a,c,b;fa,fc,fb];
     n=n+1;
if ( sign(fb) * sign(fc)<=0)
            a=c;
            fa=fc;
          else
            b=c;
            fb=fc;
          end
        end

>> f=inline('x^3-x-1');
>> bisect(f,1,2)

ans =

    1.3248



>> f(1.3248)

ans =

  3.4991e-004
The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
2楼2011-12-01 10:54:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wtisunday

木虫 (正式写手)

function [c,err,yc]=bisect(f,a,b,delta)
% f是所要求解的函数
% a和b分别为有根区间的左右限
% delta是允许的误差界
% c为所求近似值
% yc为函数f在c上的函数值
% err为c的误差估计
if nargin<4 delta=1e-5;
end
ya=feval('f',a)
yb=feval('f',b)
if yb==0,c=b,return,
end
if ya*yb>0,
    disp('(a,b)不是有根区间');
    return
end
max1=1+round((log(b-a)-log(delta))/log(2));
for k=1:max1
    c=(a+b)/2;
    yc=feval('f',c);
    if yc==0 a=c;b=c;break,
    elseif yb*yc>0
        b=c;yb=yc;
    else
        a=c;ya=yc;
    end
    if (b-a) end
k,c=(a+b)/2,err=abs(b-a),yc=feval('f',c)

我这个哪出错了吗
3楼2011-12-01 11:23:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wtisunday

木虫 (正式写手)

出来了,哥们,谢谢了啊
4楼2011-12-01 11:38:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Justin_yzg

银虫 (小有名气)

不太明白问题
5楼2011-12-02 08:02:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wtisunday 的主题更新
信息提示
请填处理意见