根据解的存在情况,线性方程可以分为:有唯一解的恰定方程组,解不存在的超定方程组,有无穷多解的欠定方程组。
对于方程组Ax=b,A为n×m矩阵,如果A列满秩,且n>m。则方程组没有精确解,此时称方程组为超定方程组。
线性超定方程组经常遇到的问题是数 据的曲线拟合。对于超定方程,在MATLAB中,利用左除命令(x=A\b)来寻求它的最小二乘解;
还可以用广义逆来求,即x=pinv(A),所得的解 不一定满足Ax=b,x只是最小二乘意义上的解。
左除的方法是建立在奇异值分解基础之上,由此获得的解最可靠;
广义逆法是建立在对原超定方程直接进行 householder变换的基础上,其算法可靠性稍逊与奇异值求解,但速度较快;
独立方程个数大于独立的未知参数的个数的方程,称为超定方程,在matlab里面有三种方法求解,一是用伪逆法求解,x=pinv(A)*b,二是用左除法求解,x=A\b,三是用最小二乘法求解,
x=lsqnonneg(A,b)
(3)矩阵求逆
行数和列数相等的矩阵称为方阵,只有方阵有逆矩阵。方阵的求逆函数为:
B=inv(A)
该函数返回方阵A的逆阵。如果A不是方阵或接近奇异的,则会给出警告信息。
在实际应用中,很少显式的使用矩阵的逆。在MATLAB中不是使用逆阵x=inv(A)*B来求线性方程组Ax=B的解,
而是使用矩阵除法运算x=A\B来求解。因为MATLAB设计求逆函数inv时,采用的是高斯消去法,而设计除法解线性方程组时,
并不求逆,而是直接采用高斯消去法求解,有效的减小了残差,并提高了求解的速度。
因此,MATLAB推荐尽量使用除法运算,少用求逆运算。
(4)除法运算
在线性代数中,只有矩阵的逆的定义,而没有矩阵除法的运算。而在MATLAB中,定义了矩阵的除法运算。
矩阵除法的运算在MATLAB中是一个十分有用的运算。根据实际问题的需要,定义了两种除法命令:左除和右除。
矩阵左除:
C=A\B或C=mldivide(A,B)
矩阵右除;
C=A/B或C=mrdivide(A,B)
通常矩阵左除不等于右除,
如果A是方阵,A\B等效于A的逆阵左乘矩阵B。也就是inv(A)*B。
如果A是一个n*n矩阵,B是一个n维列向量,或是有若干这样的列的矩阵,则A\B就是采用高斯消去法求得的方程AX=B的解。
如果A接近奇异的,MATLAB将会给出警告信息。
如果A是一个m*n矩阵,其中m不等于n,B是一个m维列向量,或是由若干这样的列的矩阵,
则X=A\B是不定或超定方程组AX=B的最小二乘解。通过QR分解确定矩阵A的秩k,方程组的解X每一列最多只有k个非零元素。
如果k,方程的解是不唯一的,用矩阵除法求得的最小二乘解是这种类型解中范数最小的。
matlab中关于左除的定义:
mldivide(A,B) and the
equivalent A\B perform matrix
left division (back
slash). A and B must
be matrices that have the same number of rows, unless A is a
scalar, in which
case A\B performs element-wise
division — that
is, A\B = A.\B.
If A is a square
matrix, A\B is roughly the same
as inv(A)*B, except it is computed in a different
way. IfA is
an n-by-n matrix
and B is a column vector
with n elements, or a matrix with
several such columns, then X =
A\B is the solution to the
equation AX = B.
A warning message is displayed
if A is badly scaled or nearly
singular.
If A is
an m-by-n matrix
with m ~=
n and B is a
column vector with m components,
or a matrix with several such columns, then X =
A\B is the solution in the least squares sense to
the under- or overdetermined system of
equations AX = B.
In other
words, X minimizes norm(A*X
- B), the length of the
vector AX -B. The
rank k of A is
determined from the QR decomposition with column pivoting. The
computed solution X has at
most k nonzero elements per
column. If k < n, this is usually not the same
solution asx = pinv(A)*B, which returns a least squares
solution.
注:在不理解矩阵分解的条件下,使用左除求解超定方程的解。
A*X=B, A:M*N, M>N,
B-N*1;
X=A\B;
B/A大体等效于B*inv(A) (B右乘A的逆阵),但在计算方法上存在差异,更精确的,B/A=(AT\BT)T。
输入:A=[1 2 3;4 5 7;4 7 9];B=[1 3
7;3 5 7;8 5 1];
矩阵左除。输入:A\B
显示:ans =
-0.7500 -0.5000 -2.0000
5.7500 -3.5000 -18.0000
-3.2500 3.5000 15.0000
矩阵右除。输入:A/B
显示:ans =
-0.0217 0.4565 -0.0435
0.6522 0.3043 0.3043
-0.5652 1.8696 -0.1304