矩阵最小二乘法问题求解

这篇具有很好参考价值的文章主要介绍了矩阵最小二乘法问题求解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、超定方程组

超定方程组是指方程个数大于未知量个数的方程组。对于方程组 A x = b Ax=b Ax=b A A A为n×m矩阵,如果R列满秩,且n>m。则方程组没有精确解,此时称方程组为超定方程组。
在实验数据处理和曲线拟合问题中,求解超定方程组非常普遍。比较常用的方法是最小二乘法
如果有向量 x x x使得下式的值达到最小,则称 x x x为上述超定方程的最小二乘解

二、矩阵形式的最小二乘法

最小二乘法问题:
E ( x ) = ∥ A x − b ∥ 2 E(\mathbf{x})=\|\mathbf{A} \mathbf{x}-\mathbf{b}\|^{2} E(x)=Axb2求使 E ( x ) E(\mathbf{x}) E(x)达到最小值时 x x x的值:
E ( x ) = ∥ A x − b ∥ 2 = ( A x − b ) T ( A x − b ) = ( x T A T − b T ) ( A x − b ) = x T A T A x − b T A x − x T A T b + b T b = x T A T A x − ( A T b ) T x − ( A T b ) T x + b T b \begin{array}{l} E(\mathbf{x})=\|\mathbf{A} \mathbf{x}-\mathbf{b}\|^{2} \\ =(\mathbf{A} \mathbf{x}-\mathbf{b})^{T}(\mathbf{A} \mathbf{x}-\mathbf{b}) \\ =\left(\mathbf{x}^{\mathrm{T}} \mathbf{A}^{\mathrm{T}}-\mathbf{b}^{\mathrm{T}}\right)(\mathbf{A} \mathbf{x}-\mathbf{b}) \\ =\mathbf{x}^{\mathrm{T}} \mathbf{A}^{\mathrm{T}} \mathbf{A} \mathbf{x}-\mathbf{b}^{\mathrm{T}} \mathbf{A} \mathbf{x}-\mathbf{x}^{\mathrm{T}} \mathbf{A}^{\mathrm{T}} \mathbf{b}+\mathbf{b}^{\mathrm{T}} \mathbf{b} \\ =\mathbf{x}^{\mathrm{T}} \mathbf{A}^{\mathrm{T}} \mathbf{A} \mathbf{x}-\left(\mathbf{A}^{\mathrm{T}} \mathbf{b}\right)^{\mathrm{T}} \mathbf{x}-\left(\mathbf{A}^{\mathrm{T}} \mathbf{b}\right)^{\mathrm{T}} \mathbf{x}+\mathbf{b}^{\mathrm{T}} \mathbf{b} \end{array} E(x)=Axb2=(Axb)T(Axb)=(xTATbT)(Axb)=xTATAxbTAxxTATb+bTb=xTATAx(ATb)Tx(ATb)Tx+bTb E ( x ) E(\mathbf{x}) E(x) x x x一阶导数为0:
∂ E ∂ x = 2 A T A x − 2 A T b = 0 x = ( A T A ) − 1 A T b \begin{array}{c} \frac{\partial E}{\partial \mathbf{x}}=2 \mathbf{A}^{\mathbf{T}} \mathbf{A} \mathbf{x}-2 \mathbf{A}^{\mathrm{T}} \mathbf{b}=0 \\ \mathbf{x}=\left(\mathbf{A}^{T} \mathbf{A}\right)^{-1} \mathbf{A}^{T} \mathbf{b} \end{array} xE=2ATAx2ATb=0x=(ATA)1ATb这样,求解最小二乘问题只需求解一个线性方程组即可,不再需要像梯度下降那样迭代了。

矩阵求导可以参考:
https://zhuanlan.zhihu.com/p/273729929

