lsqlin lambda解释

时间:2014-11-10 15:15:07

标签: matlab optimization

好的,所以我一直在使用lsqlin来解决由下面的矩阵A给出的约束线性最小二乘问题,其中A = M(:,1:end-1)和b = M(:,end),以及Pxyz = [0.5000,0.9000]。

    M =

           -0.9000         0    0.3600
            0.9000         0    1.2600
                 0   -0.9000         0
                 0    0.9000    1.6200

    [X_result,resnorm,residual,exitflag,output,lambda]=...
lsqlin(eye(2),Pxyz, M(:,1:end-1), M(:,end),[],[],[],[],Pxyz,...
optimoptions('lsqlin','Display','off','MaxIter',100));

我的问题是lambda.ineqlin似乎不正确(或者我不知道如何解释)。

从这个问题我怀疑x(第一个变量)被限制为-0.4&lt; = x&lt; = 1.4并且y(第二个变量)被限制为0 <= y <= 1.8,而lambda.ineqlin的结果是:

lambda.ineqlin =

     0
     0
     0
     0

我在这里失踪了什么?

1 个答案:

答案 0 :(得分:0)

我正在回答我自己的问题,因为我认为这可能与某人有关。

lambda表示拉格朗日乘数而不是方程的直接界。在所给出的示例中,函数的全局最大值是X_result = Pxyz,其遵守约束Ax&lt; = b,导致没有活动约束并且因此导致拉格朗日乘数为空。

在另一个视图中,该结果也可以在无约束的线性最小二乘中获得,因为全局最大值遵守约束Ax <= b。