|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
求解含有三个参数(z(1),z(2),z(3))的最优化问题,带有一个线性约束,目标函数含有双重积分,因此使用quadl求解,而且内层积分上下限和外层积分的变量有关。
主要使用了系统的fmincon和qudal函数。
目标函数:
function object_m=opt_x(z)
global w0 v0 F Fv Fw T rho r lambda delta sigmaw
constant; %参数的初值,除了z是求解变量之外,其他的参数都是常数给出的.
d5=(log(Fv/v0)-(r-z(1).^2/2)*T)/(z(1).*sqrt(T));
d3=d5-rho*sigmaw*sqrt(T);
d8=d5-z(1).*sqrt(T);
B1=(1+theta)*w01*quadl(@a7,-1000,d3);
B2=exp(-r*T)*(Fw+Fv)*quadl(@a10,-1000,d5);
C5=1/(z(1).^2*T);
object_m=z(2)*(B1-B2)-C5
M 文件:
function fonctiona7=a7(x)
global w0 v0 F Fv Fw T rho r lambda delta sigmaw w01 z
v=v0*exp((r-z(1).^2/2)*T+z(1).*sqrt(T)*x.^1+z(1).*sigmaw*T*rho);
d7x=(log(Fw+Fv-v+z(3)/(1-z(2)))-log(w01)-(r-sigmaw.^2/2)*T)./(sigmaw*sqrt(T))-sigmaw*sqrt(T);
fonctiona7=(0.5/sqrt(2*pi))*exp(-0.5*x.^2).*erfc((d7x-rho*x.^1)/sqrt(2*(1-rho^2)));
%计算内层积分,a9和这个类似,不重复了,问题就出在这里,a7的调用好像不成功。
约束条件:
function [c,ceq]=con_x(z)
c3=-z(1);
c4=-z(2);
c5=-z(3);
c6=z(1)-1;
c7=z(2)-.5;
c8=z(3)-10;
% 限制变量的取值范围
c=[c3,c4,c5,c6,c7,c8];
%等式和非等式的约束.
当运行:
z0=[0.01;0.05;5];
options=optimset('largescale','off');
z=fmincon(@opt_x,z0,[],[],[],[],[],[],@con_x,options);
出现:
??? Index exceeds matrix dimensions.
Error in ==> D:\另一种方法求解\a7.m
On line 7 ==> v=v0*exp((r-z(1).^2/2)*T+z(1).*sqrt(T)*x.^1+z(1).*sigmaw*T*rho);
Error in ==> C:\MATLAB6p5\toolbox\matlab\funfun\quadl.m
On line 60 ==> y = feval(f,x,varargin{:}); y = y(:).';
当把a7函数中的GLOBAL中Z去掉的时候,又会出现:
?? Undefined function or variable 'z'.
Error in ==> D:\另一种方法求解\a7.m
On line 7 ==> v=v0*exp((r-z(1).^2/2)*T+z(1).*sqrt(T)*x.^1+z(1).*sigmaw*T*rho);
Error in ==> C:\MATLAB6p5\toolbox\matlab\funfun\quadl.m
On line 60 ==> y = feval(f,x,varargin{:}); y = y(:).';
哪位高手帮忙看看啊,感激不尽,论文中的关键部分程序调试了两天了都不知道问题在哪里,看了很多相关问题的帖子,可是问题都不对,:'( 快崩溃了,不知道是quadl函数使用的问题还是fimincon函数的使用问题。
:'( :'( |
|