主要内容

lsqnonneg

求解非负线性最小二乘问题

描述

解决了非负最小二乘曲线的拟合问题

最小值 x C x d 2 2 在哪里 x 0.

例子

x= lsqnonneg (Cd返回向量x,最大限度地减少规范(C * x d)X≥0.参数C而且d一定是真的。

例子

x= lsqnonneg (Cd选项使用结构中指定的优化选项最小化选项.使用optimset(优化工具箱)设置这些选项。

x= lsqnonneg (问题求最小值问题,在那里问题是一个结构。

例子

xresnorm剩余= lsqnonneg(___,对于任何前面的语法,额外返回残差的平方2范数的值,规范(C * x d) ^ 2,并返回残差直流* x

xresnorm剩余exitflag输出= lsqnonneg(___另外返回一个值exitflag的退出条件lsqnonneg,和结构输出有关优化过程的信息。

例子

xresnorm剩余exitflag输出λ= lsqnonneg(___额外返回拉格朗日乘数向量λ

例子

全部折叠

计算线性最小二乘问题的非负解,并将结果与无约束问题的解进行比较。

准备一个C矩阵和d问题的向量 最小值 | | C x - d | |

C = [0.0372 0.2869 0.6861 0.7071 0.6233 0.6245 0.6344 0.6170];D = [0.8587 0.1781 0.0747 0.8405];

计算有约束解和无约束解。金宝搏官方网站

x = lsqnonneg(C,d)
x =2×10 0.6929
xunc = C\d
xunc =2×1-2.5627 - 3.1108

所有条目x都是非负的,但是有一些项xunc是负的。

计算两个解的残差的范数。金宝搏官方网站

constrained_norm = norm(C*x - d)
Constrained_norm = 0.9118
unconstrained_norm = norm(C*xunc - d)
Unconstrained_norm = 0.6674

无约束解具有较小的残余范数,因为约束只能增加残余范数。

设置显示选项“最后一次”查看输出lsqnonneg完成。

创建选项。

选项= optimset(“显示”“最后一次”);

准备一个C矩阵和d问题的向量 最小值 | | C x - d | |

C = [0.0372 0.2869 0.6861 0.7071 0.6233 0.6245 0.6344 0.6170];D = [0.8587 0.1781 0.0747 0.8405];

调用lsqnonneg选项结构。

x = lsqnonneg(C,d,options);
优化终止。

调用lsqnonneg用输出得到解、残模和残向量。

准备一个C矩阵和d问题的向量 最小值 | | C x - d | |

C = [0.0372 0.2869 0.6861 0.7071 0.6233 0.6245 0.6344 0.6170];D = [0.8587 0.1781 0.0747 0.8405];

获取解决方案和残留信息。

[x,resnorm,residual] = lsqnonneg(C,d)
x =2×10 0.6929
Resnorm = 0.8315
剩余=4×10.6599 -0.3119 -0.3580 0.4130

验证返回的剩余范数是返回的剩余向量的范数的平方。

规范(残余)^ 2
Ans = 0.8315

请求所有输出参数以检查之后的解决方案和解决方案过程lsqnonneg完成。

准备一个C矩阵和d问题的向量 最小值 | | C x - d | |

C = [0.0372 0.2869 0.6861 0.7071 0.6233 0.6245 0.6344 0.6170];D = [0.8587 0.1781 0.0747 0.8405];

解决这个问题,请求所有输出参数。

[x,resnorm,residual,exitflag,output,lambda] = lsqnonneg(C,d)
x =2×10 0.6929
Resnorm = 0.8315
剩余=4×10.6599 -0.3119 -0.3580 0.4130
Exitflag = 1
输出=带字段的结构:迭代:1算法:'active-set'消息:'优化终止。'
λ=2×1-0.1506 - -0.0000

exitflag1,表示正确解。

X (1) = 0,对应的λ(1) 0,显示正确的对偶性。同样的,X (2) > 0,对应的(2) = 0

输入参数

全部折叠

线性乘法器,指定为实矩阵。表示变量C在这个问题上

最小值 x C x d 2 2 在哪里 x 0.

的行数C必须等于的长度d

例子:C = [1,2;3,-1;-4,4]

数据类型:

附加项,指定为实向量。表示变量d在这个问题上

最小值 x C x d 2 2 在哪里 x 0.

的长度d必须等于的行数C

例子:D = [1;-6;5]

数据类型:

优化选项,指定为结构,如optimset的回报。你可以使用optimset在选项结构中设置或更改这些字段的值。看到设置优化选项有关详细信息。

显示

显示水平:

  • “通知”(默认)仅在函数不收敛时显示输出。

  • “关闭”“没有”不显示输出。

  • “最后一次”只显示最终输出。

TolX

终止公差x,为正标量。默认为10 * eps *规范(C, 1) *长度(C).看到公差和停止标准

例子:options = optimset('Display','final')

数据类型:结构体

问题结构,指定为具有以下字段的结构。

字段名 条目

C

真正的矩阵

d

真正的向量

解算器

“lsqnonneg”

选项

返回的选项结构optimset

数据类型:结构体

输出参数

全部折叠

解,作为实向量返回。的长度x和的长度一样吗d

残差范数的平方,作为非负标量返回。等于规范(C * x d) ^ 2

残差,作为实向量返回。残差是d - C*x

原因lsqnonneg停止,以整数形式返回。

1

函数收敛到一个解x

0

超过迭代次数选项。麦克斯特

关于优化过程的信息,作为一个带字段的结构返回:

迭代

迭代次数

算法

“激活集”

消息

退出消息

拉格朗日乘子,作为实向量返回。这些项满足互补条件X '* = 0.这意味着i < 0x(我)大约是0,λ(我)大约是0X (i) > 0

算法

lsqnonneg使用中描述的算法[1].该算法从一组可能的基向量开始,并计算相关的对偶向量λ.然后选择中最大值对应的基向量λ把它从基中换出来换另一个可能的候选。这种情况一直持续到≤0

选择功能

应用程序

优化活动编辑器任务提供了一个可视化界面lsqnonneg

参考文献

劳森,C. L.和R. J.汉森。求解最小二乘问题.新泽西州上马鞍河:普伦蒂斯大厅,1974年。第23章,第161页。

扩展功能

版本历史

R2006a之前介绍

另请参阅

||