您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 线性搜索法MATLAB程序实现
function[y,dy]=fx(a)%要优化的目标函数%返回值:y,函数在a点处的值;dy,函数在a点处的导数值symsx;f=sym('0.00723*x^0.1+0.03*x^(-1)');y=subs(f,a);dy=subs(diff(f),a);endx0=50;%起始点epsilon=1e-6;%迭代精度num=0;%迭代次数[y0,dy0]=fx(x0);whileabs(dy0)epsilonx00=x0;y00=y0;step=abs(dy0)*1e2;%步长的初始值[y1,dy1]=fx(x0-dy0*step);if(y1=y0)whiley1=y0step=step/2;[y1,dy1]=fx(x0-dy0*step);endifabs(y1-y0)/abs(y0)=1e-2;break;endy0=y1;dy0=dy1;%新的一点x0=x0-dy0*step;elsewhiley1y0%寻找满足充分下降条件的步长step=step*2;[y1,dy1]=fx(x0-dy0*step);endx0=x0-dy0*step/4;[y1,dy1]=fx(x0);ifabs(y1-y0)=epsilon;break;endy0=y1;dy0=dy1;endnum=num+1;ifnum=200break;endendbest_x=x0;%最优点holdoff;fprintf('当A取值%.4f\n',best_x);fprintf('Cd有最小值%.4f\n',fx(best_x));fprintf('迭代次数等于%.4f\n',num);x=10:1:100;%作出图形y=fx(x);plot(x,y);xlabel('面积A');ylabel('阻力系数Cd');title('阻力系数曲线')gridon;holdon;
本文标题:线性搜索法MATLAB程序实现
链接地址:https://www.777doc.com/doc-1449589 .html