cawxy2 发表于 2009-7-2 16:57

用牛顿法求极值点

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,这是为什么,是这个算法有问题吗?用黄金法就不会出现这个问题,但是那样求得的值也是有问题的。
希望高手帮忙看看!
谢谢!

cawxy2 发表于 2009-7-2 21:03

其中是求phi的极大值
页: [1]
查看完整版本: 用牛顿法求极值点