计报告(4)8x0=tx(:,n)+tl*D(:,n);D(:,m:(n-1))=D(:,(m+1):n);elseiftmpF<FX(n-1)x0=2*tx(:,n)-tx(:,1);elsex0=tx(:,n);endendk=k+1;allX(:,(k-1)*n+1:k*n)=tx(:,1:n);forj=1:nallY(:,(k-1)*n+j)=Funval(f,var,tx(:,j));endendendminf=Funval(f,var,x);formatshort;程序中用到的函数minJT、minHJ和Funval分别为进退法确定搜索区间函数、黄金分割法求极值函数和计算函数值函数,直接调用即可,由于篇幅限制,故不在此列出其代码。4.利用MATLAB求解实例4.1实例本文以本章例题4.9为例来验证鲍威尔法算法在MATLAB里的实现。已知目标函数2 21 2 1 2 1 2( ) 10 4 60f X x x x x x x? ?????,求其极小值,计算精度210???。在MATLAB命令窗口里输入如下命令:>>symsst;>>f=t^2+s^2-t*s-10*t-4*s+60;机械优化设计报告(4)9>>D=[100;010];>>[x,mf,k]=Powell(f,[00],D,[ts])计算结果为:x=8.00006.0000mf=8.0000k=2与书中提供的精确解完全吻合,说明此方法有效可行。计算变量如图3-1。图3-1计算结果(0.01??)4.2实例结果分析此处主要从以下三个方面来分析此算法及计算结果。1)可靠性。机械优化设计报告(4)10通过对其他多元多次函数进行求极值计算,结果都比较精确,说明此算法可靠性、通用性好。另外,对于给定不同的初始点,其求解结果同样精确。分别如下:图3-20X?[-10-10]