超定方程用最小二乘法求解

萌到你眼炸
712次浏览
2021年02月13日 22:27
最佳经验
本文由作者推荐

-

2021年2月13日发(作者:专升本报名官网)


根据解的存在情况,线性方程可以分为


:


有唯一解的恰定方程组,




解不存在的超定方程组,




有无穷多解的欠定方程组。





对于方程组


Ax=b



A



n×m


矩阵,如果


A


列满秩,且


n >m


。则方程组没有精


确解,此时称方程组为超定方程组。



线性超定方程组经常遇到的问题是数


< /p>


据的曲线拟合。


对于超定方程,



MATLAB


中,利用左除命令(


x=Ab< /p>


)来寻求它的最小二乘解;



还可以用广 义逆来求,



x=pinv(A),


所 得的解



不一定满足


Ax=b



x


只是最小二乘


意义 上的解。



左除的方法是建立在奇异值分解基础之上,由此获得 的解最可靠;



广义逆法是建立在对原超定方程直接进行


householder


变换的基础上,


其算法可


靠性稍逊与奇异值求解,但速度较快;



独立方 程个数大于独立的未知参数的个数的方程,称为超定方程,在


matlab



面有三种方法求解,



一 是用伪逆法求解,


x=pinv(A)*b,


二是用左除法求解 ,


x=Ab,


三是用最小二乘法求


解< /p>


,


x=lsqnonneg(A,b)



(3)


矩阵求逆




行数和列数相等的矩阵称为方阵,


只 有方阵有逆矩阵


。方阵的求逆函数为:




B=inv(A)



该函数返回方阵


A


的逆阵。如果

A


不是方阵或接近奇异的,则会给出警告


信息。

< p>



在实际应用中,很少显式的使用矩阵的逆。在


MATLAB


中不是使用逆阵


x=in v(A)*B


来求线性方程组


Ax=B


的解,



而是使用矩阵除法运算


x=A B


来求解。因为


MATLAB


设计求逆 函数


inv


时,


采用的是高斯消去法, 而设计除法解线性方程组时,



并不求逆,

而是直接采用高斯消去法求解,


有效的减小了残差,


并提高 了求


解的速度。



因此,


MATLAB


推荐尽量使用除法运算,少用求逆运算。




(4)


除法运算




在线性代数中,


只有矩阵的逆的定义 ,


而没有矩阵除法的运算。


而在


MAT LAB


中,定义了矩阵的除法运算。


-


-


-


-


-


-


-


-