线性方程的最小范数最小二乘解 您所在的位置:网站首页 MATLAB缩放矩阵 线性方程的最小范数最小二乘解

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

2023-06-06 17:47| 来源: 网络整理| 查看: 265

打开实时脚本

使用反斜杠 (\) 和 lsqminnorm 求解具有无限多个解的线性系统。使用解的 2-范数比较结果。

当 Ax=b 有无限多个解时,每个解都会使 ‖Ax-b‖ 最小化。反斜杠命令 (\) 也可以计算出一个这样的解,但此解通常不会使 ‖x‖ 最小化。lsqminnorm 计算出的解不仅会使 norm(A*x-b) 最小,还会使 norm(x) 最小。

假设有一个简单的线性系统 2x1+3x2=8,其中包含一个方程和两个未知数。该方程组是欠定方程组,因为方程的个数少于未知数的个数。使用反斜杠和 lsqminnorm 求解该方程。

A = [2 3]; b = 8; x_a = A\bx_a = 2×1 0 2.6667 x_b = lsqminnorm(A,b)x_b = 2×1 1.2308 1.8462

两种方法得出不同的解,因为反斜杠只是要使 norm(A*x-b) 最小化,而 lsqminnorm 还要使 norm(x) 最小化。计算这些范数并将结果记录在表中,以便于比较。

s1 = {'Backslash'; 'lsqminnorm'}; s2 = {'norm_Ax_minus_b','norm_x'}; T = table([norm(A*x_a-b); norm(A*x_b-b)],[norm(x_a); norm(x_b)],'RowNames',s1,'VariableNames',s2)T=2×2 table norm_Ax_minus_b norm_x _______________ ______ Backslash 0 2.6667 lsqminnorm 1.7764e-15 2.2188

下图说明了这种情况,并显示每个方法返回的解。蓝线表示方程 x2=-23x1+83 的无限多个解。橙色圆圈表示从原点到解线的最小距离,lsqminnorm 返回的解刚好在这条线与圆圈之间的切点上,指示它是离原点最近的解。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有