Matlab二分法使用出现错误,请指教!

Amy_is_growing 2017-10-07 09:38:23

```
%二分法
function [xstar,index,it]=bisect(fun,a,b,ep)
if nargin<4
ep=0.00001;
end
fa=feval(fun,a);fb=feval(fun,b);
if fa*fb>0
xstar=[fa,fb];index=0;it=0;
return
end
k=0;
while abs(b-a)/2>=ep
x=(a+b)/2;
fx=feval(fun,x);
if fx*fa<0
b=x;fb=fx;
else
a=x;fa=fx;
end
k=k+1;
end
xstar=(a+b)/2;index=1;it=k;
end

function f=fun2(x)
f=exp(x)+10*x-2;
[xstar,index,it]=bisect('fun2',0,1,0.001);
end

```
>> fun2(1)
Maximum recursion limit of 1000 reached. Use set(0,'RecursionLimit',N) to change the limit. Be aware
that exceeding your available stack space can crash MATLAB and/or your computer.

Error in bisect
...全文
700 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Amy_is_growing 2017-10-20
  • 打赏
  • 举报
回复
已解决 函数应为 function f=fun2(x) f=exp(x)+10*x-2; end 在窗口执行以下命令 [xstar,index,it]=bisect('fun2',0,1,0.001); 完成
liu1xiang 2017-10-07
  • 打赏
  • 举报
回复
应该是循环次数太多导致的存储空间不足。楼主可以增加一个用k来设置迭代跳出的条件。

3,423

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 其他开发语言
社区管理员
  • 其他开发语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