MENU

matlab求解非线性多元函数之最小值问题

March 19, 2020 • 开发

基本语法

[x,fval]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

  • x的返回值是决策向量x的取值,fval的返回值是目标函数f(x)的取值
  • fun是用M文件定义的函数f(x),代表了(非)线性目标函数
  • x0是x的初始值
  • A,b,Aeq,beq定义了线性约束 ,如果没有线性约束,则A=[],b=[],Aeq=[],beq=[]
  • lb和ub是变量x的下界和上界,如果下界和上界没有约束,则lb=[],ub=[],也可以写成lb的各分量都为-inf,ub的各分量都为inf
  • nonlcon是用M文件定义的非线性向量函数约束
  • options定义了优化参数,不填写表示使用Matlab默认的参数设置

问题实例

微信图片_20200319150816.jpg

>> f=@(x) (x(1)^2+x(2)^2+1)/((x(1)+2)*x(2))
[x fval]=fmincon(f,[1;1],[],[],[],[],[0;0],[])


x =

   0.500000150284677
   1.118034035874524


fval =

   0.894427190999923
转载请注明出处,并添加原文地址

Archives QR Code Tip
QR Code for this page
Tipping QR Code