matlab 求特征值的命令,MATLAB自学笔记(九):稀疏矩阵、特征值与特征向量

稀疏矩阵

稀疏矩阵定义:含有大量0元素的矩阵

一个稀疏矩阵包括m*3项元素,其中m是原数组中非零项的个数。其第一列是行下标,第二列是列下标,第三列是非零项的值

储存一个浮点数需要8字节,一个下标值需要4字节,则储存整个矩阵需要16*m个字节

1.稀疏矩阵的存储方式

对于稀疏矩阵,MATLAB仅存储矩阵所有的非零元素的值及其位置

2.稀疏矩阵的生成

利用函数sparse(稀疏)建立一般的稀疏矩阵

sparse(A):由非零元素和下标生成稀疏矩阵A

sparse(m,n):生成一个m*n的所有元素都是0的稀疏矩阵

sparse(u,v,a):生成大小为max(u) * max(v)的稀疏矩阵。其中u和v是整数向量,a是实数或者是复数向量

sparse(u,v,a,m,n):生成一个m*n的稀疏矩阵,(u,v)是对应值a的坐标

spconvert(D):生成一个稀疏矩阵。D有三列,第一列是行下标,第二列是列下标,第三列是非零项的值

full(S):将稀疏矩阵S转换成一个满矩阵

Python

>> s = sparse([12,4,5,5,2],[1,4,5,2,6],[41,532,2,4,6],12,6)

s =

(12,1) 41

(5,2) 4

(4,4) 532

(5,5) 2

(2,6) 6

>> A = [1 0 0 0; 0 9 0 0; 4 0 8 0]

A =

1 0 0 0

0 9 0 0

4 0 8 0

>> S = sparse(A)

S =

(1,1) 1

(3,1) 4

(2,2) 9

(3,3) 8

>> A_1 = full(S)

A_1 =

1 0 0 0

0 9 0 0

4 0 8 0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

>>s=sparse([12,4,5,5,2],[1,4,5,2,6],[41,532,2,4,6],12,6)

s=

(12,1)41

(5,2)4

(4,4)532

(5,5)2

(2,6)6

>>A=[1000;0900;4080]

A=

1000

0900

4080

>>S=sparse(A)

S=

(1,1)1

(3,1)4

(2,2)9

(3,3)8

>>A_1=full(S)

A_1=

1000

0900

4080

spy()函数可以对稀疏矩阵中的非零元素进行图形化显示,采用nnz(S)/prod(size(S))计算稀疏矩阵的非零元素密度

Python

spy(A)

1

spy(A)

利用特定函数建立稀疏矩阵

S = speye(m,n):创建单位稀疏矩阵

S = spones(X):创建非零元素为1的稀疏矩阵

S = sprand(X):创建非零元素为均匀分布的随机数稀疏矩阵

S = sprandn(X):创建非零元素为高斯分布的随机数稀疏矩阵

S = sprandsym(X):创建非零元素为高斯分布的随机数对称稀疏矩阵

S = spdiags(X):创建对角稀疏矩阵

S = spalloc(X):为稀疏矩阵分配空间

3.稀疏矩阵的运算

满矩阵的四则运算法则对稀疏矩阵同样有效,但是返回结果可能是稀疏矩阵或满矩阵。只要参与运算的任一矩阵为满矩阵,则返回结果为满矩阵

稀疏矩阵的数乘与幂计算结果都是稀疏矩阵

特征值与特征向量

1.特征值的定义

设 A 是n阶方阵,如果存在数m和非零n维列向量 x,使得 Ax=mx 成立,则称 m 是矩阵A的一个特征值(characteristic value)或本征值(eigenvalue)。

2.相关函数

eig(A):求包含矩阵A的特征值向量

[X,D] = eig(A):产生一个矩阵A的特征值在对角线上的对角矩阵D和矩阵X,他们的列是相应的特征向量,满足AX = XD。为了得到有更好条件特征值的矩阵,要进行相似变换

[T,B] = balance(A):找到一个相似变换矩阵T和矩阵B,使得他们满足B = T-A·T。B是用命令balance求得的平衡矩阵

eig(A,’nobalance’):不经过平衡处理求得的A的特征值和特征向量,也就会不进行平衡相似变换

eigs(A):返回一个由矩阵A的部分特征值组成的向量,和eig命令一样,但不是返回全部的特征值。 如果不带有参量,则计算出最大的特征值。当计算所有的特征值时,如果矩阵A的特征值不小于6,则计算出6个特征值

eigs(f,n):求出矩阵A的部分特征值。     在使用一个矩阵列的线性运算符时,字符串f中包含的是M文件的文件名,n指定问题的阶次。用这种方法来求特征值比开始就用运算符来求快得多

eigs(A,B,k,sigma):求矩阵A的部分特征值,矩阵B的大小与A相同;若没有给出B = eye(size(A)),那么k就是要计算的特征值得个数;若k没有给出就用小于6的数或者A的秩

condeig(A):返回一个由矩阵A的特征值条件数组成的向量

[V,D,s] = condeig(A):返回[V,D] = eig(A) 和 S = condeig(A)

赞赏作者

喜欢 (4)or分享 (0)

你可能感兴趣的:(matlab,求特征值的命令)