第5章 线性代数的基本运算
111
第5章 线性代数的基本运算
本章学习的主要目的:
1 复习线性代数中有关行列式、矩阵、矩阵初等变换、向量的线性相关性、线性方程组的求解、相似矩阵及二次型的相关知识.
2学会用MatLab 软件进行行列式的计算、矩阵的基本运算、矩阵初等变换、向量的线性相关性的判别、线性方程组的求解、二次型化标准形的运算.
5.1 行列式
5.1.1 n 阶行列式定义
由2n 个元素),,2,1,(n j i a ij =组成的记号
D=
nn
n n n n a a a a a a a a a
2
1
2222111211
称为n 阶行列式.其值是所有取自不同行不同列的n 个元素的乘积n
np 2p 21
p 1a a a 的
代数和,各项的符号由n 级排列n p p p 21决定,即
D=
∑
-n
p
p p n p p p 21n
np
2
p 21
p 1)
21(a a
a
)
1(τ,
其中
∑
n
p
p p 21表示对所有n 级排列求和, ),,,(21n p p p τ是排列n p p p 21的逆序数.
5.1.2 行列式的性质
(1) 行列式与它的转置行列式相等.
(2) 互换行列式的两行(列),行列式变号.
(3) 若行列式有两行(列)完全相同,则此行列式为零.
112 (4) 行列式的某一行(列)中所有的元素都乘以同一数k,等于用数k 乘此行列式. (5) 若行列式有两行(列)元素成比例,则此行列式为零.
(6) 若行列式的某一列(行)的元素是两数的和,则此行列式等于对应两个行列式之和.
即
nn n
n ni n n i i nn n
n ni n n i i nn n
n ni ni n n i i i i a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
21'2
1
'22221'11211212
1
222211121121'2
1
'222221'111211+=+++
(7) 若行列式的某一行(列)的各元素乘以同一数加到另一行(列)对应的元素上去,行列式不变.
(8) 行列式等于它的任一行(列)的各元素与其对应的代数余子式乘积之和,即
)
,,2,1(,0,1
j k n i k i k
i D A a D n
j ij =??
?≠===
∑
=,
或
)
,,2,1(,0,1
i n j k
j k
j D A a D n
ik ij =??
?≠===
∑
=
(9) 设A,B 是n 阶方阵,则 T A A =,A
A n
k
k =,B A AB =,
(10)若A 是n 阶可逆矩阵,则0≠A ,
A
A
11
=
-
(11) 设n 21,,,λλλ 是n 阶方阵A 的特征值,则i
n
A λ1
i =∏=, (12) 设
*A 是
n 阶方阵A 的伴随矩阵,则2
n *1
≥=-n A
A
(13) 几种特殊行列式的计算:
nn
nn
a a a a a a
221122110
0000= ,
nn
nn
n n a a a a a a a a a
221122211211
0=
nn nn
n n a a a a a a a a a
22112
1
222111000=,
1
12n 12
)1(1
222111211)
1(0
0n n n n n n a a a a a a a a a
---=
113
5.1.3 MatLab 计算行列式的命令
det(var) %计算方阵var 的行列式
例1 计算行列式
3
8
3
3
262290432231
----的值
在MatLab 命令窗口输入:
A=[1,-3,2,2;-3,4,0,9;2,-2,6,2;3,-3,8,3] det(A)
执行结果:
A = 1 -3 2 2 -3 4 0 9 2 -2 6 2 3 -3 8 3 ans = -50
例2 计算行列式
d
c b 1
110011001a
---的值,其中a,b,c,d 是参数.
在MatLab 命令窗口输入:
syms a b c d
A=[a,1,0,0;-1,b,1,0;0,-1,c,1;0,0,-1,d] det(A)
执行结果:
A =[ a, 1, 0, 0]
[ -1, b, 1, 0] [ 0, -1, c, 1] [ 0, 0, -1, d]
ans =a*b*c*d+a*b+a*d+c*d+1
例3 求方程
08
8
1
4412211111
3
2=--x
x x 的根.
(1)先求行列式的值
在MatLab命令窗口输入:
syms x
A=[1,1,1,1;1,-2,2,x;1,4,4,x*x;1,-8,8,x^3]
y=det(A)
执行结果:
A =
[ 1, 1, 1, 1]
[ 1, -2, 2, x]
[ 1, 4, 4, x^2]
[ 1, -8, 8, x^3]
y =-12*x^3+48*x+12*x^2-48
(2) 求3次方程的根.
首先通过函数的图形确定根的大致范围,
在MatLab命令窗口输入:
grid on
ezplot(y)
图 1
观察图1,可知3个根大致在-2,0,4附近,下面求精确值, 在MatLab命令窗口输入:
yf=char(y);
g1=fzero(yf,-2)
114
115
g2=fzero(yf,0) g3=fzero(yf,4) 执行结果: g1 = -2 g2 = 1.0000
g3 = 2.0000
可知方程的3个根分别为-2,1,2.
5.1.4用MatLab 实现克拉默法则
(1)克拉默法则
非齐次线性方程组方程组
?????
?
?=+++=+++=+++n n nn n n n n n n b
x a x a x a b x a x a x a b x a x a x a 221
12222212111212111
当其系数行列式0
2
1
2222111211≠=
nn
n n n n a a a a a a a a a D
时,此方程组有唯一解,
且可表示为
D
D x D
D x D
D x n n =
=
=
,,,2211
其中),,2,1(n j D J =是把系数行列式D 中第j 列的元素用方程组右端的常数项代替后
所得到的n 阶行列式,即nn
j n n
j n n n j j j
a a
b a a a a b a a D
1
,1
,1
11,111,111
+-+-=
对于齐次线性方程组
??
???
?
?=+++=+++=+++0
221
122221*********n nn n n n n n n x a x a x a x a x a x a x a x a x a
116 当其系数行列式02
1
2222111211≠=
nn
n n n n a a a a a a a a a D
时,此方程组有唯一零解;当D=0时,方程组有非零解.
(2) 编写函数klm.m 实现用克拉默法则求解非齐次线性方程组.
function x=klm(a,b) %参数a 代表方程组的系数矩阵,列矩阵b 代表方程组的常
数列,
%返回方程组的解
[m,n]=size(a);
if (m~=n)
disp('克拉默法则不适用此方程组的求解!') else
d=det(a); if (d==0)
disp('该方程组没有唯一解!') else
disp('该方程组有唯一解!') for i=1:m e=a; e(:,i)=b; f=det(e); x(i)=f/d; end end end
例4 用克拉默法则解下列方程组: 123412341
2341
2345242
235232110
x x x x x x x x x x x x x x x x +++=??
+-+=-??
---=-??+++=? 操作步骤:
在MatLab 命令窗口输入:
D=[1,1,1,1;1,2,-1,4;2,-3,-1,-5;3,1,2,11];
A=[5;-2;-2;0];
117
klm(D,A) 执行结果:
该方程组有唯一解!
ans = 1 2 3 -1
方程组的解为1,3,2,1x 4321-====x x x 例5 问a 取何值时,齐次方程组
??
?
??=-+=-+=++-0)4(20)6(2022)5(3121321x a x x a x x x x a 有非零解? 根据齐次方程组有非零解,系数行列式为零,用MatLab 操作步骤如下:
在MatLab 命令窗口输入: syms x
A=[5-x,2,2;2,6-x,0;2,0,4-x]; yy=det(A) ezplot(yy,[0,10]) grid on 执行结果: 行列式的值为:
yy = 80-66*x+15*x^2-x^3 作函数yy 的图形,如图2 观察图2,可知根大致在
附近,再输入命令: yf=char(yy); x1=fzero(yf,2) x2=fzero(yf,5) x3=fzero(yf,8) 执行结果: x1 = 2 x2 = 5 x3 = 8
即a 取2,5,或8时,齐次方程组有非零解。
图2
118 5.2 矩阵及其运算
5.2.1 矩阵的定义
由n m ?个数),,2,1;,,2,1(a ij n j m i ==排成的m 行n 列的数表
mn
m m n n a a a a a a a a a
1
1
2222111211
称为m 行n 列矩阵,简称n m ?矩阵.记作
???
???
?
??=mn m m n n a a a a a a a a a A
1
1
2222111211
5.2.2矩阵的运算
设有两个n m ?矩阵)a (ij =A 和)b (ij =B ,则 (1)加法
n
m j i ij )b a (?+=+B A
MatLab 对应求矩阵加法的操作符为”+” (2)数乘 n m )ka (k ij ?=A
MatLab 对应求矩阵数乘的操作符为”*” (3) 矩阵与矩阵相乘
设矩阵)a (ij =A 是s m ?矩阵, )b (ij =B 是n s ?矩阵,则矩阵A 与矩阵B 的乘积是一个n m ?矩阵)c (ij =C ,其中
)
,,2,1;,,2,1(,
b a
c s
1
k kj ik ij n j m i ===
∑=
把此乘积记作C=AB
MatLab 对应求矩阵乘积的操作符为”*” (4)矩阵的转置
119
设矩阵)a (ij =A 是n m ?矩阵,把矩阵A 的行换成同序数的列得到一个m n ?矩阵,叫A 的转置矩阵,记作T A .
在MatLab 对应求矩阵转置的操作符为 “ ’ “ (5)方阵的行列式
设矩阵)a (ij =A 是n n ?矩阵,由A 的元素构成的行列式(各元素的位置不变),称为方阵A 的行列式,记作A 或detA. MatLab 对应求方阵行列式的命令为: det (var) %var 代表待求行列式的方阵 (6)方阵的逆矩阵
设矩阵)a (ij =A 是n n ?矩阵,若有一个n 阶矩阵B,使AB=BA=E,则说矩阵A 可逆,矩阵B 称为A 的逆矩阵.记为1-=A B 逆矩阵的判别定理:
若0≠A ,则矩阵A 可逆,且
*
1
1A
A
A
=
-,其中*A 是矩阵A 的伴随矩阵,由行列式
A
的各个元素的代数余子式ij A 所构成的,
???
???
?
?
?=nn n
n
n n A A A A A A A A A A
212221212111*
.
MatLab 对应求方阵逆的命令为:
inv (var) %var 代表待求逆矩阵的方阵 下面按公式*
1
1A A
A
=
-,用MatLab 编写程序求矩阵的逆:
function y=aij(A,i,j) %求方阵A 元素a ij 的代数余子式A ij ,
C=A; C(i,:)=[];
120 C(:,j)=[];
y=(-1)^(i+j)*det(C);
function y=axing(A) %求方阵A 伴随矩阵*A [m n]=size(A); for i=1:n
for j=1:n
y(i,j)=aij(A,j,i); end end
则方阵A 的逆等于axing(A)/det(A) 例6 设
??????????--=11
1
111
111A ,????
?
??
???--=15
421321
B ,问3AB-2A T
B 是否可逆?若该矩阵可逆求它的
逆.
在MatLab 创建m 文件knf.m 完成该问题的操作: A=[1,1,1;1,1,-1;1,-1,1]; B=[1,2,3;-1,-2,4;0,5,1]; C=3*A*B-2*A'*B; dc =det(C); if dc==0
disp('此矩阵不可逆!')
else
disp('此矩阵可逆!其逆矩阵为:') inv(C) end
在MatLab 命令窗口输入 knf 执行结果:
此矩阵可逆!其逆矩阵为: ans =
-0.3857 0.5143 0.5000 0.0857 -0.1143 0
0.0714 0.0714 0
121
5.3 矩阵的初等变换
5.3.1下面三种变换称为矩阵A 的初等行(列)变换:
(1) 对调i,j 两行(列); (2) 以数0
k
≠乘矩阵A 的第i 行(列)中所有元素;
(3) 把第i 行(列)所有元素的k 倍加到第j 行(列)的元素上去; 用MatLab 实现以上初等行变换: (1) A([i,j],:)=A([j,i],:) (2) A(i,:)=k*A(i,:)
(3) A(j,:)=k*A(i,:)+ A(j,:)
5.3.2 用矩阵初等变换化矩阵为行最简形.
行最简形的特点是:可画出一条阶梯线,线的下方全为0,每个台阶只有一行,台阶数即为非零行的行数,阶梯线的竖线后面的第一个元素为非零元,非零行的第一个非零元为1,且这些非零元所在的列的其他元素都为0. MatLab 对应化矩阵为行最简形的命令为: rref (var) %var 代表待化为行最简形的矩阵
例7 把矩阵????
?
?????-----=34
1
1
2212
1221A 化为行最简形矩阵。
在MatLab 命令窗口输入:
A=[1,2,2,1;2,1,-2,-2;1,-1,-4,-3];
format rat %以分数的形式显示结果 rref(A)
执行结果: ans =
1 0 -
2 -5/
3 0 1 2 4/3 0 0 0 0
5.3.3 初等变换的应用
(1 ) 求矩阵A 的逆矩阵:
把分块矩阵(A,E)经过初等行变换化成(E,B),矩阵B 就是所求矩阵A 的逆矩阵.
122 例8 用初等变换求矩阵
?????
???????----38
3
3
262290432231的逆矩阵.
在MatLab 创建ni.m 函数文件,完成用初等变换求矩阵的逆。 function y=ni(a) da=det(a);
if da==0
disp('此矩阵不可逆!')
else
disp('此矩阵可逆!其逆矩阵为:') [m n]=size(a); e=eye(n); d=rref([a e]); y=d(:,(n+1):2*n); end
在MatLab 命令窗口输入:
A=[1,-3,2,2;-3,4,0,9;2,-2,6,2;3,-3,8,3]; ni(A)
执行结果:
此矩阵可逆!其逆矩阵为:
ans =
-0.5200 -0.0400 -4.0400 3.1600 -0.4800 0.0400 -0.9600 0.8400 0 0 1.5000 -1.0000 0.0400 0.0800 -0.9200 0.6800 (2 ) 求矩阵的秩:
在n m ?矩阵A 中,任取k 行k 列,位于这些行列交叉处的2k 个元素,不改变它们在A 中所处的位置次序而得到的k 阶行列式称为矩阵A 的k 阶子式。 设在矩阵A 中有一个不等于0的r 阶子式D ,且所有的r +1阶子式全等于0,那么D 称为矩阵A 的最高阶非零子式,数r 称为矩阵的秩,记作R(A). 有关矩阵A 的秩的性质:
(a )矩阵A 有一个r 阶子式不为零,则r ≥)(A R ; 矩阵A 所有r 阶子式都等于零,则r ≤)(A R 。 (b )n}min{m,(0n m ≤≤?)A R (c ))
()(A R A R T
=
123
(d )若B A ~,则)()(B R A R =
(e )若P ,Q 可逆,则)()(A R PAQ R =
(f ))()(),()}(),(max {B R A R B A R B R A R +≤≤ (g ))()()(B R A R B A R +≤+
(h ))}(),(min{)(B R A R AB R ≤
(i )若0=??l n n m B A ,则n B R A R ≤+)()( 求矩阵A 秩的方法:
方法1:把矩阵A 经过初等行变换化成行阶梯形,非零的行数就是矩阵的秩. 方法2:MatLab 对应求矩阵秩的命令为: rank (var ) %var 为待求秩的矩阵变量。
例9 设?????
????
???-----=41
4
6
1
351021632305023A ,求矩阵A 的秩,并求A 的一个最高阶非零子式。
在MatLab 命令窗口输入:
A=[3,2,0,5,0;3,-2,3,6,-1;2,0,1,5,-3;1,6,-4,-1,4];
rank(A) rref(A)
执行结果: ans = 3
ans = 1 0 1/2 0 7/2 0 1 -3/4 0 -1/4 0 0 0 1 -2 观察A 的最简形,有3行非零,也可知矩阵A 的秩为3,且最高阶子式可选第1,2,3行第1,2,4列构成的子式。命令为: zishi=A(1:3,[1 2 4]) zishi =
3 2 5 3 -2 6 2 0 5 det(zishi)
ans = -16 %验证该子式不为零 (3 ) 求线性方程组b =AX 的解
定理1:n 元非齐次线性方程组AX =b (i )无解的充分必要条件是),()(b A R A R <;
(ii )有唯一解的充分必要条件是n b A R A R ==),()(;
124 (iii )有无限多解的充分必要条件是n b A R A R <),()(=; 定理2:n 元齐次线性方程组AX =0 (i )有唯一解的充分必要条件是n A R =)(; (ii )有无限多解的充分必要条件是n A R <)(; 求解线性方程组的步骤是:
(i )对于非齐次线性方程组,把它的增广矩阵),(b A B =化成行阶梯形,从B 的行阶梯形可同时看出R(A)和R(B),若)()(B R A R <,则方程组无解。
(ii )若)()(B R A R =,则说明方程组有解,进一步把B 化成行最简形,而对于齐次线性方程组,则把系数矩阵A 化成行最简形。
(iii )设r )()(==B R A R ,把行最简形中r 个非零行的非零首元所对应的未知数取作非自由未知数,其余n -r 个未知数取作自由未知数,并令自由未知数分别等于r n c c c -,,,21 ,由B 的行最简形,即可写出含n -r 个参数的通解。
MatLab 对应求解方程组的方法为:
(i )当系数矩阵A 为方阵,且方程组有唯一解时,AX =b 对应的解为
b
1
-=A
X ,
对应的MatLab 命令为:
X=inv(A)*b 或X=A\b 或Y =rref([A,b]),X=Y(:,n+1)
(ii )对于方程b X n m =?A ,在MatLab 创建函数jfch.m 完成上面求解步骤。 function y=jfch(a,b) [m n]=size(a); c=[a b]; d=rref(c); ra=rank(a); rc=rank(c); if (ra==rc) if (ra==n) y=d(:,n+1); else
d(m+1,:)=1:n+1;
for i=1,ra if (d(i,i)==0) j=i+1;
125
while(d(i,j)==0) j=j+1; end
d(:,[i,j])=d(:,[j, i]); end
end
x=[-d(1:ra,ra+1:n),d(1:ra,n+1)]; x=[x;eye(n-ra,n-ra+1)]; y=x; for i=1:n
y(d(m+1,i),:)=x(i,:); end
disp('the spec ial solution is :') ss=y(:,n-ra+1)'
disp('the basic solution is :') bs=y(:,1:n-ra)' end else
disp('there is no solution') end
例10 分别用三种方法:逆,除法,初等变换(增广矩阵)求齐次和非齐次线性方程组的解。
??
?
?=-+-=-=+-020202432132321x x x x x x x x (1) ???
??
??=-+-=+++=+--=-++0
42212343
2143
2143243
21x x x x x x x x x x x x x x x (2)
(1) 对于方程组(1),先判别系数行列式的值,输入命令: A=[1,-4,2;0,2,-1;-1,2,-1]; det(A) 执行结果:
ans = 0
说明方程组的系数矩阵不可逆,该方程组有无穷多解,调用函数jfch 求解,输入命令: B=zeros(3,1); jfc h(A,B) 执行结果:
ra = 2
the spec ial solution is :
126 ss = 0 0 0 the basic solution is : bs = 0 0.5000 1.0000 ans = 0 0 0.5000 0 1.0000 0
从结果可知系数矩阵的秩为2,方程组的通解为
)(,15.00321为任意常数c c x x x ???
?
??????=?????????? (2) 对于方程组(2),先判别系数行列式的值,输入命令: A=[1,1,3,-1;0,1,-1,1;1,1,2,2,;1,-1,1,-1]; det(A)
执行结果:
ans = 10
说明方程组的系数矩阵可逆,则输入命令: B=[-2;1;4;0];
方法1: X=inv(A)*B 执行结果: X = 1.0000 -1.0000 0.0000 2.0000
方法2: X=A\B 执行结果: X = 1 -1 0
2
方法3: Y=rref([A ,B]); X=Y(:,5)
执行结果: X = 1 -1 0 2
127
例11求下列非齐次方程组的通解。
???
?
???-=+--=-+-=+--21
32130432143214321x x x x x x x x x x x x (3) ?????
?
?=+-+-=+-=--=+-+.0674,522,963,85243214324214321x x x x x x x x x x x x x x (4)
??
?
??=+=+-=-+8
31110232
2421321321x x x x x x x x (5) (1) 对于方程组(3),输入命令: A=[1,-1,-1,1;1,-1,1,-3;1,-1,-2,3];
B=[0;1;-1/2] ; jfc h(A,B) 执行结果: ra = 2
the spec ial solution is :
ss = 0.5000 0.5000 0 0 the basic solution is :
bs = 0 -1 1 0
1 2 0 1 ans = 0 1.0000 0.5000
-1.0000 2.0000 0.5000 1.0000 0 0
0 1.0000 0
从结果可知系数矩阵的秩为2,方程组有无穷多解,通解为: ),(,005.05.010*******
1214321为任意常数
c c c c x x x x ????????????+????????????+????????????-=?????
???????
(2) 对于方程组(4),输入命令: A=[2,1,-5,1;1,-3,0,-6;0,2,-1,2;1,4,-7,6]; B=[8;9;-5;0]; jfc h(A,B) 执行结果: ans = 3
-4
128 -1 1
从结果知方程组有唯一解:
(3)对于方程组(5),输入命令: A=[4,2,-1;3,-1,2;11,3,0]; B=[2;10;8]; jfc h(A,B) 执行结果: there is no solution 说明该方程组无解.
5.4 向量组的线性相关性
5.4.1 定义
给定向量组m a a a A ,,,:21 ,如果存在不全为零的数m k ,,k ,k 21 ,使
0a k a k a k m 2211=+++m , 则称向量组A 是线性相关的,否则称它是线性无关.
设有向量组A,如果在A 中能选出r 个向量r 21,,,a a a ,满足 (i) 向量组r 210,,,:a a a A 线性无关;
(ii) 向量组A 中任意r+1个向量(如果A 中有r+1个向量的话)都线性相关. 那么称向量组A 0是向量组A 的一个最大线性无关向量组,最大无关组所含向量的个数r 称为向量组A 的秩,记作R A.
5.4.2 判别定理
向量组m a a a A ,,,:21 线性相关的充分必要条件是它所构成的矩阵),,,(21m a a a A =
的秩小于向量个数m,向量组线性无关的充分必要条件是R(A)=m.
5.4.3 求向量组的最大线性无关向量组的方法
把向量做成列构成矩阵,对该矩阵实施初等行变换变为行最简形,从而获得最大无关组,可以把不属于最大无关组的列向量用最大无关组表示.
?????
???????--=????????????11434321x x x x
129
例12 判别下列向量组是线性相关还是线性无关?
????
? ??????? ??????? ??-141,012,131 在MatLab 命令窗口输入: A=[-1,2,1;3,1,4;1,0,1]; rank(A) 执行结果: ans = 2
结果说明矩阵A 的秩比3小,所以向量组线性相关.
例13 设矩阵?????
????
???------=97
9
6
3
422644*********A ,求矩阵A 的列向量组的一个最大无关组,并把
不属于最大无关组的列向量组用最大无关组线性表示. 在MatLab 命令窗口输入:
A=[2,-1,-1,1,2;1,1,-2,1,4;4,-6,2,-2,4;3,6,-9,7,9]; rref(A) 执行结果:
ans = 1 0 -1 0 4 0 1 -1 0 3
0 0 0 1 -3 0 0 0 0 0
结果说明向量组的秩为3,列向量组的最大无关组含3个向量,取矩阵A 的第1,2,4列作为列向量组的一个最大无关组,其余向量用最大无关组线性表示为:
213a a a --=, 3215334a a a a -+=
5.5 相似矩阵及二次型
5.5.1 方阵的特征值与特征向量
(1)定义 设A 是n 阶矩阵,如果数λ和n 维非零列向量x 使关系式
x
x λ=A 成立,那么,
这样的数λ称为方阵A 的特征值,非零向量x 称为A 的对应于特征值λ的特征向量. (2) 特征值的性质
设n 阶矩阵)a (ij =A 的特征值为n 21,,,λλλ ,
130 (i)nn 2211n 21a a a +++=+++ λλλ; (ii)A =n 21λλλ (iii)2i λ是2A 的特征值 (iv)当A 可逆时,
i
1
λ是A -1
的特征值.
(v) 相似矩阵就有相同的特征值.
(3)定理1 : 对应不同特征值的特征向量线性无关.
定理2 : n 阶矩阵A 与对角矩阵相似的充要条件是A 有n 个线性无关的特征向量. 定理3: 设A 是n 阶对称阵,则必有正交阵P ,使Λ==-AP P AP P T 1,其中Λ是以A 的n 个特征值为对角元的对角阵.
(4) MatLab 求矩阵特征值与特征向量的命令:
d= eig (A) %返回由矩阵A 的特征值组成的列向量.
[V ,D]=e ig (A) %返回特征值矩阵D 和特征向量矩阵V .特征值矩阵D 是以A 的特征值为对角线的元素生成的对角阵,矩阵A 的第k 个特征值的特征向量是矩阵V 的第k 列向量,即满足A V=VD. 对于实对称矩阵,返回的特征向量矩阵是正交矩阵. (5) 用MatLab 实现矩阵对角化的判别.
根据定理2,方阵A 可对角化的条件是对于方阵A 的每个特征值,其几何重数等于代数重数,首先在MatLab 创建函数文件kdjh.m,实现矩阵可对角化的判别, function y=kdjh(A)
y=1; c =size(A); %获得方阵A 的阶数 if c(1)~=c(2) %判断是否为方阵 y=0; return
end
e=eig(A); %求矩阵的特征值向量 n=length(A); while 1
if isempty(e) return; end
d=e(1);
f=sum(abs(e-d)<10*eps); %求特征值d 的代数重数.
g=n-rank(A-d*eye(n)); %求A-dE 的零空间的秩,即对应特征值的几何重数. if f~=g