文档

lsqminnorm

线性方程的最小范数最小二乘解

语法

X = lsqminnorm(A,B)
X = lsqminnorm(A,B, l)
X = lsqminnorm()___rankWarn)

描述

例子

X = lsqminnorm()一个B返回数组X这就解出了线性方程Ax = b的值最小化规范(*取向).如果这个问题存在几种解万博 尤文图斯决方案,那么lsqminnorm返回最小化的解规范(X)

例子

X = lsqminnorm()一个B托尔的容忍度lsqminnorm用于确定的等级一个

例子

X = lsqminnorm()___rankWarn指定用于显示警告的可选标志一个等级低。您可以使用以前语法中的任何输入参数组合。rankWarn可以“nowarn”(默认)或“警告”

例子

全部折叠

用反斜杠()解一个有无穷多个解的线性方程组。万博 尤文图斯\),lsqminnorm.用解的两个范数比较结果。万博 尤文图斯

当存在无穷个解时万博 尤文图斯,每一个都最小化.反斜杠命令(\)计算一个这样的解决方案,但该解决方案通常不会最小化.解由lsqminnorm最小化不仅规范(*取向),但也规范(x)

考虑一个有一个方程和两个未知数的简单线性系统,.这个系统是欠定的因为方程比未知数少。用反斜杠和来解这个方程lsqminnorm

A = [2 3];B = 8;x_a = A\b
x_a =2×10 2.6667
x_b = lsqminnorm(A,b)
x_b =2×11.2308 - 1.8462

这两种方法得到不同的解,因为反斜杠的目的只是最小化万博 尤文图斯规范(*取向),而lsqminnorm也是为了最小化规范(x).计算这些规范并将结果放入表格中,以便于比较。

S1 = {“反斜杠”“lsqminnorm”};S2 = {“norm_Ax_minus_b”“norm_x”};T = table([norm(A*x_a-b);规范(* x_b-b)]、[规范(x_a);规范(x_b)),“RowNames”s1,“VariableNames”s2)
T =2×2表norm_Ax_minus_b norm_x  _______________ ______ 反斜杠0 2.6667 lsqminnorm 8.8818 e-16 2.2188

该图说明了这种情况,并显示了每个方法返回的解决方案。万博 尤文图斯蓝线表示这个方程的无穷多个解万博 尤文图斯.橙色圆圈表示从原点到解的直线的最小距离,以及由万博 尤文图斯lsqminnorm正好在直线和圆的切点上,说明它是离原点最近的解。

中指定排序计算的容差lsqminnorm可以帮助确定问题的规模,这样随机噪声就不会破坏解决方案。

创建一个秩为5的低秩矩阵和一个右侧向量b

rng默认的再现性%U = randn(200,5);V = randn(100,5);A = u * v ';b = U*randn(5,1) + 1e-4*randn(2,1);

求解线性方程组使用lsqminnorm.计算的范数A *取向x检查溶液的质量。

x = lsqminnorm(A,b);规范(*取向)
Ans = 0.0014
规范(x)
Ans = 0.1741

现在在矩阵中添加少量的噪声一个然后再解线性方程组。噪声影响解向量x线性系统的比例失调。

噪声= A + 1e-12*randn(200,100);xnoise = lsqminnorm(noise,b);范数(噪音*xnoise - b)
Ans = 0.0010
规范(xnoise)
Ans = 1.1217e+08

解差异大的原因是噪声影响了的低秩近似万博 尤文图斯一个.换句话说,lsqminnorm处理对角线上的小值R矩阵在QR中的分解一个比他们更重要。理想情况下,这些在对角线上的小值R应该被当作零来对待。

的对角线元素R矩阵在QR中的分解声音吵醒.大量的对角线元素的数量级为1e-10。

[Q,R,p] = qr(噪声,0);semilogy (abs(诊断接头(R)),“o”

解决这一问题的办法是增加所使用的公差lsqminnorm这是一个低阶近似声音吵醒采用误差小于1e-8的方法进行计算。这使得结果更不容易受到噪声的影响。使用公差的解决方案非常接近原始解决方案x

xnoise = lsqminnorm(noise, b, 1 -8);范数(噪音*xnoise - b)
Ans = 0.0014
规范(xnoise)
Ans = 0.1741
范数(x - xnoise)
Ans = 1.0816e-14

求解一个涉及低秩系数矩阵的线性系统,并打开警告。

创建一个秩为2的3 × 3矩阵。在这个矩阵中,可以通过将前两列相加得到第三列。

A = [1 2 3];4 5 9;[7]
一个=3×31 2 3 4 5 9 6 7 13

找到这个问题的最小范数最小二乘解,在那里等于里的第二列.指定“警告”国旗为lsqminnorm来显示一个警告,如果它检测到一个是低级的。

b = A(:,2);x = lsqminnorm(A,b,“警告”
警告:秩不足,秩= 2,tol = 1.072041e-14。
x =3×1-0.3333 0.6667 0.3333

输入参数

全部折叠

系数矩阵。系数矩阵在左边的线性方程组中表现为Ax = B.系数矩阵可以是满矩阵,也可以是稀疏矩阵。

数据类型:|
复数支持:万博1manbetx是的

输入数组,指定为矢量或矩阵。B在右边的线性方程组中出现为Ax = B.如果B是一个矩阵,那么矩阵中的每一列代表了一个不同的向量。

数据类型:|
复数支持:万博1manbetx是的

等级公差,指定为非负标量。指定容差有助于防止解决方案易受系数矩阵中的随机噪声的影响。默认情况下,lsqminnorm计算托尔的QR分解一个

lsqminnorm的秩一个的对角线元素的个数R矩阵的QR分解[Q,R,p] = qr(A,0)绝对值大于托尔.如果一个k,则函数形成的低阶近似为一个通过乘以第一个k第一个kR.改变容差会影响的低阶近似一个

例子:X = lsqminnorm(A,B,1 -2)

数据类型:

低秩矩阵的警告开关,指定为任意“nowarn”“警告”.指定“警告”为了表明lsqminnorm如果系数矩阵一个是等级不足的。

例子:X = lsqminnorm(A,B,'warn')

提示

  • 最小范数解由lsqminnorm在存在多种解决方案时特别有趣。万博 尤文图斯这个方程Ax = b有很多解决方案万博 尤文图斯一个未确定(行数少于列数)或级别较低。

  • lsqminnorm (A, B, tol)通常比pinv (tol) * B用于计算线性系统的最小范数最小二乘解。万博 尤文图斯lsqminnorm使用完全正交分解(COD)找到的低秩近似一个,而pinv使用奇异值分解(SVD)。因此,的结果pinvlsqminnorm不完全匹配。

  • 对于稀疏矩阵,lsqminnorm使用与密集矩阵不同的算法,因此可以产生不同的结果。

另请参阅

||

在R2017b中引入

这个话题有帮助吗?