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

本文针对n个未知数,大于n个方程组。求解未知数的问题,matlab代码。


一、首先,请注意,本文说的是线性超定方程组,方程组是线性的,不含有未知数的出发以及乘方。

求线性超定方程组,有这么几种方法:

1. 直接法

2. QR分解

3. SVD分解

4. 迭代法

本文首先选用直接法求解线性方程组,计算效率快,运行方便,代码短。


二、以2个未知数,四个方程为例。也可以是n个未知数,大于n个方程组求解。

随意一个方程组:

2x+4y=11

3x-7y=-14

10x-15y=-29

4x+11y=31

上式可写:

A=\begin{bmatrix} 2 \begin{matrix} & \end{matrix}4\\ 3 \begin{matrix} & \end{matrix}-7\\ 10 \begin{matrix} & \end{matrix}-15 \\ 4 \begin{matrix} & \end{matrix}11 \end{bmatrix}

X=\begin{bmatrix} x\\ y \end{bmatrix}

B=\begin{bmatrix} 11\\ -14 \\ -29 \\ 31 \end{bmatrix}

代码如下所示:Matlab

clc;

clear;

close all;

A=[2,4;3,-7;10,-15;4,11];   %方程组系数矩阵

B=[11;-14;-29;31];    %方程组右边的列向量

X=A\B;

运行结果如下所示:

0.8440
           2.4779

matlab能使用左除运算智能选择算法解线性方程组(若无解,则求得的是最小二乘意义下的解);

此外,还可以利用广义逆求解:

程序代码如下所示:

clc;

clear;

close all;

A=[2,4;3,-7;10,-15;4,11];   %方程组系数矩阵

B=[11;-14;-29;31];    %方程组右边的列向量

X=pinv(A)*B;

运行结果也是:

0.8440
           2.4779

广义逆求解也是一个满足最小二乘意义的解。


三、对于左除求解和广义逆求解两个结果,我们来看看残差的2范数是否最小

分别求得两个方法的残差二范数:

norm(B-A*X1)          norm(B-A*X2)

将求得的残差二范数进行相减: 

 norm(B-A*X1)-norm(B-A*X2)

即可得到残差的二范数大小。

可以得出如下结论:

左除求解和广义逆求解超定方程解:两个解都是最小二乘意义下的最优解,不过用广义逆求的解更佳,因为其中0元素较多(即最小二乘意义下的所有解中欧式范数最小的解),但是,左除计算效率较快,矩阵求逆的效率太慢。利用广义逆求解时间花费更长。


四、另外需要知道的是:

最小二乘法求解的是最优解,并不是解析解。只是\begin{Vmatrix} AX-B \end{Vmatrix}^{2}的取最小的时候的最优解。

最小二乘法的英文是The least square method,二乘指的是平方。可以很好的理解最小的定义。


五、选用SVD分解求矩阵的最小二乘解

上述理解来自于https://blog.csdn.net/liyuanbhu/article/details/53240209

svd函数代码的理解来自于:https://blog.csdn.net/qq278672818/article/details/62038635:如下

代码如下:

clc;
clear;
close all; 
A=[2,4;3,-7;10,-15;4,11];%方程组系数矩阵
B=[11;-14;-29;31];%方程组右边的列向量
 
[U,S,V]=svd(A,0);
C=V*(inv(S))*U';   %A的逆
X=C*B;

输出结果X为:

  • 14
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值