2# ariszheng
我的代码是这样的:
w0 = ones(1,22)./22;
[w, fval] = fmincon(@ftn, x0, [], [], [], [], [], [], 'fcon');
求解方程的函数:w是要求解的,为1x22的向量;U已知,是22x22的向量。
'ftn.m'
function f = ftn(w)
f = w * U * w';
约束条件的函数:
约束是每个w(i)的绝对值<=1,并且w(i)加和为1
'fcon.m'
function [c,ceq] = fcon(w)
N = length(w);
c = [];
for i = 1:N
c = [c, abs(w(1,i))-1];
end;
ceq = sum(abs(w(1,:)))-1;
奇怪的是初始值赋什么值,计算的w就是什么值,也就是说,w=w0. 有没有高人能告诉我哪里出问题了呢。