一、MATLAB求解优化问题的主要函数及其输入输出变量
二、投资的收益和风险实例
5、模型1的求解
%model sm22_1 求解线性规划问题
clc,clear
a=0;
hold on
while a<0.5
c=[-0.05,-0.27,-0.19,-0.185,-0.185];
c=c';
A=[zeros(4,1),diag([0.025,0.015,0.055,0.026])]; %diag(v,k)创建对角阵
b=a*ones(4,1);
Aeq=[1,1.01,1.02,1.045,1.065];
beq=1;
LB=zeros(5,1);
[x,Q]=linprog(c,A,b,Aeq,beq,LB); %线性规划
Q=-Q;
plot(a,Q,'*r');
a=a+0.001;
end
xlabel('a'),ylabel('Q');
模型2的求解
%sm22_2.m 主函数
clc,clear
%输入盈利率
%k=input('输入盈利率(<=max(qi)):');
k=0.05;
range=[0.05,0.27,0.19,0.185,0.185];
%开始在k可能范围,做盈利与风险的关系图
hold on
while k<=max(range)
%x的初始值,随意设定
x0=ones(5,1)*0.2;
%线性不等式约束
A=[-0.05,-0.27,-0.19,-0.185,-0.185];
b=-k;
%线性等式约束Aeq*X = beq
Aeq=[1,1.01,1.02,1.045,1.065];
beq=1;
%边界约束条件Lb <= X <= Ub
Lb=zeros(5,1);
Ub=[];
[x,fval,maxfval,exitflag,output]=fminimax(@sm22_2Fun,x0,A,b,Aeq,beq,Lb,Ub);
plot(k,maxfval,'*r');
k=k+0.01;
end
xlabel('k'),ylabel('fvalmax');
%sm22_2的目标函数sm22_2Fun.m
function f=sm22_2Fun(x)
q=[0,2.5,1.5,5.5,2.6];
%返回各自的目标函数
for i=1:5
f(i)=x(i)*q(i);
end