求解线性超定方程组的最小二乘解[n个未知数,大于n个方程组](附代码)
本文针对n个未知数,大于n个方程组。求解未知数的问题,matlab代码。
一、首先,请注意,本文说的是线性超定方程组,方程组是线性的,不含有未知数的出发以及乘方。
求线性超定方程组,有这么几种方法:
1. 直接法
2. QR分解
3. SVD分解
4. 迭代法
本文首先选用直接法求解线性方程组,计算效率快,运行方便,代码短。
二、以2个未知数,四个方程为例。也可以是n个未知数,大于n个方程组求解。
随意一个方程组:
上式可写:
代码如下所示: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元素较多(即最小二乘意义下的所有解中欧式范数最小的解),但是,左除计算效率较快,矩阵求逆的效率太慢。利用广义逆求解时间花费更长。
四、另外需要知道的是:
最小二乘法求解的是最优解,并不是解析解。只是的取最小的时候的最优解。
最小二乘法的英文是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为:
求解线性超定方程组的最小二乘解[n个未知数,大于n个方程组](附代码)相关推荐
- 超定方程的最小二乘解的三维几何解释
原始方程 Ax=bAx = bAx=b,解为 x=A−1bx = A^{-1}bx=A−1b,matlab描述 x = A\b 超定方程乘以 ATA^TAT 变为方阵 ATAx=ATbA^TAx = ...
- 超详细解读:神经语义解析的结构化表示学习 | 附代码分析
在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考. 在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点,时刻紧跟 AI 前沿成果. 点击本文底部的「阅读原文」即刻加入社区 ...
- 超详细!一文告诉你 SparkStreaming 如何整合 Kafka !附代码可实践
来源 | Alice菌 责编 | Carol 封图 | CSDN 下载于视觉中国 相信很多小伙伴已经接触过 SparkStreaming 了,理论就不讲太多了,今天的内容主要是为大家带来的是 Spa ...
- 超详细!一文详解 SparkStreaming 如何整合 Kafka !附代码可实践
来源 | Alice菌 责编 | Carol 封图 | CSDN 下载于视觉中国 出品 | CSDN(ID:CSDNnews) 相信很多小伙伴已经接触过 SparkStreaming 了,理论就不讲 ...
- 求超定方程组最小二乘解的三种方法
目录 1.超定线性方程组与最小二乘解 2.求解超定方程组的三种方法 3.参考链接 1.超定线性方程组与最小二乘解 超定线性方程组:方程的个数大于解个数,方程组是无解的,但是我们可以求得其最小二 ...
- 超定方程组最小二乘matlab,超定方程组的最小二乘解.ppt
超定方程组的最小二乘解 数 学MATH 第二节 超定方程组的最小二乘解 设方程组Ax=b中, A=(aij)m?n, b是m 维已知向量, x是n 维解向量,当 m>n 即方程组中方程的个数多于 ...
- 超定方程的求解、最小二乘解、Ax=0、Ax=b的解,求解齐次方程组,求解非齐次方程组(推导十分详细)
本篇主要介绍的是超定方程组的求解,如果你不想看繁琐的推导过程,你可以直接看红字部分的结论! 1. 齐次线性方程组 Ax = 0 对于方程Ax=0\bm A \bm x = 0Ax=0,在我们实际的使用 ...
- 用matlab解方程组例子,Matlab求解超定方程组实例
Matlab求解超定方程组实例 对于超定方程组,特别是非线性方程组,可以用Matlab基于最小二乘算法来进行求解,例如,求解下列方程组: 一个三个未知数,九个方程的非线性方程组: cos(x3)*si ...
- matlab 线性方程组 最小二乘解,超定方程组的最小二乘解
#include #include #include #define m 4//n #define n 2 void line_fun(double a[n][n],double b[n],doubl ...
最新文章
- 关于 智能指针 的线程安全问题
- 【项目实践】基于Mask R-CNN的道路物体检测与分割(从数据集制作到视频测试)...
- 将某个目录下的所有文件进行压缩
- 倍增时间 倍增...?
- threshold()
- 漫画兔善搞2007-等待爱玛马士基号的垃圾
- 裸考大学英语四级写作核心词汇及模板
- angular移除事件绑定事件绑定_002-js的三种事件绑定方式
- 家庭网络,怎么给每个房间装一个无线路由器?
- static 结构体_C++基础-static
- 等额本金-c语言俩个整数除法
- ADS系列 - 混频器设计 - 混频器原理介绍及仿真1
- 【案例】重庆市金融工作办公室:大数据监测预警非法集资平台
- 读《大秦帝国》第二部
- mysql mtq_GoLang 连接 Mysql 数据库
- Python探索性数据分析
- PHP集群中SESSION共享方案之Redis
- 迪威视讯打造全国网格化管理样板 龙华“织网工程”
- CMDB开发之基础搭建
- C/C++实现循环左移,循环右移