在下面的代碼中,我想替換函式 f 的定義
f=@(x)-x(1)*x(2)*x(3);
x0=[1 1 1];
lb=[0 0 0];
nonlincon=@constr;
x=fmincon(f,x0,[],[],[],[],lb,[],nonlincon)
function [c,ceq] = constr(x)
c = [2*x(1)*x(2) 2*x(1)*x(3) 2*x(2)*x(3)-100 ; 1-x(1)*x(2)];
ceq = [];
end
我把它換成了
function erg = f(x)
erg = -x(1)*x(2)*x(3);
end
但不幸的是它不起作用。我究竟做錯了什么?
錯誤訊息是“沒有足夠的輸入引數。 ”
uj5u.com熱心網友回復:
在您的第一個代碼片段中,f是一個函式句柄,而在第二個代碼片段中,它是一個函式。
fmincon您可以通過呼叫輕松地將其設定為要呼叫的函式句柄x=fmincon(@f,x0,[],[],[],[],lb,[],nonlincon)
否則,matlab 會嘗試呼叫f并將其輸出提供給fmincon,這不是您想要做的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/526590.html
標籤:功能matlab优化
