1、方程求解极值优化问题问题1:(约束 非线性)求:在区间2, 5间的最小值;在区间0, 3间的最大值。程序:fn=2*exp(-x)*sin(x);xmin,fmin=fminbnd(fn,2,5)fm=-2*exp(-x)*sin(x);xmax,fmax=fminbnd(fm,0,3)结果:xmin = 3.9270fmin = -0.0279xmax = 0.7854fmax = -0.6448语法:x=fminbnd(fun,x1,x2)x=fminbnd(fun,x1,x2, options)x=fminbnd(fun,x1,x2, options,P1,P2,)x,fval= fmi
2、nbnd ()x,fval,exitflag= fminbnd ()x,fval,exitflag,output= fminbnd ()含义:x:设计变量fun:目标函数x1,x2:设置设计变量给定区间的上下界值fval:返回目标函数在最优解x点的函数值exitglag:返回算法的终止标志output:返回优化算法信息的一个数据结构问题2:求解无约束条件下多变量函数的最小值,fminsearch函数和fminunc函数相同。求函数的最小值程序:%f(x)的 myfun41.m文件function f=myfun41(x)f=3*x(1)2+2*x(1)*x(2)+x(2)2;%调用函数fmin
3、unc,myh41.m%起始点x0=1 1x,fval=fminunc(myfun41,x0)结果:Optimization terminated successfully: Search direction less than 2*options.TolXx = 1.0e-008 * -0.7512 0.2479fval = 1.3818e-016问题3:求函数的最小值程序:%f(x)的 .m文件myfun42.mfunction f=myfun42(x)f=sin(x)+3;%调用函数fminsearch,myh42.m%起始点x0=2;x,fval=fminsearch(myfun42,
4、x0)结果:x = 4.7124fval =2.0000语法:x=fminserach(fun,x0)x=fminserach(fun,x0,options)x=fminserach(fun,x0,options,P1,P2,)x,fval=fminserach()x,fval,exitflag=fminserach()x,fval,exitflag,output=fminserach()x=fminunc(fun,x0)x=fminuvc(fun,x0,options)x=fminunc(fun,x0,options,P1,P2,)x,fval=fminunc()x,fval,exitfla
5、g=fminunc()x,fval,exitflag,output=fminunc()x,fval,exitflag,output,grad=fminunc()x,fval,exitflag,output,grad,hessian=fminunc()问题4:优化工具箱中其他函数:方程求解函数1、fsolve函数:求解非线性方程(计算零点)语法:x=fsolve(fun,x0)x=fsolve(fun,x0,options)x=fsolve(fun,x0,options,P1,P2,)x,fval=fsolve()x,fval, exitflag= fsolve()x,fval, exitfla
6、g,output= fsolve()x,fval, exitflag,output,jacobian= fsolve()求解方程组: 取x0=-5, 5即求解:的零点%程序myfun71.mfunction f=myfun71(x)f=2*x(1)-x(2)-exp(-x(1);-x(1)+2*x(2)-exp(-x(2);%程序myh71.mx0=-5;-5;options=optimset(Display,iter);x,fval=fsolve(fun71,x0,options)结果:x = 0.5671 0.5671fval = 1.0e-006 * -0.4059 -0.40592、f
7、zero函数:求解单变量连续函数的零点已知:f(x),求f(x)=0的根。语法:x=fzero(fun,x0)x=fzero (fun,x0,options)x=fzero (fun,x0,options,P1,P2,)x,fval=fzero()x,fval, exitflag= fzero ()x,fval, exitflag,output= fzero ()3、求解函数: 在x=2附近的零点。%程序myfun72.mfunction f=myfun72(x)f=x.3-2*x-5;%程序myh72.mz=fzero(myfun72,2)结果:z =2.0946问题5:(线性规划,有约束
8、等式 不等式):某车间有甲乙两台机床,可用于加工三种工件,这两台机床的可用台时数分别为700和800,三种工件的数量分别为300、500和400,已知机床加工情况如下表:问如何分配机床的加工任务,才能既满足加工工件的要求,又使总加工费用最低?解:设在甲机床上加工工件1、2和3的数量分别是x1、 x2和x3,在乙机床上加工工件1、2和3的数量分别是x4、 x5和x6,根据条件可建立数学模型:程序:f=13;9;10;11;12;8;A=0.4 1.1 1 0 0 0 0 0 0 0.5 1.2 1.3;b=700;800;aeq=1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0
9、 1;beq=300 500 400;lb=zeros(6,1);x,fval,exitflag=linprog(f,A,b,aeq,beq,lb)运行结果:x = 0.0000 500.0000 0.0000 300.0000 0.0000 400.0000fval = 1.1000e+004exitflag = 1即:在甲机床上加工500个工件2,在乙机床上加工300个工件1,加工400个工件3,可在满足条件情况下使总加工费用最小,为11000元。且收敛正常。语法:x=linprog(f,A,b,aeq,beq)x=linprog(f,A,b,aeq,beq,lb,ub)x=linprog
10、(f,A,b,aeq,beq,lb,ub,x0)x=linprog(f,A,b,aeq,beq,lb,ub,x0,options)x,fval=linprog()x,fval,exitflag=linprog()x,fval,exitflag,output=linprog()x,fval,exitflag,output,lambda=linprog()含义:x:设计变量f:目标函数的系数矩阵A:不等式约束的系数矩阵b:不等式约束值的列向量Aeq:等式约束的系数矩阵Beq:等式约束值的列向量lb,ub:设计向量的上下界值fval:返回目标函数在最优解x点的函数值exitglag:返回算法的终止标志output:返回优化算法信息的一个数据结构
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1