1. 程式人生 > >matlab:無約束非線性規劃函式

matlab:無約束非線性規劃函式

用於求解無約束非線性規劃的函式有:fminsearch和fminunc,用法介紹如下。
fminsearch函式

  1. x=fminsearch(fun,x0)
  2. x=fminsearch(fun,x0,options)
  3. x=fminsearch(fun,x0,options,p1,p2,…)
  4. [x,fval]=fminsearch(fun,x0,options,p1,p2,…)
  5. [x,fval,exitflag]=fminsearch(fun,x0,options,p1,p2,…)
  6. [x,fval,exitflag,output]=fminsearch(fun,x0,options,p1,p2,…)

說明:


fun:使目標函式:
options:設定優化選項引數:
fval:返回目標函式在最優解x點的函式值:
exitflag:返回演算法的終止標誌:
output:返回優化演算法資訊的一個數據結構。

fminunc函式

  1. x=fminunc(fun,x0)
  2. x=fminunc(fun,x0,options)
  3. x=fminunc(fun,x0,options,p1,p2,…)
  4. [x,fval]=fminunc(fun,x0,options,p1,p2,…)
  5. [x,fval,exitflag]=fminunc(fun,x0,options,p1,p2,…)
  6. [x,fval,exitflag,output]=fminunc(fun,x0,options,p1,p2,…)
  7. [x,fval,exitflag,output,grad]=fminunc(fun,x0,options,p1,p2,…)
  8. [x,fval,exitflag,output,grad,hessian]=fminunc(fun,x0,options,p1,p2,…)

說明:
fun:使目標函式:
options:設定優化選項引數:
fval:返回目標函式在最優解x點的函式值:
exitflag:返回演算法的終止標誌:
output:返回優化演算法資訊的一個數據結構:
grad:返回目標函式在最優解x點的梯度:
hessian:返回目標函式在最優解x點的Hessian矩陣值。
例如:求函式costFunc(X)=3*x1^2+2*x1*x2+x2^2的最小值。

首先編寫f(x)的.m檔案
function f = costFunc(x)
f=3*x(1)^2 + 2*x(1)*x(2)+x(2)^2;
end

然後呼叫函式fminunc
x=[2,3];
[y,fval]=fminunc(@costFunc,x)

y =
1.0e-05 *
0.2366 -0.8089
fval =
4.3951e-11