文章目录

  • 一、定义及背景
    • 1.1 定义
    • 1.2 问题背景
  • 二、最小二乘法
    • 2.1 定义
    • 2.2 矩阵解法推导
  • 三、Matlab实现
    • 3.1 Matlab命令
    • 3.2 实例
      • 3.2.1 理论求解
      • 3.2.2 Matlab求解

(本文PDF版,关注公众号–回复 “002” 自取哦~)

一、定义及背景

1.1 定义

超定方程组: 方程个数大于未知量个数的方程组,不存在解析解,寻求最小二乘解;

恰定方程组: 方程个数等于未知量个数的方程组,存在唯一解析解;

欠定方程组: 方程个数小于未知量个数的方程组,存在无穷多解,寻求一个基本解。

要注意的是,定义中说的 “方程个数” 必须基于方程组中任意两个方程不等价的大前提,即不能存在类似于 x+y=1x+y=1x+y=1 和 2x+2y=22x+2y=22x+2y=2 的两个方程。也就是说,如果将方程组写成向量形式 AX=bAX=bAX=b,要保证该方程组的系数矩阵 AAA 列满秩。

可以从行列式的角度理解上述几种方程组的定义,若方程组的系数矩阵 AAA 是 n×mn×mn×m 的矩阵,且 AAA 列满秩,那么对于恰定方程组有 n=mn=mn=m;对于超定方程组有 n>mn>mn>m;对于欠定方程组有 n<mn<mn<m。其中 nnn 为方程组个数,mmm 为未知量个数。

1.2 问题背景

给定一个点集合,要求对该集合进行曲线拟合,但一般情况下,很难保证拟合到的结果曲线可以同时经过集合的所有点。也就是说,给定的条件(即该点集合)过于严格,导致解析解(即保证所有点都经过的曲线)不存在。对于这种无法完全满足给定条件的情况下,通常使用最小二乘法求解一个最接近的解。

曲线拟合是最小二乘法要解决的问题,本文的超定方程实际上也是 最小二乘法 要解决的问题。

二、最小二乘法

2.1 定义

最小二乘法(LS, Least Square)又称最小平方法,是一种数学中的优化方法,它试图找到一组估计值,使得实际值和估计值尽可能地相似,其相似性是用误差的平方和来评价的。也就是说,最小二乘法的本质是计算最优解,使得估计值和实际值误差的平方和最小。

若存在一组观测数据 (xi,yi)(x_{i}, y_{i})(xi​,yi​),通过作图观察到这组数据呈明显的线性关系,那么我们可以用如下关系式对这组观测数据进行拟合:
f(x)=kx+bf(x)=kx+b f(x)=kx+b
    上述线性方程就是基于该组观测数据建立的数学模型,进一步要解决的问题是求解方程参数 k,bk, bk,b 。基于 “误差的平方和最小” 的准则,求解一组参数使得如下的目标函数最小,即可以求得方程的最小二乘解:
L=∑i=1N(yi−f(xi))2L =\sum_{i=1}^{N}(y_i-f(x_i))^2 L=i=1∑N​(yi​−f(xi​))2

对于以上目标函数的求解,理论上可以用导数法、几何法,工程上可以用梯度下降法。本文将在下章节以线性回归为例,使用矩阵法对最小二乘解进行公式推导。

2.2 矩阵解法推导

线性回归的因变量是自变量的线性组合,其定义式可以表示为:
h(x1,x2,...,xn)=θ0+θ1x1+...+θn−1xn−1h(x_1, x_2, ..., x_n) = \theta_0+\theta_1x_1+...+\theta_{n-1}x_{n-1} h(x1​,x2​,...,xn​)=θ0​+θ1​x1​+...+θn−1​xn−1​
其中,θ\thetaθ 为参数,xi(i=0,1,...n−1)x_i\space (i=0,1,...n-1)xi​ (i=0,1,...n−1) 为自变量,hhh 为因变量。

