f=inline('x^2-7*x+10','x'); a=2; b=8; epsilon=0.25; x1=b-0.618*(b-a); f1=f(x1); x2=a+0.618*(b-a); f2=f(x2); for k=1:7 fprintf(1,'迭代次数 k=%3.0f\n',k) if f1<=f2 b=x2; x2=x1; f2=f1; x1=b-0.618*(b-a); f1=f(x1); else a=x1; x1=x2; f1=f2; x2=a+0.618*(b-a); f2=f(x2); end x=0.5*(b+a); fprintf(1,'迭代区间-左端 a=%3.4f\n',a) fprintf(1,'试点1坐标值 a=%3.4f\n',x1) fprintf(1,'函数值 f1=%3.4f\n',f(x1)) fprintf(1,'迭代区间-右端 b=%3.4f\n',b) fprintf(1,'试点2坐标值 x2=%3.4f\n',x2) fprintf(1,'函数值 f2=%3.4f\n',f(x2)) fprintf(1,'区间中点 x=%3.4f\n',x) % disp'' end 让disp函数不工作,即可,不过看起来你这编的是0.618算法。好像网上有源代码 不过你这是控制迭代次数,下面我给了你控制迭代精度的代码,希望对你有所帮助, 如果你喜欢我的回答,那就给个精华吧 clc clear all; a=1; %区间下限 b=7; %区间上限 e=0.1; %精确度 f = inline('x^2-7*x+10'); %构造的目标函数 x1=a+0.382*(b-a); y1=f(x1); x2=a+0.618*(b-a); y2=f(x2); while abs(b-a)>e if y1<y2 b=x2; x2=x1; y2=y1; x1=a+0.382*(b-a); y1=f(x1); else a=x1; x1=x2; y1=y2; x2=a+0.618*(b-a); y2=f(x2); end end xp=0.5*(a+b); %算出目标值 fp=f(xp); sprintf('xp=%f,\nfp=%f',xp,fp)