Matlab 入门级问题

function[c,err,yc]=bisect(f,a,b,delta)ya=feval(f,a);yb=feval(f,b);ifya*yb>0,return,en... function [c,err,yc]=bisect(f,a,b,delta)
ya=feval(f,a);
yb=feval(f,b);
if ya*yb>0,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;
elseif yb*yc>0
b=c;
yb=yc;
else
a=c;
ya=yc;
end
if b-a<delta,return,end
end
c=(a+b)/2;
err=abs(b-a);
yc-feval(f,c);
一个二分法的程序,几乎是跟着书本打的,但输入
[a,b,c]=bisect('f',0,2,.0001)
时出现
??? Output argument "err" (and maybe others) not assigned during call to "E:\mathlab\work\bisect.m (bisect)".

Error in ==> bisect at 2
ya=feval(f,a);

求破。
function y=f(x)
y=x.*sin(x)-1;
展开
 我来答
吾尝终日而思
2010-03-17 · TA获得超过1万个赞
知道大有可为答主
回答量:1276
采纳率:0%
帮助的人:757万
展开全部
feval(f,a);
这里面这个f是什么函数,把代码也贴上来吧。

ok,搞定了:
原因是这行代码:
if b-a<delta,return,end
如果进入这个条件语句,那么return,之后err就得不到了,但是你还要输出来,即输出一个并不存在的数。
你把return改为break就行了。
我已经测试通过了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式