>> [p,ans]=nlp618('f1',-1,1,0.16)step = 6p = -1.0000 1.0000 -0.2360 0.2360 -0.6526 -1.1246 -0.2360 1.0000 0.2360 0.5278 -1.1246 -0.9706 -0.2360 0.5278 0.0558 0.2360 -1.0496 -1.1246 0.0558 0.5278 0.2360 0.3475 -1.1246 -1.1060 0.0558 0.3475 0.1672 0.2360 -1.1113 -1.1246 0.1672 0.3475 0.2360 0.2787 -1.1246 -1.1234 0.1672 0.2787 0 0 0 0ans = 0.2229程序文件 nlp618.mfunction [p,ans]=nlp618(f_name,a,b,e)%//%输入f_name为函数名,[a,b]初始区间,e为最小区见要求%输出p为所有的计算情况,u为最优解,step为计算步骤%//a(1)=a;b(1)=b;L=e;t(1)=a(1)+0.382*(b(1)-a(1));u(1)=a(1)+0.618*(b(1)-a(1));k=1;m(1)=feval(f_name,t(1));n(1)=feval(f_name,u(1));while(b(k)-a(k)>L) if(m(k)>n(k)) a(k+1)=t(k); b(k+1)=b(k); t(k+1)=u(k); u(k+1)=a(k+1)+0.618*(b(k+1)-a(k+1)); else a(k+1)=a(k); b(k+1)=u(k); u(k+1)=t(k); t(k+1)=a(k+1)+0.382*(b(k+1)-a(k+1)); endm(k+1)=feval(f_name,t(k+1));n(k+1)=feval(f_name,u(k+1));ans=feval(f_name,t(k+1));k=k+1;endt(k)=0;u(k)=0;m(k)=0;n(k)=0;p=[a',b',t',u',m',n'];ans=(a(k)+b(k))/2;step=k-1%函数function y=f1(x)y=2*x^2-x-1;//运行实例:>> [p,ans]=nlp618('f1',-1,1,0.16)step = 6p = -1.0000 1.0000 -0.2360 0.2360 -0.6526 -1.1246 -0.2360 1.0000 0.2360 0.5278 -1.1246 -0.9706 -0.2360 0.5278 0.0558 0.2360 -1.0496 -1.1246 0.0558 0.5278 0.2360 0.3475 -1.1246 -1.1060 0.0558 0.3475 0.1672 0.2360 -1.1113 -1.1246 0.1672 0.3475 0.2360 0.2787 -1.1246 -1.1234 0.1672 0.2787 0 0 0 0ans = 0.2229