第5章 线性代数的基本运算

第5章 线性代数的基本运算
第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

相关主题
相关文档
最新文档