请问这个最优规划问题计算报的错误什么意思?。
Afficher commentaires plus anciens
目标函数m文件:
function f = objfun(x)
P0=100;
d=0.0269;
sigma=0.3315;
K=88.254;
T=4.3122;
r=0.0435;
d1=log((P0*exp(-d*T))/(K*exp(-r*T)))/(sigma*sqrt(T))+sigma*sqrt(T)/2;
d2=d1-sigma*sqrt(T);
BS=P0*exp(-d*T)*normpdf(d1)-K*exp(-r*T)*normpdf(d2);
f = x(1)+x(2)*P0+x(3)*BS;
约束条件函数m文件:
function [c, ceq] = confun(x)
% Nonlinear inequality constraints
c = [];
gamma=3;
P0=100;
d=0.0269;
sigma=0.3315;
K=88.254;
T=4.3122;
r=0.0435;
W0=1.1465;
PT=@(u)(P0*exp((r-d-sigma^2/2)*T+u*T^(1/2)*phi));
WT=@(u)((x(1)+W0)*exp(r*T)+x(2)*exp(d*T)*PT+x(3)*max(PT-K,0));
F=@(u)(WT^(1-gamma)*normpdf(u));
if (max(PT-K,0)>0)
I=1;
else
I=0;
end
G=@(u)WT^(-r)*(x(2)*exp(d*T)+x(3)*I)*PT/P0*normpdf(u);
% Nonlinear equality constraints
ceq =[1/(1-gamma)*quad(F,10000,10000),quad(G,10000,10000)];
Command Window:
>> x0 = [1,1,1]; % Make a starting guess at the solution
options = optimset('Algorithm','active-set');
[x,fval,exitflag,output,lambda,grad,hession]=fmincon(@objfun,x0,[],[],[],[],[],[],@confun,options)
结果:
Undefined function 'minus' for input arguments of type 'function_handle'.
Error in confun (line 15)
if (max(PT-K,0)>0)
Error in fmincon (line 681)
[ctmp,ceqtmp] = feval(confcn{3},X,varargin{:});
Caused by:
Failure in initial user-supplied nonlinear constraint function evaluation. FMINCON cannot continue.
新问题:请问下面两句话什么意思:
Undefined function 'minus' for input arguments of type 'function_handle'.
[ctmp,ceqtmp] = feval(confcn{3},X,varargin{:});
还有就是
if (max(PT-K,0)>0)
I=1;
else
I=0;
end
嵌套的位置有点问题,麻烦大伙帮忙想想办法,问题有点多,先谢谢大家!
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur 数值类型 dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!