[q,r]=qr(X) m×n阶矩阵X分解为一个正交方阵q和一个与X同阶的上三角矩阵r的乘积。方阵q的边长为矩阵X的n和m中较小者,且其行列式的值为1。 [q,r]=qr(a) [u,s,v]=svd(X) m×n阶矩阵X分解为三个矩阵的乘积,其中u,v为n×n阶和m×m阶正交方阵,s为m×n阶的对角阵,对角线上的元素就是矩阵X的奇异值,其长度为n和m中的较小者。 [u,s,v]=svd(a) q = -0.1231 0.9045 0.4082 -0.4924 0.3015 -0.8165 -0.8616 -0.3015 0.4082 r = -8.1240 -9.6011 -11.0782 0 0.9045 1.8091 0 0 -0.0000 u = -0.2148 0.8872 0.4082 -0.5206 0.2496 -0.8165 -0.8263 -0.3879 0.4082 s = 16.8481 0 0 0 1.0684 0 0 0 0.0000 v = -0.4797 -0.7767 -0.4082 -0.5724 -0.0757 0.8165 -0.6651 0.6253 -0.4082
说明:
在上表中det(a)=0或det(a)虽不等于零但数值很小接近于零,则计算inv(a)时,其解的精度比较低,用条件数(求条件数的函数为cond)来表示,条件数越大,解的精度越低, MATLAB会提出警告:“条件数太大,结果可能不准确”。
a=[1 2 3;4 5 6;7 8 9]
a =
1 2 3 4 5 6 7 8 9
inv(a)
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 1.541976e-018. ans =
1.0e+016 *
-0.4504 0.9007 -0.4504 0.9007 -1.8014 0.9007 -0.4504 0.9007 -0.4504
2. 矩阵和数组的算术运算
(1) 矩阵和数组的加+、减运算-
? A和B矩阵必须大小相同才可以进行加减运算。
? 如果A、B中有一个是标量,则该标量与矩阵的每个元素进行运算。 (2) 矩阵和数组的乘法*运算
? 矩阵A的列数必须等于矩阵B的行数,除非其中有一个是标量。
? 数组的乘法运算符为“.*”,表示数组A和B中的对应元素相乘。A和B数组必须大小相同,除非其中有一个是标量。
x1=[1 2;3 4;5 6]; x2=eye(3,2)
x2 =
1 0 0 1 0 0
x1+x2
%矩阵相加
ans =
2 2 3 5 5 6
x1.*x2
%数组相乘
ans =
1 0 0 4 0 0
x1*x2
%矩阵相乘x1列数不等于x2行数
??? Error using ==> *
Inner matrix dimensions must agree.
x3=eye(2,3)
x3 =
1 0 0 0 1 0
x1*x3
%矩阵相乘
ans =
1 2 0 3 4 0 5 6 0
(3) 矩阵和数组的除法
? 矩阵运算符为“\\”和“/”分别表示左除和右除。 A\\B=A-1*B A/B=A*B-1。
其中:A-1是矩阵的逆,也可用inv(A)求逆矩阵。 ? 数组的除法运算表达式
“A.\\B”和“A./B”,分别为数组的左除和右除,表示数组相应元素相除。 A和B数组必须大小相同,除非其中有一个是标量。
?2x1?x2?3x3?5?【例2.12】已知方程组?3x1?x2?5x3?5,用矩阵除法来解线性方程组。
?4x?x?x?923?1解:将该方程变换成AX=B的形式。
其中:
?2?13??A??31?5??,B???4?11???5??5??? ??9?? A=[2 -1 3;3 1 -5;4 -1 1]
A =
2 -1 3 3 1 -5 4 -1 1
B=[5;5;9]
B = 5 5 9 X=A\\B
X = 2 -1 0
? 在线性方程组A*X=B中,m×n阶矩阵A的行数m表示方程数,列数n表示未知数
的个数。
? n=m,A为方阵,A\\B=inv(A)*B。
? m > n,是最小二乘解,X=inv(A’*A)*(A’*B)
? m < ,则是令X中的n-m个元素为零的一个特殊解。X=inv(A’*A)*(A’*B) (4) 矩阵和数组的乘方
? 矩阵乘方的运算表达式为“A^B”,其中A可以是矩阵或标量。 当A为矩阵,必须为方阵:
B为正整数时,表示A矩阵自乘B次;
B为负整数时,表示先将矩阵A求逆,再自乘|B|次,仅对非奇异阵成立; B为矩阵时不能运算,会出错;
B为非整数时,将A分解成A=W*D/W,D为对角阵,则有A^B=W*D^B/W。 当A为标量:
B为矩阵时,将A分解成A=W*D/W,D为对角阵,则有A^B=W*diag(D.^B)/W。 ? 数组乘方的运算表达式“A.^B”。
当A为矩阵,B为标量时,则将A(i,j)自乘B次;
当A为矩阵,B为矩阵时,A和B数组必须大小相同,则将A(i,j)自乘B(i,j)次; 当A为标量,B为矩阵时,将A^ B(i,j)构成新矩阵的第i行第j列元素。
【例2.13】矩阵和数组的除法和乘方运算。
x1=[1 2;3 4]; x2=eye(2)
x2 =
1 0 0 1
x1/x2
%矩阵右除
ans =
1 2 3 4
inv(x1)
%求逆矩阵
ans =
-2.0000 1.0000 1.5000 -0.5000
x1\\x2
%矩阵左除
ans =
-2.0000 1.0000 1.5000 -0.5000
x1./x2
%数组右除
Warning: Divide by zero.
(Type \ans =
1 Inf Inf 4
x1.\\x2
%数组左除
ans =
1.0000 0 0 0.2500
x1^2
%矩阵乘方
ans =
7 10 15 22
x1^-1
%矩阵乘方,指数为-1与inv相同
ans =
-2.0000 1.0000 1.5000 -0.5000
x1^0.2
%矩阵乘方,指数为小数
ans =
0.8397 + 0.3672i 0.2562 - 0.1679i 0.3842 - 0.2519i 1.2239 + 0.1152i
2^x1
%标量乘方
ans =
10.4827 14.1519 21.2278 31.7106
2.^x1
%数组乘方
ans =
2 4 8 16
x1.^x2
%数组乘方
ans =
1 1 1 4
3. 矩阵和数组的转置 ? 矩阵的转置运算
“A’”表示矩阵A的转置,如果矩阵A为复数矩阵,则为共轭转置。 ? 数组的转置运算
“A.’”表示数组A的转置,如果数组A为复数数组,则不是共轭转置。
【例2.14】矩阵和数组转置运算。
x1=[1 2;3 4]; x2=eye(2); x3=x1+x2*i
x3 =
1.0000 + 1.0000i 2.0000 3.0000 4.0000 + 1.0000i
x3'
%矩阵转置
ans =
1.0000 - 1.0000i 3.0000 2.0000 4.0000 - 1.0000i
x3.'
%数组转置为共轭转置
ans =
1.0000 + 1.0000i 3.0000 2.0000 4.0000 + 1.0000i