function f=baozhi(x) a=[0.048951049 -0.374407583 0.056338028 0.136094675 0.057777778 0.090510949 -0.330769231 0.357466063 0.75 0.064758497 0.119463087 -0.265420561 0.18019802 0.159701493 0.164835165 -0.135294118 0.132075472 0.234285714 0.184349665 -0.158998808 0.222678718 -0.23086985 0.231262525 -0.008469325 0.285714286 -0.187768852 -0.071410023 0.413732322 0.286477733 0.272063948 0.581395349 0.04607721 0.585697629 0.191658391 0.714913888 0.158660844 -0.140952851 0.477362986 0.463693539 -0.039039039]; %各宗投资收益率 n=0; for k1=1:10for k2=1:10for k3=1:10for k4=1:10 if a(1,k1)*x(1)+ a(2,k2) *x(2)+ a(3,k3)*x(3)+ a(4,k4)>0n=n+1;end end end f=n/10000;n=0; for k1=1:100000 for k2=1: (100000-k1) for k3= 1: (100000-k1-k2)k4=100000-k1-k2-k3mm=[k1,k2,k3]; %投资分配量 mmm=baozhi(mm); %保值率 if mmm>0.95 m=0.085672023 * k1 + 0.061519513 * k2 + 0.121341148 * k3 + 0.303946795 * k4; %组合投资收益 if m>n nnn=mmm; nn=mm; n=m; end end end end nnn %输出最优投资组合下的保值率
晕死,这明显有错误啊,你的a是个行向量,而后面却有a(1,k1)*x(1)+ a(2,k2) *x(2)+ a(3,k3)*x(3)+ a(4,k4),显然不对啊,将a的赋值语句后加一句a=reshape(a,10,4)'; function help1()n=0;for k1=1:100000 for k2=1: (100000-k1) for k3= 1: (100000-k1-k2) k4=100000-k1-k2-k3; mm=[k1,k2,k3]; %投资分配量 mmm=baozhi(mm); %保值率 if mmm>0.95 m=0.085672023 * k1 + 0.061519513 * k2 + 0.121341148 * k3 + 0.303946795 * k4; %组合投资收益 if m>n nnn=mmm; nn=mm; n=m; end end end endend nnn %输出最优投资组合下的保值率 function f=baozhi(x) a=[0.048951049 -0.374407583 0.056338028 0.136094675 0.057777778 0.090510949 -0.330769231 0.357466063 0.75 0.064758497 0.119463087 -0.265420561 0.18019802 0.159701493 0.164835165 -0.135294118 0.132075472 0.234285714 0.184349665 -0.158998808 0.222678718 -0.23086985 0.231262525 -0.008469325 0.285714286 -0.187768852 -0.071410023 0.413732322 0.286477733 0.272063948 0.581395349 0.04607721 0.585697629 0.191658391 0.714913888 0.158660844 -0.140952851 0.477362986 0.463693539 -0.039039039]; %各宗投资收益率 a=reshape(a,10,4)'; n=0; for k1=1:10 for k2=1:10 for k3=1:10 for k4=1:10 if a(1,k1)*x(1)+ a(2,k2) *x(2)+ a(3,k3)*x(3)+ a(4,k4)>0 n=n+1; end end end end end f=n/10000; |
|