有约束线性最小二乘
有约束线性最小二乘问题的数学描述:
其中C、A和Aeq是矩阵,d、b、beq、lb、ub、x为向量。
在MATLAB中用lsqlin函数求有约束线性最小二乘解,具体用法如下:
1.x=lsqlin(C,d,A,b):求解最小二乘意义上的线性系统Cx=d,约束条件为AX<=b.
2.x=lsqlin(C,d,A,b,Aeq,beq):加上等式约束Aeq*x=beq以后求解上面的问题,如果没有等式约束,则令A=[];b=[];
3.x=lsqlin(C,d,A,b,Aeq,beq,lb,ub):为x定义一系列下界lb和上界un,使得总有lb<=x<=ub。
例题:
求解下列问题的最小二乘解。
C = [0.9501 0.7620 0.6153 0.4057
0.2311 0.4564 0.7919 0.9354
0.6068 0.0185 0.9218 0.9169
0.4859 0.8214 0.7382 0.4102
0.8912 0.4447 0.1762 0.8936];
d = [0.0578; 0.3528; 0.8131; 0.0098; 0.1388];
A = [0.2027 0.2721 0.7467 0.4659;
0.1987 0.1988 0.4450 0.4186
0.6037 0.0152 0.9318 0.8462];
b = [0.5251; 0.2026; 0.6721];
lb = -0.1*ones(4,1);
ub = 2*ones(4.1);
Aeq = [];beq = [];b = [];
x=lsqlin(C,d,A,b,Aeq,beq,lb,ub)
求解得到
x = -0.100;-0.100;0.2152;0.3502
参考文献
MATLAB 2010 从入门到精通. 张琨 高思超 毕靖