对于特殊的 A x = 0 Ax=0 Ax=0型超定方程组:
∂ E ∂ x = 2 A T A x = 0 \frac{\partial E}{\partial \mathbf{x}}=2 \mathbf{A}^{\mathbf{T}} \mathbf{A} \mathbf{x}=0 xE=2ATAx=0通过以下方式获得最小二乘解:
[V,D] = eig(A'*A)
其中D是特征值对角矩阵(特征值沿主对角线降序),V是对应D特征值的特征向量(列向量)组成的特征矩阵,A’表示A的转置。其最小二乘解为V(1),即系数矩阵A最小特征值对应的特征向量就是超定方程组 A x = 0 Ax = 0 Ax=0的最小二乘解。

案例:求单应性矩阵的matlab代码【原文连接】文章来源地址https://www.toymoban.com/news/detail-453290.html

% 返回值 H 是一个3*3的矩阵
% pts1 和 pts2是2*4的坐标矩阵对应特征点的(x,y)坐标
n = size(pts1,2);
A = zeros(2*n,9);
A(1:2:2*n,1:2) = pts1';
A(1:2:2*n,3) = 1;
A(2:2:2*n,4:5) = pts1';
A(2:2:2*n,6) = 1;
x1 = pts1(1,:)';
y1 = pts1(2,:)';
x2 = pts2(1,:)';
y2 = pts2(2,:)';
A(1:2:2*n,7) = -x2.*x1;
A(2:2:2*n,7) = -y2.*x1;
A(1:2:2*n,8) = -x2.*y1;
A(2:2:2*n,8) = -y2.*y1;
A(1:2:2*n,9) = -x2;
A(2:2:2*n,9) = -y2;

[evec,~] = eig(A'*A);
H = reshape(evec(:,1),[3,3])';
H = H/H(end); % make H(3,3) = 1

到了这里,关于矩阵最小二乘法问题求解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 线性方程组AX=b,AX=0以及非线性方程组的最小二乘解(解方程组->优化问题)

    超定方程组无解是因为方程组包含了过多的约束条件,无法满足所有的约束条件,在这种情况下,方程组的某些方程必然是矛盾的,也就是说,他们描述的条件是不兼容的,无法同时满足。 所以求解超定方程组其实是一个拟合问题,其基本思想是最小化所有方程的误差平方和

    2024年02月08日
    浏览(48)
  • matlab求解方程和多元函数方程组

    核心函数solve 一般形式 S=solve(eqns,vars,Name,Value) ,其中: eqns是需要求解的方程组; vars是需要求解的变量; Name-Value对用于指定求解的属性(一般用不到); S是结果,对应于vars中变量; 单个方程求解 方程:sin(x)=1 代码: 结果: 说明: MATLAB定义方程用的是 == 符号,就是这样

    2024年02月08日
    浏览(44)
  • 线性方程组的求解

    克莱姆法则 求解线性方程组有一种比较简单易行的方法就是用克莱姆法则 通过行列式的计算 以解出方程,下面给出行列式解方程的代码并分析优缺点; 对于一个n元一次方程组,如果可以将其化为n阶行列式就能使用克莱姆法则;例如: 有 D=    用(b1,b2,...bn)T替换D的第一列

    2024年02月05日
    浏览(41)
  • 数值分析——线性方程组求解

    清理磁盘的时候偶然发现大二下数值分析的实验作业还在,本着在丢弃之前可以放在网上以备不时之需的原则,我便发了上来。 分别用直接法、Jacobi迭代法、Gauss-Seidel迭代法求解下列线性方程组AX = b,其中A为五对角矩阵(n=20),b是除第一个分量是1外,其他分量都是0的列向量

    2024年02月05日
    浏览(43)
  • MATLAB-线性方程组求解

    线性方程组是线性代数中的重要内容之一,其理论发展的最为完善。MATLAB中包含多种处理线性方程组的命令,下面进行详细介绍。 对于形如AX=B的方程组来说,假设其系数矩阵A是m×n的矩阵,根据其维数可以将方程组分以下3种情况。 1)若m=n,则为恰定方程组,即方程数等于未知

    2023年04月16日
    浏览(45)
  • 追赶法求解方程组备忘

    本篇内容为数值分析中,用追赶法求解方程组的方法,备忘如下: 1. 原理部分 追赶法求解的矩阵格式一般如下: 如果矩阵 A 存在 doolittle 分解,则计算步骤: 首先需要对矩阵进行 LU 分解,得到两个三对角矩阵 L 和 U。 然后依次求解 Ly=b 和 Ux=y 两个线性方程组即可得到方程组

    2024年02月04日
    浏览(35)
  • MATLAB:方程组的求解

    综合实例应用:方程组的求解 无论工程应用问题,还是数学计算问题,方程组都是解决问题转化的重要途径之一,将复杂问题转化为简单的方程组矩阵求解问题。 利用矩阵分解来求解线性方程组,是工程计算中最常用的计算。 LU分解法是先将系数矩阵A进行LU分解,得到LU=P

    2024年01月19日
    浏览(38)
  • MATLAB 之 线性方程组求解

    在 MATLAB 中,关于线性方程组的解法一般分为两类:一类是直接法,就是在没有舍入误差的情况下,通过有限步的矩阵初等运算来求得方程组的解;另一类是迭代法,就是先给定一个解的初始值,然后按照一定的迭代算法进行逐步逼近,求出更精确的近似解。 线性方程组的直

    2024年02月08日
    浏览(51)
  • matlab使用教程(6)—线性方程组的求解

            进行科学计算时,最重要的一个问题是对联立线性方程组求解。在矩阵表示法中,常见问题采用以下形式:给定两个矩阵 A 和 b,是否存在一个唯一矩阵 x 使 Ax = b 或 xA = b?         考虑一维示例具有指导意义。例如,方程         7x = 21         是否具

    2024年02月14日
    浏览(43)
  • 10种基于MATLAB的方程组求解方法

              线性方程组的求解包括直接法和迭代法,其中迭代法包括传统的高斯消元法,最速下降法,牛顿法,雅克比迭代法,共轭梯度法,以及智能启发式算法求解法和神经网络学习算法,传统算法可以相互组合改进,智能仿生启发式算法包括粒子群算法,遗传算法,模拟

    2024年02月02日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包