用牛顿法求极值点
function g=max_g(Ki,Kt,mu,A,B)g_prev = inf;
g= 0.5;
while (abs(g-g_prev) > 1e-6)
tempi = inv(g*Ki+(1-g)*Kt+4*mu*A);
cKg = -2*mu*tempi*B;
temp = (Kt-Ki)*cKg;
dphi = cKg'*temp/(4*mu);
ddphi = temp'*tempi*temp/(2*mu);
g_prev = g;
g = g-dphi/ddphi;
if (g>=1)
g=1;
break;
elseif (g<=0)
g=0;
break;
end
end
%%目标函数为 phi(g)=-mu*B'*inv(4*mu*A+Kt)*B+b*norm(2*p-ones(1,u))^2-mu*b;其中Kt=g*Ki+(1-g)*Kt;B是n*1维向量,p是1*n维向量,A是n*n维矩阵,mu,b是数。其中g在之间
在多次循环中g的值总是0,这是为什么,是这个算法有问题吗?用黄金法就不会出现这个问题,但是那样求得的值也是有问题的。
希望高手帮忙看看!
谢谢! 其中是求phi的极大值
页:
[1]