超定方程用最小二乘法求解
-
根据解的存在情况,线性方程可以分为
:
有唯一解的恰定方程组,
解不存在的超定方程组,
有无穷多解的欠定方程组。
对于方程组
Ax=b
,
A
为
n×m
矩阵,如果
A
列满秩,且
n
>m
。则方程组没有精
确解,此时称方程组为超定方程组。
p>
线性超定方程组经常遇到的问题是数
<
/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
不是方阵或接近奇异的,则会给出警告
信息。
在实际应用中,很少显式的使用矩阵的逆。在
MATLAB
中不是使用逆阵
x=in
v(A)*B
来求线性方程组
Ax=B
的解,
而是使用矩阵除法运算
x=A
B
来求解。因为
MATLAB
设计求逆
函数
inv
时,
采用的是高斯消去法,
而设计除法解线性方程组时,
并不求逆,
而是直接采用高斯消去法求解,
有效的减小了残差,
并提高
了求
解的速度。
因此,
MATLAB
推荐尽量使用除法运算,少用求逆运算。
(4)
除法运算
在线性代数中,
只有矩阵的逆的定义
,
而没有矩阵除法的运算。
而在
MAT
LAB
中,定义了矩阵的除法运算。