假设有 mmm 个观测样本(即方程个数),每个样本有 nnn 维特征(即未知量个数),将所有观测样本带入线性回归方程则有:
{y1=θ0+θ1x1,1+θ2x1,2+...+θn−1x1,n−1y2=θ0+θ1x2,1+θ2x2,2+...+θn−1x2,n−1...ym=θ0+θ1xm,1+θ2xm,2+...+θn−1xm,n−1\begin{cases} y_1=\theta_0+\theta_1x_{1,1}+\theta_2x_{1,2}+...+\theta_{n-1}x_{1, n-1}\\ y_2=\theta_0+\theta_1x_{2,1}+\theta_2x_{2,2}+...+\theta_{n-1}x_{2, n-1}\\ ...\\ y_m=\theta_0+\theta_1x_{m,1}+\theta_2x_{m,2}+...+\theta_{n-1}x_{m, n-1} \end{cases} ⎩⎨⎧​y1​=θ0​+θ1​x1,1​+θ2​x1,2​+...+θn−1​x1,n−1​y2​=θ0​+θ1​x2,1​+θ2​x2,2​+...+θn−1​x2,n−1​...ym​=θ0​+θ1​xm,1​+θ2​xm,2​+...+θn−1​xm,n−1​​
    若 m>nm>nm>n,则上述线性回归方程就是超定线性方程组,该方程组没有精确解,只能求解其最小二乘解。对该线性回归问题进行建模,可用矩阵法表示为:
H=Xθ\boldsymbol{H}=\boldsymbol{X}\boldsymbol{\theta} H=Xθ
其中,X\boldsymbol{X}X 为自变量构成的矩阵,它是 m×nm×nm×n 的矩阵;θ\boldsymbol{\theta}θ 为要求解的模型参数,它是 n×1n×1n×1 的列向量;H\boldsymbol{H}H 为给定自变量矩阵后的的理论估计向量,它是 m×1m×1m×1 的列向量。

假设 Y\boldsymbol{Y}Y 为观测向量,它也是 m×1m×1m×1 的列向量,由于 X\boldsymbol{X}X 和 Y\boldsymbol{Y}Y 都是已知的,未知的模型参数是 θ\boldsymbol{\theta}θ,则目标函数的矩阵形式可以表示为:
J(θ)=∣∣H−Y∣∣2=∣∣Xθ−Y∣∣2=(Xθ−Y)T(Xθ−Y)J(\theta)=||\boldsymbol{H}-\boldsymbol{Y}||^2=||\boldsymbol{X}\boldsymbol{\theta}-\boldsymbol{Y}||^2=(\boldsymbol{X}\boldsymbol{\theta}-\boldsymbol{Y})^T(\boldsymbol{X}\boldsymbol{\theta}-\boldsymbol{Y}) J(θ)=∣∣H−Y∣∣2=∣∣Xθ−Y∣∣2=(Xθ−Y)T(Xθ−Y)
    该目标函数取得最小值就是导数为 0 的地方,即:
θ=arg⁡min⁡θ∂J(θ)∂θ\boldsymbol{\theta}=\arg\min\limits_{\boldsymbol{\theta}}\frac{\partial J(\boldsymbol{\theta})}{\partial \boldsymbol\theta} θ=argθmin​∂θ∂J(θ)​
(本文不做详细推导,直接利用矩阵微积分中矩阵求导的知识)可得:
∂J(θ)∂θ=2XTXθ−2XTY=0\frac{\partial{J(\boldsymbol{\theta})}}{\partial{\boldsymbol{\theta}}}=2\boldsymbol{X}^T\boldsymbol{X}\boldsymbol{\theta}-2\boldsymbol{X}^T\boldsymbol{Y}=0 ∂θ∂J(θ)​=2XTXθ−2XTY=0
即:
XTXθ=XTY\boldsymbol{X}^T\boldsymbol{X}\boldsymbol{\theta}=\boldsymbol{X}^T\boldsymbol{Y} XTXθ=XTY
若 XTX\boldsymbol{X}^T\boldsymbol{X}XTX 可逆,则 θ\boldsymbol{\theta}θ 的最小二乘解为:
θ=(XTX)−1XTY\boldsymbol{\theta}=(\boldsymbol{X}^T\boldsymbol{X})^{-1}\boldsymbol{X}^T\boldsymbol{Y} θ=(XTX)−1XTY
    注意:线性回归比较简单,可以直接推导出解析解,而且许多非线性的问题也可以转化为线性问题求解,因此线性回归得到了广泛的应用。许多人认为最小二乘法就是指线性回归,但其实线性回归是一种模型,最小二乘法是一种可以用来解决线性回归问题的方法、思想,最小二乘法可以拟合任意函数,线性回归只是其中一种较简单和常用的函数,所以最小二乘法大多以线性回归为例进行讲解。

可以这样快速记忆:最小二乘解就是在等式 Y=Xθ\boldsymbol{Y}=\boldsymbol{X}\boldsymbol{\theta}Y=Xθ 两边都左乘 XT\boldsymbol{X}^TXT。

三、Matlab实现

3.1 Matlab命令

Matlab 中有三种方法求解超定方程组:

① 伪逆法求解:X=pinv(A)×b;

② 左除法求解:X=A\b;

③ 最小二乘法求解:X=lsqnonneg(A, b)。

3.2 实例

求解以下超定方程组的最小二乘解:
{2x1+4x2=113x1−5x2=3x1+2x2=62x1+x2=7\begin{cases} 2x_1+4x_2=11\\ 3x_1-5x_2=3\\ x_1+2x_2=6\\ 2x_1+x_2=7 \end{cases} ⎩⎨⎧​2x1​+4x2​=113x1​−5x2​=3x1​+2x2​=62x1​+x2​=7​
将超定方程组写成矩阵形式:
[243−51221][x1x2]=[11367]\left[ \begin{matrix} 2 & 4\\ 3 & -5\\ 1 & 2\\ 2 & 1 \end{matrix} \right] \left[\begin{matrix} x_1\\ x_2\end{matrix}\right]=\left[\begin{matrix}11\\3\\6\\7\end{matrix}\right] ⎣⎡​2312​4−521​⎦⎤​[x1​x2​​]=⎣⎡​11367​⎦⎤​
对系数矩阵、自变量向量、因变量向量分别做如下定义:
A=[243−51221]X=[x1x2]b=[11367]\boldsymbol{A}=\left[ \begin{matrix} 2 & 4\\ 3 & -5\\ 1 & 2\\ 2 & 1 \end{matrix} \right]\quad \boldsymbol{X}=\left[\begin{matrix} x_1\\ x_2\end{matrix}\right] \quad \boldsymbol{b}=\left[\begin{matrix}11\\3\\6\\7\end{matrix}\right] A=⎣⎡​2312​4−521​⎦⎤​X=[x1​x2​​]b=⎣⎡​11367​⎦⎤​
则有:
AX=b\boldsymbol{A}\boldsymbol{X}=\boldsymbol{b} AX=b

3.2.1 理论求解

最小二乘解满足如下等式:
ATAX=ATb\boldsymbol{A}^T\boldsymbol{A}\boldsymbol{X}=\boldsymbol{A}^T\boldsymbol{b} ATAX=ATb
    若 ATA\boldsymbol{A}^T\boldsymbol{A}ATA 可逆,则 X\boldsymbol{X}X 的最小二乘解为:
X=(ATA)−1ATb\boldsymbol{X}=(\boldsymbol{A}^T\boldsymbol{A})^{-1}\boldsymbol{A}^T\boldsymbol{b} X=(ATA)−1ATb
则有:
[23124−521][243−51221][x1x2]=[23124−521][11367]\left[ \begin{matrix} 2 & 3 & 1 & 2\\ 4 & -5 & 2 & 1 \end{matrix} \right]\left[ \begin{matrix} 2 & 4\\ 3 & -5\\ 1 & 2\\ 2 & 1 \end{matrix} \right]\left[ \begin{matrix} x_1\\ x_2 \end{matrix} \right]=\left[ \begin{matrix} 2 & 3 & 1 & 2\\ 4 & -5 & 2 & 1 \end{matrix} \right]\left[\begin{matrix}11\\3\\6\\7\end{matrix}\right] [24​3−5​12​21​]⎣⎡​2312​4−521​⎦⎤​[x1​x2​​]=[24​3−5​12​21​]⎣⎡​11367​⎦⎤​
则:
{x1=3.0403x2=1.2418\begin{cases} x_1=3.0403\\ x_2=1.2418 \end{cases} {x1​=3.0403x2​=1.2418​

3.2.2 Matlab求解

%% Matlab求解超定方程组
clear; clc; close all; warning off;A = [2, 4; 3, -5; 1, 2; 2, 1];
b = [11; 3; 6; 7];%% 求最小二乘解
X_1 = pinv(A) * b;  % 伪逆法
X_2 = A \ b;  % 左除法
X_3 = lsqnonneg(A, b);  % 最小二乘法

【20220825】【数学基础】用最小二乘法求解超定方程组相关推荐

  1. 用matlab解方程组例子,Matlab求解超定方程组实例

    Matlab求解超定方程组实例 对于超定方程组,特别是非线性方程组,可以用Matlab基于最小二乘算法来进行求解,例如,求解下列方程组: 一个三个未知数,九个方程的非线性方程组: cos(x3)*si ...

  2. 最小二乘以及最小二乘求解超定方程组最优解的推导

    ~~~~ 这里写自定义目录标题 采用求导的方法 采用投影矩阵的方法 举例实现 采用求导的方法 偶尔看到斯坦福吴恩达教授的机器学习第二节课,才明白了最小二乘的的推理过程,下面的推理看不懂的话,推荐去看一 ...

  3. 求超定方程组最小二乘解的三种方法

    目录 1.超定线性方程组与最小二乘解 2.求解超定方程组的三种方法 3.参考链接 1.超定线性方程组与最小二乘解     超定线性方程组:方程的个数大于解个数,方程组是无解的,但是我们可以求得其最小二 ...

  4. 求解线性超定方程组的最小二乘解[n个未知数,大于n个方程组](附代码)

    本文针对n个未知数,大于n个方程组.求解未知数的问题,matlab代码. 一.首先,请注意,本文说的是线性超定方程组,方程组是线性的,不含有未知数的出发以及乘方. 求线性超定方程组,有这么几种方法: ...

  5. 超定方程组最小二乘法(内含代码)

    超定方程组最小二乘法 今天做了一个计算方法的作业,在网上没有找到类似的参考资料,很多同学用Python直接调用库函数来写很方便,但是我认为用c或者c++来写对初学者来说是更大的锻炼: 代码已经调试好了 ...

  6. MATLAB当中线性方程组、不定方程组、奇异方程组、超定方程组的介绍

    系列文章目录 MATLAB绘图函数的相关介绍--海底测量.二维与三维图形绘制 MATLAB求函数极限的简单介绍 文章目录 一.线性方程组 1.1.线性方程组简介 1.2.矩阵的初等变换 1.3.MAT ...

  7. 超定方程组最小二乘matlab,超定方程组的最小二乘解.ppt

    超定方程组的最小二乘解 数 学MATH 第二节 超定方程组的最小二乘解 设方程组Ax=b中, A=(aij)m?n, b是m 维已知向量, x是n 维解向量,当 m>n 即方程组中方程的个数多于 ...

  8. matlab中欠定方程组超定方程组_一篇文章入门大规模线性方程组求解

    前面介绍过主要的线性方程组求解库,参考附录.求解大规模线性方程组是仿真软件求解器的底层技术,求解器时间基本都消耗在方程组求解上.线性方程组的解法比较成熟,方法也有很多,而且不同的方法对应不同类型方程组 ...

  9. matlab中欠定方程组超定方程组_七年级下册第10章:解二元一次方程组(12课时)...

    潍坊初中数学 教师简介 马晓菲,奎文区德润学校教师,奎文区初中数学学科带头人,奎文区立德树人标兵. 微课简介 本课为七年级下册第十章<一次方程组>第二节第1课时,需要学习者掌握一元一次方程 ...

  10. matlab中欠定方程组超定方程组_《数值天气预报》:球坐标系中的基本方程组

    人们是如何预报天气的?目前的预报方法主要有两种:一种是基于由各种探测资料绘制的天气图,结合历史资料进行分析预测:另一种是基于大气方程组,利用数值解法对其进行求解,从而得到未来时刻的大气状态. 后者就是 ...

最新文章

  1. C++ string 详解
  2. JavaScript中的endsWith
  3. golang获取变量地址值和指针变量示例
  4. android黑窗口获取md5_Android获取文件的MD5
  5. 体重 年龄 性别 身高 预测鞋码_【新手扫盲】身高体重性别年龄身体素质影响玩滑板吗?...
  6. Linux 命令之 locate -- 文件查找工具(查找文件/搜索文件)
  7. java 内部编码_Java 中文编码分析
  8. java基本框架代码_Rxjava 源码系列 - 基础框架分析
  9. java死锁怎么用jvm调试_jvm 内存dump、gc查看、线程死锁,jmap、jstack、jstat
  10. linux workon 命令,安装python虚拟运行环境,linux下配置workon切换虚拟环境
  11. Android平台下渗透测试工具大集合
  12. [安全攻防进阶篇] 三.OllyDbg和Cheat Engine工具逆向分析植物大战僵尸游戏
  13. 第三方支付相关知识结构
  14. 菜鸟一枚,请大家多多关照
  15. 对QT5信号与槽的认识
  16. 表白公式计算机,表白公式数学公式简单的方式
  17. Win10 提示WerFault.exe 应用程序错误解决方法(非常规方法)
  18. 全班抽签java程序
  19. 如何合并多段视频素材并添加背景图片
  20. CC1312R低功耗高集成度M4F内核Sub-1G收发芯片

热门文章

  1. 传智黑马java基础学习——day13(static、final、匿名对象、内部类、包、修饰符、代码块)
  2. Oracle全局临时表和私有临时表
  3. 常用工业相机及其SDK
  4. YUV格式的图片查看工具YUView 2.13
  5. 主力用计算机吸筹,通达信主力吸筹指标
  6. excel2007如何增加控件?
  7. 湖州南浔张静江:“满堂花醉三千客,一剑霜寒四十州”
  8. python wifi暴力破解(tk)
  9. 身体健康思维导图模板
  10. ddm模型公式_绝对估值法DDM、DCF模型和RNAV简介