主要内容

lsqnonneg.

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

描述

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

X C X - D. 2 2 在哪里 X 0。

例子

X= lsqnonneg(CD.返回载体X这最小化常态(C * X-D)受到约束x≥0.。争论CD.必须是真实的。

例子

X= lsqnonneg(CD.选项最小化结构中指定的优化选项选项。采用优化集(优化工具箱)设置这些选项。

X= lsqnonneg(问题找到最低限度问题, 在哪里问题是一个结构。

例子

[X恢复剩余的] = lsqnonneg(___,对于任何先前的语法,另外返回剩余的平方2-Norm的值,规范(C * X-D)^ 2,并返回残差d-c * x

[X恢复剩余的ExitFlag.输出] = lsqnonneg(___另外返回一个值ExitFlag.这描述了退出条件lsqnonneg.和一个结构输出有关于优化过程的信息。

例子

[X恢复剩余的ExitFlag.输出lambda.] = lsqnonneg(___另外返回拉格朗日乘法器向量lambda.

例子

全部收缩

将非负解压缩到线性最小二乘问题,并将结果与​​不受约束问题的解决方案进行比较。

准备A.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.是消极的。

计算两个解决方案的残差规范。万博 尤文图斯

约束_norm = norm(c * x-d)
约束_norm = 0.9118
uncontraina_norm = norm(c * xunc  -  d)
uncontrow_norm = 0.6674

无约束的解决方案具有较小的残余标准,因为约束只能增加残余标准。

设定展示选择'最后'查看输出时lsqnonneg.完成。

创建选项。

选项= OptimSet('展示''最后');

准备A.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,选项);
优化终止。

称呼lsqnonneg.输出获得溶液,残余标准和残余载体。

准备A.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.完成。

准备A.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,Reseual,ExitFlag,输出,Lambda] = LSQNonneg(C,D)
X =2×10 0.6929
Resnorm = 0.8315
剩余=4×10.6599 -0.3119 -0.3580 0.4130
EXITFLAG = 1
输出=结构与字段:迭代:1算法:'活动集'消息:'优化终止。
lambda =2×1-0.1506 -0.0000

ExitFlag.1,表示正确的解决方案。

x(1)= 0和相应的lambda(1) 0.,显示正确的二元性。相似地,x(2)> 0和相应的lambda(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]

数据类型:双倍的

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

展示

显示级别:

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

  • '离开'要么'没有任何'显示无输出。

  • '最后'显示最终输出。

托克斯

终止宽容X,一个正标量。默认为10 * EPS * NORM(C,1)*长度(C)。看公差和停止标准

例子:选项= OptimSet('显示','最终')

数据类型:塑造

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

字段名称 入口

C

真实矩阵

D.

真正的矢量

求解器

'lsqnonneg'

选项

选项结构如返回优化集

获得a的最简单方法问题结构是从优化应用程序导出问题。

数据类型:塑造

输出参数

全部收缩

解决方案,作为真正的矢量返回。长度X与长度相同D.

平方残余标准,作为非负标量返回。等于规范(C * X-D)^ 2

残余,作为真正的矢量返回。残余是d - c * x

原因lsqnonneg.停止,返回整数。

1

功能融合到解决方案X

0.

超出迭代次数options.maxiter.

有关优化过程的信息,作为具有字段的结构返回:

迭代

采取的迭代人数

算法

'active-set'

信息

退出消息

拉格朗日乘法器,作为真正的矢量返回。条目满足互补条件x'* lambda = 0。这意味着lambda(i)<0什么时候x(i)大约是0., 和lambda(i)大约是0.什么时候x(i)> 0

算法

lsqnonneg.使用描述的算法[1]。该算法从一组可能的基向量开始并计算相关的双向向量lambda.。然后,它选择与最大值相对应的基础载体lambda.将其交换为换取另一个可能的候选人。这持续到lambda≤0.

替代功能

应用程序

优化Live Editor任务提供可视界面lsqnonneg.

参考

[1] Lawson,C. L.和R. J. Hanson。解决最小二乘问题。上部马鞍河,NJ:Prentice Hall。1974年。第23章,p。161。

扩展能力

也可以看看

||

在R2006A之前介绍