版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE27(一)一维搜索方法1.1题目:1.2最优解:1.3采用的算法及其算法的基本思想:首先采用进退法确定函数极值点所在的搜索区间[a,b],然后采用牛顿法求出极值。进退法的基本思想:按照一定的规则试算若干个点,比较其函数值的大小,直至找到函数值按“高-低-高”变化的单峰区间。黄金分割法的基本思想:通过不断的缩短单峰区间的长度来搜索极小点的一种有效方法。按()缩小比较大小确定取舍区间。程序框图:进退法和黄金分割法流程图如下:图1进退法流程图图2黄金分割法程序框图具体程序如下:共3个M文件,文件名分别为:F.m;JINTUI.m;FGOLDEN.mF.m具体程序:%定义f(x)函数的表达式f(x)=t^2-10*t+36functiony=F(t)y=t^2-10*t+36;JINTUI.m具体程序:function[t,minF]=FGOLDEN(precision,a0,h)[a,b]=JINTUI(a0,h);A=a;B=b;n=1;while0.618^(n-1)>=precisionC=A+0.312*(B-A);D=A+0.618*(B-A);ifC<DifF(C)<F(D)B=D;elseA=C;endelseifF(C)<F(D)A=C;elseB=D;endendn=n+1;endt=A;minF=F(A);FGOLDEN.m具体程序如下:function[x1,x2]=JINTUI(a0,h)a=a0;b=a0+h;while1ifF(a)<F(b)h=-h;a=a+h;b=a-h;ifF(b)<F(b-h)&F(b)<F(a)break;endelsea=b;b=a+h;ifF(a)<F(b)&F(a)<F(a-h)break;endendendx1=a;x2=b;1.6输出结果:2.1题目:2.2最优解:2.3采用的算法及其算法的基本思想:首先采用进退法确定函数极值点所在的搜索区间[a,b],然后采用牛顿法求出极值。进退法的基本思想:按照一定的规则试算若干个点,比较其函数值的大小,直至找到函数值按“高-低-高”变化的单峰区间。黄金分割法的基本思想:通过不断的缩短单峰区间的长度来搜索极小点的一种有效方法。按()缩小比较大小确定取舍区间。2.4程序框图:进退法和黄金分割法流程图如下:图1进退法流程图图2黄金分割法程序框图2.5具体程序如下:共3个M文件,文件名分别为:F12.m;JINTUI12.m;FGOLDEN12.mF12.m具体程序:%定义f(x)函数的表达式f(x)=t^4-5*t^3+4*t^2-6*t+60functiony12=F12(t)y12=t^4-5*(t^3)+4*(t^2)-6*t+60;JINTUI12.m具体程序如下:%用进退法找到合适的初始区间function[x1,x2]=JINTUI12(a0,h)a=a0;b=a0+h;while1ifF12(a)<F12(b)h=-h;a=a+h;b=a-h;ifF12(b)<F12(b-h)&F12(b)<F12(a)break;endelsea=b;b=a+h;ifF12(a)<F12(b)&F12(a)<F12(a-h)break;endendendx1=a;x2=b;FGOLDEN12具体程序如下:%定义黄金分割法函数模块function[t,minF12]=FGOLDEN12(precision,a0,h)%初始区间[a,b],精度precision,为区间的多少分之一%a0为初始区间,h为步长[a,b]=JINTUI12(a0,h);A=a;B=b;n=1;while0.618^(n-1)>=precisionC=A+0.312*(B-A);D=A+0.618*(B-A);%以上黄金分割法赋值ifC<DifF12(C)<F12(D)B=D;elseA=C;end%判断1,取区间AD,将D点值赋给B或是取区间CBelseifF12(C)<F12(D)A=C;elseB=D;endend%判断2n=n+1;%循环加1endt=A;minF12=F12(A);2.6计算运行结果如下:3.1题目:3.2最优解:3.3采用的算法及其算法的基本思想:首先采用进退法确定函数极值点所在的搜索区间[a,b],然后采用牛顿法求出极值。进退法的基本思想:按照一定的规则试算若干个点,比较其函数值的大小,直至找到函数值按“高-低-高”变化的单峰区间。黄金分割法的基本思想:通过不断的缩短单峰区间的长度来搜索极小点的一种有效方法。按()缩小比较大小确定取舍区间。3.4程序框图:进退法和黄金分割法流程图如下:图3.1进退法流程图图3.2黄金分割法程序框图3.5具体程序如下:共3个M文件,文件名分别为:F13.m;JINTUI13.m;FGOLDEN13.mF13.m:%定义f(x)函数的表达式f(x)=(t+1)(t-2)^2functiony13=F13(t)y13=t^3-3*t^2+4;JINTUI13.m:%用进退法找到合适的初始区间function[x1,x2]=JINTUI13(a0,h)a=a0;b=a0+h;while1ifF13(a)<F13(b)h=-h;a=a+h;b=a-h;ifF13(b)<F13(b-h)&F13(b)<F13(a)break;endelsea=b;b=a+h;ifF13(a)<F13(b)&F13(a)<F13(a-h)break;endendendx1=a;x2=b;FGOLDEN13.m%定义黄金分割法函数模块function[t,minF13]=FGOLDEN13(precision,a0,h)%初始区间[a,b],精度precision,为区间的多少分之一%a0为初始区间,h为步长[a,b]=JINTUI13(a0,h);A=a;B=b;n=1;while0.618^(n-1)>=precisionC=A+0.312*(B-A);D=A+0.618*(B-A);%以上黄金分割法赋值ifC<DifF13(C)<F13(D)B=D;elseA=C;end%判断1,取区间AD,将D点值赋给B或是取区间CBelseifF13(C)<F13(D)A=C;elseB=D;endend%判断2n=n+1;%循环加1endt=A;minF13=F13(2);3.6计算运行结果如下:二无约束优化问题1.1题目:1.2最优解:1.3采用的算法及其算法的基本思想:将f(x)在x(k)点作泰勒展开,取二次函数式Φ(x)作为近似函数,以Φ(x)的极小值点作为f(x)的近似极小值点。求二次函数的极值1.4程序框图:牛顿法程图如下:程序:共一个main21.m文件:main21.m具体程序如下:clc;clearall;symsx1x2tpmaxnprecision;%定义变量f21=4*x1^2+x2^2-40*x1-12*x2+136;%定义函数fx1=diff(f21,x1);%对f求x1偏导求的一阶导数;diff(函数,n),求的n阶导数(n是具体整数);%diff(函数,变量名),求对的偏导数;diff(函数,变量名,n)fx2=diff(f21,x2);%对f求x2偏导p=0;g=1;disp('用梯度法求二元二次目标函数f(X)=4*x1^2+x2^2-40*x1-12*x2+136的最优解');fori=1:5%fori=1:5if(p==0)%if(p==0)x1=input('Pleaseentertheinitialstartingpointx1:');x2=input('Pleaseentertheinitialstartingpointx2:');maxn=input('Pleaseenterthemaxmumnumberofinterationsmaxn:');precision=input('Pleaseentertheminimumofthesearchingdirectionprecision:');g=input('Outputtheresultofeachinteration,ifyouwantEnter1,ornot:');fora=1:maxn%fora=1:2:8,则每次取值为1,3,5,7.其中2是步长%但步长为1时可省略即原式为forn=1:1:100f0=subs(f21);%subs(函数名)将函数里的变量用已知量代换对f中的变量带入已知量f1=subs(fx1);%subs(函数名)将函数里的变量用已知量代换对fx1中的变量带入已知量f2=subs(fx2);%subs(函数名)将函数里的变量用已知量代换对fx2中的变量带入已知量if(double(sqrt(f1^2+f2^2))<=precision)%计算梯度模值进行比较%以下为输出函数disp('*************************************************************************');disp('Theresult:');disp('Thetotalnumberofinterationsa:');disp('Thevalueofextremumx1:');vpa(x1,5)%vpa函数来实现数值精确到小数点后某一位vpa会根据精度要求去掉末尾的数位%或者补0vpa(x1,7)%vpa的结果是符号数值,可以用于初等运算,不可用于关系运算以小数形式表示disp('Thevalueofextremumx2:');vpa(x2,5)disp('Thefunctionofextremumvalue:');vpa(f0)p=1;break;elseFF=F21(x1-t*f1,x2-t*f2);%最优解为tFFt=diff(FF,t);tt=solve(FFt,'t');%solve命令主要是用来求解代数方程(即多项式)的解即求解满足此中默认FFt=0;x1=x1-tt*f1;x2=x2-tt*f2;if(g==1)disp('Thenumberofinterationsa:');disp('Thevalueofx1:');x1=vpa(x1,5)%vpa函数来实现数值精确到小数点后某一位vpa会根据精度要求去掉末尾的数位或者补0vpa(x1,5)%vpa的结果是符号数值,可以用于初等运算,不可用于关系运算以小数形式表示disp('Thevalueofx2:');x2=vpa(x2,5);disp('Thevalueoffunctionf0:');f0=vpa(f0,5)disp('*************************************************************************');endend%对if进行结束end%对for进行结束if(p==0)disp('PLEASETRYAGAIN');end%if(p==0)end%if(p==0)头一个end%fori=1:5计算输出结果:2.1题目:2.2最优解:2.3采用的算法及其算法的基本思想:将f(x)在x(k)点作泰勒展开,取二次函数式Φ(x)作为近似函数,以Φ(x)的极小值点作为f(x)的近似极小值点。求二次函数的极值2.4程序框图:(牛顿法程图如下)2.5具体程序:Main22具体程序如下:%用牛顿法求目标函数f(x)=(x1^2+x2-11)^2+(x1+x2^2-7)^2的最优解clc;symsx1x2precision;f=(x1^2+x2-11)^2+(x1+x2^2-7)^2;v=[x1x2];df=jacobian(f,v);df=df.';H=jacobian(df,v);disp('**********************************************************');disp('用牛顿法求目标函数f(x)=(x1^2+x2-11)^2+(x1+x2^2-7)^2的最优解');disp('**********************************************************');disp('请输入初始位置点以及精度要求');fprintf('\n');x1=input('选取的初始点坐标点x1:');x2=input('选取的初始点坐标点x2:');precision=input('计算所要求迭代精度为:');x0=[x1,x2]';g0=subs(df,v,x0);H0=subs(H,v,x0);H0=inv(H0);k=0;s=-H0*g0;while(subs(sqrt(s(1,1)^2+s(2,1)^2))>precision)s=-H0*g0;x0=x0+s;g0=subs(df,v,x0);H0=subs(H,v,x0);H0=inv(H0);k=k+1;enddisp('');disp('计算结果如下:');fprintf('迭代的总次数:\nk=%d\n',k);fprintf('最优点坐标:\nx1=%3.4f\n',x0(1));fprintf('最优点坐标:\nx2=%3.4f\n',x0(2))f=subs(f,v,x0);fprintf('函数的极值:\nf=%3.4f\n',f);disp('*************************************************');disp('*************************************************');2.6计算和输出结果:3.1题目:3.2最优解:3.3采用的算法及其算法的基本思想:将f(x)在x(k)点作泰勒展开,取二次函数式Φ(x)作为近似函数,以Φ(x)的极小值点作为f(x)的近似极小值点。求二次函数的极值3.4程序框图:3.5程序:共一个M文件:main23.m:%用牛顿法求目标函数f(x)=(x1^2+10*x2)^2+5*(x3-x4^2)^2+(x2-2*x3)^2+10*(x1-x4)^4最优解clc;symsx1x2x3x4precision;f=(x1^2+10*x2)^2+5*(x3-x4^2)^2+(x2-2*x3)^2+10*(x1-x4)^4;%目标函数v=[x1x2x3x4];%变量向量df=jacobian(f,v);%梯度df=df.';%非共轭转置H=jacobian(df,v);%海森矩阵disp('************************************************************************');disp('用牛顿法求目标函数f(x)=(x1^2+10*x2)^2+5*(x3-x4^2)^2+(x2-2*x3)^2+10*(x1-x4)^4的最优解');disp('***********************************************************************');disp('请输入初始位置点以及精度要求');fprintf('\n');x1=input('选取的初始点坐标点x1:');x2=input('选取的初始点坐标点x2:');x3=input('选取的初始点坐标点x3:');x4=input('选取的初始点坐标点x4:');precision=input('计算所要求迭代精度要求:');x0=[x1,x2,x3,x4]';g0=subs(df,v,x0);H0=subs(H,v,x0);H0=inv(H0);%海森矩阵的逆k=0;s=-H0*g0;while(subs(sqrt(s(1,1)^2+s(2,1)^2)+s(3,1)^2+s(4,1)^2)>precision)s=-H0*g0;x0=x0+s;g0=subs(df,v,x0);%求梯度的值H0=subs(H,v,x0);%求海森矩阵的值H0=inv(H0);k=k+1;enddisp('');disp('计算结果如下:');fprintf('迭代的总次数:\nk=%d\n',k);fprintf('最优点坐标:\nx1=%3.4f\n',x0(1));fprintf('最优点坐标:\nx2=%3.4f\n',x0(2));fprintf('最优点坐标:\nx3=%3.4f\n',x0(3));fprintf('最优点坐标:\nx4=%3.4f\n',x0(4));f=subs(f,v,x0);fprintf('函数的极值:\nf=%3.4f\n',f);disp('*************************************************');disp('*************************************************');3.6计算结果如下:三约束优化问题1.1题目:1.2最优解:1.3采用的算法及其算法的基本思想:采用的为外点法来进行计算。其基本思想:外点法是从可行域的外部构造一个点序列去逼近原约束问题的最优解。构造函数进行计算。1.4程序框图:1.5程序:共2个M文件,分别为:main31.m和fdd31.m.main31.m具体如下:%用外点法求多维有约束目标函数f(x)=(x1-2)^2+(x2-1)^2极值clc;k=0;M=1;c=10;symsx1x2precision1precision2a1av=[x1x2];%变量向量f=(x1-2)^2+(x2-1)^2;%目标函数g1=-x1^2-x2;g2=x1+x2-2;disp('****************************************************');disp('用外点法求多维有约束目标函数f(x)=(x1-2)^2+(x2-1)^2极值');disp('****************************************************');disp('请输入初始位置点以及精度要求');fprintf('\n');a1=input('选取的初始点坐标点a1:');a2=input('选取的初始点坐标点a2:');precision1=input('计算所要求迭代精度要求precision1:');precision2=input('计算所要求迭代精度要求precision2:');X0=[a1,a2]';while(k<100)q=f+M*((g1)^2+(g2)^2);X1=fdd31(q,x1,x2,X0);norm=subs(sqrt((X1(1)-X0(1))^2+(X1(2)-X0(2))^2));ff0=subs(subs(q,v,X0));ff1=subs(subs(q,v,X1));if(norm<=precision1)&(abs((ff0-ff1)/ff0)<=precision2)break;endX0=X1;M=c*M;k=k+1;enddisp('');disp('计算结果如下:');fprintf('迭代的总次数:\nk=%d\n',k);fprintf('最优点坐标:\nx1=%3.4f\n',X0(1));fprintf('最优点坐标:\nx2=%3.4f\n',X0(2));f=subs(f,v,X0);fprintf('函数的极值:\nf=%3.4f\n',f);disp('********************************************************************');disp('********************************************************************');fdd31.m具体如下:functionsc=fdd31(f,x1,x2,X0)symsv;v=[x1,x2];%变量向量df=jacobian(f,v);%梯度df=df.';G=jacobian(df,v);%海森矩阵eps=0.000001;%精度g1=subs(df,v,X0);G1=subs(G,v,X0);G1=inv(G1);%海森矩阵的逆k=0;s=-G1*g1;s1=subs(sqrt(s(1)^2+s(2)^2));%求初始梯度值while(s1>eps)s=-G1*g1;X0=X0+s;g1=subs(df,v,X0);%求梯度的值G1=subs(G,v,X0);%求海森矩阵的值G1=inv(G1);s1=subs(sqrt(s(1)^2+s(2)^2));k=k+1;end;sc=X0;1.6运算结果:2.1题目:2.2最优解:2.3采用的算法及其算法的基本思想:采用的为外点法来进行计算。其基本思想:外点法是从可行域的外部构造一个点序列去逼近原约束问题的最优解。构造函数进行计算。2.4程序框图:1。.5程序:2.5程序共2个M文件,分别为:main32.m和fdd32.m.Main32.m具体程序:%用外点法求多维有约束目标函数第二大题第二小题f(x)=(x2^3*((x1-3)^2-9))/(27*sqrt(3))极值clc;k=0;M=1;c=8;symsx1x2precision1precision2a1av=[x1x2];%变量向量f=(x2^3*((x1-3)^2-9))/(27*sqrt(3));%目标函数g1=x2-x1/sqrt(3);g2=-x1+x2/sqrt(3);g3=x1+x2/sqrt(3)-6;g4=-x1;g5=-x2;h1=x1^2+x2^2+x3^2-25;h2=8*x1+14*x2+7*x3-56;disp('*******************************************************************');disp('用外点法求多维有约束目标函数f(x)=(x2^3*((x1-3)^2-9))/(27*sqrt(3))极值');disp('*******************************************************************');disp('请输入初始位置点以及精度要求');fprintf('\n');a1=input('选取的初始点坐标点a1:');a2=input('选取的初始点坐标点a2:');precision1=input('计算所要求迭代精度要求precision1:');precision2=input('计算所要求迭代精度要求precision2:');X0=[a1,a2]';while(k<100)q=f+M*((g1)^2+(g2)^2+(g3)^2+(g4)^2+(g5)^2);X1=fdd32(q,x1,x2,X0);norm=subs(sqrt((X1(1)-X0(1))^2+(X1(2)-X0(2))^2));ff0=subs(subs(q,v,X0));ff1=subs(subs(q,v,X1));if(norm<=precision1)&(abs((ff0-ff1)/ff0)<=precision2)break;endX0=X1;M=c*M;k=k+1;enddisp('');disp('计算结果如下:');fprintf('迭代的总次数:\nk=%d\n',k);fprintf('最优点坐标:\nx1=%3.4f\n',X0(1));fprintf('最优点坐标:\nx2=%3.4f\n',X0(2));f=subs(f,v,X0);fprintf('函数的极值:\nf=%3.4f\n',f);disp('********************************************************************');disp('********************************************************************');fdd32.m的程序具体为:functionsc=fdd32(f,x1,x2,X0)symsv;v=[x1,x2];%变量向量df=jacobian(f,v);%梯度df=df.';%非共轭转置G=jacobian(df,v);%海森矩阵eps=0.000001;%精度g1=subs(df,v,X0);G1=subs(G,v,X0);G1=inv(G1);%海森矩阵的逆k=0;s=-G1*g1;s1=subs(sqrt(s(1)^2+s(2)^2));%求初始梯度值while(s1>eps)s=-G1*g1;X0=X0+s;g1=subs(df,v,X0);%求梯度的值G1=subs(G,v,X0);%求海森矩阵的值G1=inv(G1);s1=subs(sqrt(s(1)^2+s(2)^2));k=k+1;end;sc=X0;2.6运算结果如下:3.1题目:3.2最优解:3.3采用的算法及其算法的基本思想:采用的为外点法来进行计算。其基本思想:外点法是从可行域的外部构造一个点序列去逼近原约束问题的最优解。构造函数进行计算。3.4程序框图:3.5程序共2个M文件,分别为:main33.m和fdd33.m.main33.m具体程序:%用外点法求多维有约束目标函数f(x)=1000-x1^2-2*x2^2-x3^2-x1*x2-x1*x3极值clc;k=0;M=1;c=8;symsx1x2x3precision1precision2a1av=[x1x2x3];f=1000-x1^2-2*x2^2-x3^2-x1*x2-x1*x3;g1=-x1;g2=-x2;g3=-x3;h1=x1^2+x2^2+x3^2-25;h2=8*x1+14*x2+7*x3-56;disp('********************************************************************');disp('用外点法求多维有约束目标函数f(x)=1000-x1^2-2*x2^2-x3^2-x1*x2-x1*x3极值');disp('********************************************************************');disp('请输入初始位置点以及精度要求:');fprintf('\n'
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年湖北省应城市高二历史下册期末考试测试卷附参考答案(黄金题型)
- 2025年山东省新泰市高二生物上册期末考试模拟卷及答案【新】
- 2026年辽宁省凌海市高二生物上册期末考试试卷【培优A卷】附答案
- 2025年江苏省如皋市高二生物下册期末考试模拟考试卷含完整答案(各地真题)
- 2025年河南省卫辉市高二生物上册期末考试模拟卷及完整答案【易错题】
- 2025年浙江省临安市高二生物上册期末考试测试卷附答案(突破训练)
- 2026年辽宁省海城市高二生物上册期末考试模拟卷含完整答案【夺冠】
- 2025年河北省黄骅市高二生物上册期末考试试卷附参考答案(培优B卷)
- 《车普通外螺纹》课件
- 应急救护演练方案
- 成人高考专升本2025年考试《政治》真题试卷(含答案)
- 2026中国动力电池梯次利用商业模式与残值评估研究报告
- 6.5美丽中国加快建设 课件 (共32张)+内嵌视频 统编版道德与法治9年级上册
- 人教版2026-2027学年九年级道德与法治上册教学计划(及进度表)
- 二十世纪上半叶日本渤海史研究:溯源、成果与影响剖析
- 2026年中国石油化工集团中石化招聘笔试试题及答案
- 健康管理数字化平台的建设及推广计划
- 古诗文默写训练与答题策略
- 汇编mips考试试题及答案
- 2026年哈尔滨铁道职业技术学院单招职业技能考试题库及答案详解(各地真题)
- 青岛华通集团招聘笔试题
评论
0/150
提交评论