二分法matlab程序问题
function[x_star,index,k]=bisect1(fun,a,b,ep)ifnargin<4ep=10^-5;endfa=feval(fun,a);fb=...
function [x_star,index,k]=bisect1(fun,a,b,ep)
if nargin<4 ep=10^-5;end
fa=feval(fun,a);fb=feval(fun,b);
if fa*fb>0
x_star=[fa,fb];k=0;index=0;
return;
end
k=1;
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
x_star=(a+b)/2;index=1;
运行结果输出k总是等于1,实在不知道怎么改了,求大神改一下 展开
if nargin<4 ep=10^-5;end
fa=feval(fun,a);fb=feval(fun,b);
if fa*fb>0
x_star=[fa,fb];k=0;index=0;
return;
end
k=1;
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
x_star=(a+b)/2;index=1;
运行结果输出k总是等于1,实在不知道怎么改了,求大神改一下 展开
1个回答
展开全部
function test
a=1;b=2;tol=1e-4;N=10000;
k=0;fa=f(a);
for k=1:N
p=(a+b)/2; fp=f(p);
if( fp==0 || (b-a)/2<tol)
break
end
if fa*fp<0 b=p; else a=p; end
end
disp(k)
disp(p)
function ydot=f(x)
% 内嵌函数,matlab7.0及以上版本支持
ydot=x^3+2*x^2-7;
end
end
打字不易,如满意,望采纳。
a=1;b=2;tol=1e-4;N=10000;
k=0;fa=f(a);
for k=1:N
p=(a+b)/2; fp=f(p);
if( fp==0 || (b-a)/2<tol)
break
end
if fa*fp<0 b=p; else a=p; end
end
disp(k)
disp(p)
function ydot=f(x)
% 内嵌函数,matlab7.0及以上版本支持
ydot=x^3+2*x^2-7;
end
end
打字不易,如满意,望采纳。
追问
我只是想改我的代码而已,你给我新的代码也没用啊
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询