先定义一个函数:function y = myinvest(x);y = -[0 0 0 0 0 0 0 ]*x;然后运行命令行(最好新建在另外一个M文件里):clear all;% 这里是告诉你我的思路:设出每年年初的a,d,这样就有4个a, 5个d, b,c固定% X = [a1 a2 a3 a4 b c d1 d2 d3 d4 d5]% 其实就是要求 的正值最大值,就等于是求其负值的最小值,因此用到fmincon函数% max([0 0 0 0 0 0 0 ]*X')% 不等约束,只有c一个A = [0 0 0 0 0 1 0 0 0 0 0]; B = 3;% 相等约束一共五个:下一年年初手中的现金,与上一年年末的结余相等 %a1 a2 a3 a4 b c d1 d2 d3 d4 d5Aeq = [1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1]; Beq = [10 0 0 0 0]';options = optimset('LargeScale', 'off', 'MaxFunEvals', 1e4, 'MaxIter', 1e4);x = fmincon(@myinvest, zeros(11, 1), A, B, Aeq, Beq, 1e-6+zeros(11, 1), [], [], options)解出来的x就是相应的[a1 a2 a3 a4 b c d1 d2 d3 d4 d5] % 第一年砸进去A一笔,不要再投了。 % 第三年砸进B一笔 % 第二年砸进C一笔 % 第一年砸进D一笔,不要再投了。