主要内容

lsqnonneg

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

描述

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

最小值 x C x d 2 2 , 在哪里 x 0。

请注意

lsqnonneg仅适用于solver-based方法。两种优化方法的讨论,请参阅首先选择具体问题具体分析或Solver-Based方法

例子

x= lsqnonneg (C,d)返回向量x,最大限度地减少规范(C * x d)x≥0。参数Cd必须是真实的。

例子

x= lsqnonneg (C,d,选项)最小化的优化选项中指定的结构选项。使用optimset设置这些选项。

x= lsqnonneg (问题)发现的最低标准问题描述的结构问题

例子

(x,resnorm,剩余)= lsqnonneg (___)以前,对于任何语法,另外返回值的平方2-norm残留,规范(C * x d) ^ 2,并返回剩余直流* x

(x,resnorm,剩余,exitflag,输出)= lsqnonneg (___)此外,返回一个值exitflag描述的退出条件lsqnonneg,一个结构输出的信息优化过程。

例子

(x,resnorm,剩余,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 =规范(C * x - d)
constrained_norm = 0.9118
unconstrained_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选项);
优化终止。

调用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残留]= 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残留,exitflag,输出,λ)= lsqnonneg (C, d)
x =2×10 0.6929
resnorm = 0.8315
剩余=4×10.6599 -0.3119 -0.3580 0.4130
exitflag = 1
输出=结构体字段:算法的迭代:1:“激活集”的信息:“优化终止。”
λ=2×1-0.1506 - -0.0000

exitflag1,显示一个正确的解决方案。

x (1) = 0和相应的λ(1) 0,显示正确的二元性。同样的,x (2) > 0和相应的λ(2)= 0

输入参数

全部折叠

线性乘数,指定为一个真正的矩阵。代表变量C在这个问题

最小值 x C x d 2 2

兼容性的行数C的长度必须等于d

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

数据类型:

添加剂,指定为一个真正的向量。代表变量d在这个问题

最小值 x C x d 2 2

兼容性的长度d的行数必须等于C

例子:d = (1; 6。5)

数据类型:

优化选项,指定为一个结构等optimset的回报。您可以使用optimset设置或更改这些字段的值在期权结构。看到优化选择参考的详细信息。

显示

显示:

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

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

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

TolX

终止上公差x,一个积极的标量。默认值是10 * eps *规范(C, 1) *长度(C)。看到公差和停止条件

例子:选择= optimset(“显示”、“最后”)

数据类型:结构体

问题的结构,与以下字段指定为一个结构。

字段名 条目

C

真正的矩阵

d

真正的向量

解算器

“lsqnonneg”

选项

选择返回等结构optimset

数据类型:结构体

输出参数

全部折叠

解决方案,作为一个真正的返回向量。的长度x的长度是一样的吗d

平方剩余规范,作为一个非负标量返回。等于规范(C * x d) ^ 2

剩余的,作为一个真正的返回向量。剩余的是d - C * x

原因lsqnonneg停止,返回一个整数。

1

功能融合解决方案x

0

迭代次数超过options.MaxIter

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

迭代

采取的迭代次数

算法

“激活集”

消息

退出消息

拉格朗日乘数法,作为一个真正的返回向量。满足互补条件的条目x ' *λ= 0。这意味着λ(i) < 0x(我)大约是0,λ(我)大约是0x (i) > 0

提示

  • 的问题,d长度超过20,lsqlin可能会比lsqnonneg。当d长度在20日lsqnonneg通常更有效率。

    解决当之间的转换C有更多的行比列(即系统是由多种因素决定的),

    [x, resnorm残留,exitflag,输出,λ)= lsqnonneg (C, d)

    相当于

    [m, n] =大小(C);[x, resnorm残留,exitflag,输出,lambda_lsqlin] =…lsqlin (C, d,黑眼圈(n, n), 0 (n - 1));

    唯一的区别是,对应的拉格朗日乘数法相反的迹象:λ= -lambda_lsqlin.ineqlin

算法

lsqnonneg使用中描述的算法[1]。该算法从一组可能的基向量和计算相关的对偶向量λ。然后选择相对应的基向量的最大价值λ交换的基础上,以换取另一个可能的候选人。这个过程一直持续到λ≤0

选择功能

应用程序

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

引用

[1]劳森,c . l和r·j·汉森。解决最小二乘问题。上台北:普伦蒂斯霍尔》1974。23章,161页。

扩展功能

版本历史

之前介绍过的R2006a