1、第三章 第 1 頁第三章 矩阵的分解(一) 矩阵的特征值与特征向量 (Eigenvalues and EigenVectors)1. 矩阵的特征值与特征向量 解 Ax=x 运算式中的 及其所对应的非零的向量 x , 我们称 / x 为矩阵 A 的特征值与特征向量。 改写原式为 , (A-I) x = 0 , I 是单位矩阵, 我们令 P() = det(A-I) = 0, 则 P()的展开式称为矩阵 A 的特征多项式, 解出矩阵 A 的特征多项式 , 就可得矩阵 A 的所有 eigenvalues 。再将每一个 eigenvalue 代入原式中, 即可求出其相对应的 eigenvectors
2、。例 1 : 解矩阵 A = -9 -3 -16 ; 13 7 16; 3 3 10 的特征值与特征向量。【解 1】 先利用函数 poly() 求出矩阵 A 的特征多项式, 再用 roots()函数 ,求出特征多项式所有的根。A= -9 -3 -16; 13 7 16; 3 3 10 ;poly(A) %利用一个向量来储存此多项式的系数roots(poly(A) ans =1.0000 -8.0000 -44.0000 240.0000ans =10.00004.0000-6.0000 上面输出结果中, 第一个 ans 是 A 的特征多项式的系数, 即 P()32840第二个 ans 是 A
3、的 eigenvalues : 10, 4, -6接着针对某个特征值 , 我们找出其对应之特征向量利用 rref() 函数, 求出 (A-I) 的 row reduced echelon form 或是利用 null() 函数, 求出 (A-I) null space 的基底向量第三章 第 2 頁A = -9 -3 -16; 13 7 16; 3 3 10 ;rref(A - 10*eye(size(A)null(A - 10*eye(size(A) ans =1 0 10 1 -10 0 0ans =0.5774-0.5774-0.5774 上面输出结果中, 第一个 ans 是 的 redu
4、ced row echelon()AIform即 令 , x1320xt30得 为 10 所对应的 eigenvectorsxttt1,第二个 ans 是 null space 的基底向量, 这个基底向量()AI的长度为 1. 上述的解 x, 当取 t=-1 再除以 norm(x), 即可得这个基底向量。依此方法, 将其他的 eigenvectors 求出。【解 2】 使用 matlab 函数 eig(), eig() 有两种不同的输出形式 :eig(A) 只传回 eigenvalues, 而 V,D = eig(A) 则传回 D 是由 eigenvalues 形成的 diagonal mat
5、rix; V 是由 eigenvalues 所对应的eigenvectors 形成的 matrix , 满足 A*V=V*D , 当 V 是 nonsingular时, 则表示矩阵 A 可对角化。A = 1 1 -1; 2 0 1; 1 1 0 ;eig(A) % 传回 eigenvalues 所形成的行向量V, D = eig(A) % D 是由 eigenvalues 形成的 diagonal matrix% V 是由 eigenvalues 所对应的 eigenvectors 形成的 matrix 第三章 第 3 頁ans =1.4142-1.41421.0000V =-0.1913 -
6、0.4619 0.0000-0.7325 0.8446 0.7071-0.6533 -0.2706 0.7071D =1.4142 0 00 -1.4142 00 0 1.0000 在上面的输出结果中, V 的第一行行向量, 为 eigenvalue 1.4142所对应的 eigenvector ; 第二行行向量, 为 eigenvalue -1.4142 所对应的 eigenvector ; 第三行行向量, 即为 eigenvalue 1.000 所对应的 eigenvector。rank(V) %检查 V 的行向量是否线性独立inv(V)*A*V %验证 A 是否对角化 ans =3ans
7、 =1.4142 -0.0000 -0.00000.0000 -1.4142 -0.0000-0.0000 -0.0000 1.0000 从 rank(V) =3, V 的行向量是线性独立, 得知 A 可对角化而且 V-1AV 也几乎近似于 diagonal matrix D .format long %观察数值的准确度inv(V)*A*V ans =1.41421356237309 -0.00000000000000 -0.000000000000000.00000000000000 -1.41421356237310 -0.00000000000000-0.00000000000000 -
8、0.00000000000000 1.00000000000000 第三章 第 4 頁2. 矩阵的对角化Theorem : An n-by-n matrix A is diagonalizable if and only if it has n linearly independent eigenvectors .也就是说 ; 如果 A 有 n 个线性独立的 eigenvectors , 那么矩阵 A就是可以对角化的。此外 , 我们也可证明当特征值不同时, 其所对应的特征向量是线性独立的。从上面的例子, 我们可观察到这个结论。例 : 求出矩阵 A=-28 13 -42; -10 13 -6;
9、19 -7 30 的 eigenvalues -10 13 -6; 19 -7 30V,D=eig(A) A =-28 13 -42-10 13 -619 -7 30V =-0.7570 -0.6667 -0.6667-0.5179 -0.6667 -0.66670.3984 0.3333 0.3333D =3.0000 0 00 6.0000 00 0 6.0000 从上面 D 的结果 eigenvalues are 3, 6, and 6 ; 6 的重根数为 2, 而其对应的 eigenvectors, V 的第二行行向量与第三行行向量, 看起来似乎是一样的 , 并不线性独立, 故矩阵 A
10、 不可以对角化。 若我们观察 V 的秩数(rank), 会发现一个问题:rank(V) ans =3 从 ans =3 , 表示 V 的行向量是线性独立, 与上述看到的结果有异。下面我们使用 format long 的格式注意其数值的变化 .第三章 第 5 頁format long VDformat short %改回原来的格式 V =-0.75697811924511 -0.66666669551571 -0.66666663781762-0.51793239737824 -0.66666662470442 -0.666666708628910.39840953644480 0.333333
11、35955974 0.33333330710693D =3.00000000000014 0 00 5.99999936269826 00 0 6.00000063730158 因为计算误差的结果 Matlab 把 V 的第二, 第三行向量, 视为不同而且线性独立 . 因此我们得到 rank(V) =3 .让我们真正来计算 6 对应的 eigenvectors.V1=rref(A- 6*eye(3) %rref of matrix A-6I v1=null(A- 6*eye(3) V1 =1 0 20 1 20 0 0v1 =0.66670.6667-0.3333 从上面的结果 EigenVa
12、lue 6 的几何重根数(Geometric Multiplicity) = 1,表示其特征向量与零向量形成的向量空间(eigen space)之维度只有 1, 而代数重根数(Algebraic Multiplicity) = 2. 因此, EigenValue 6 必然有一个 2*2 的 Jordan block, 下面我们将说明矩阵的 Jordan form .第三章 第 6 頁3. 矩阵的 Jordan Form 8, p. 358所谓 Jordan block J()是一个上三角方阵, 其主对角上的元素是 , 主对角上面的元素是 1, 其余则全为 0 . 即 1 0 0 J() = 0
13、 1 0 . . . 0 0 0 Theorem : Each p*p matrix A is similar to a matrix J in Jordan form , J=Q-1AQ .with J1 0 0 Q-1AQ = 0 J2 0 0 0 Jk where each Jr is an nr*nr Jordan block and k= k1+ k2+ ks equals thesum of the geometric multiplicities of the distinct eigenvalues 1, 2, s of A. The same eigenvalue may o
14、ccur in different Jordan blocks Jr , but the total number of blocks with that eigenvalue equals its geometricmultiplicity kj , j = 1, 2 , , s . 也就是说 ; 针对某个 eigenvalue 可能出现在不同的 Jordan Block, 但其 Block 的总个数, 等于它的几何重根数 . 而在所有Block 主对角上, 此 eigenvalue 出现的总数, 就是它的代数重根数 . 考虑 nr*nr Jordan block Jr , 其作用在矩阵 Q
15、 的行向量, 若令有影响到的行向量为 Vr1, Vr2, , Vrnr ; 从 AQ=QJ 我们可得到下列关系式 :A Vr1 = r Vr1 and A Vrj = rVrj + Vr,j-1 for j=2, , nr 其中 Vr1 是 r 的 eigenvector, 而 Vrj 则称为 generalized eigenvector .从上个例子中, 我们的第一个 eigenvalue 1=3 所对应的 Jordan block, J(3)=3而 eigenvector 为 V11=V(:,1)=-0.7570 -0.5179 0.3984 , 第二个 2=6 所对应的Jordan b
16、lock , J(6)=6 1 ; 0 6 , 因为它的几何重根数=1; 而代数重根数 =2 .若我们要找出矩阵 Q 的行向量, 则必须找到一个 generalized eigenvector, for第三章 第 7 頁 2=6 .A1=A-6*eye(3); %解(A-6I) x = b, b=2 2 -1 b=2 2 -1; %b is an eigenvector of A with%eigenvalue=6matgv=rref(A1 b) matgv =1.0000 0 2.0000 0.11110 1.0000 2.0000 0.44440 0 0 0 从 matgv 的结果得 (A
17、-6I)x=b=2 2 -1的解, generalized eigenvectors, 为 t*b+0.1111 0.4444 0 若取 t=0, 则得到向量 gv=0.1111 0.4444 0 令 Q=V(:,1) V(:,2) gv ; 我们计算 Q-1AQ 的结果gv=matgv(:,4) ;Q=V(:,1) b gv ;Jd=inv(Q)*A*Q Jd =3.0000 -0.0000 0-0.0000 6.0000 1.00000.0000 0 6.0000 上述的结果说明, 虽然矩阵 A 不可对角化, 但是可相似(similar to)于一个矩阵 Jd, in Jordan For
18、m .例 : 找一个矩阵 A=2 2 -1 ; -1 -1 1; -1 -2 2 的 Jordan Form. 【解】先找出 A 的 eigenvalues 以及其对应的几何重根数与代数重根数 .再找出矩阵 Q 的行向量, 即 eigenvectors / generalized eigenvectors.A=2 2 -1 ; -1 -1 1; -1 -2 2 ;eig(A) ans =1.0000 + 0.0000i1.0000 - 0.0000i1.0000 第三章 第 8 頁为了解上面 ans 复数的部分, 是否为误差值 ? 我们观察其特征多项式poly(A) %检视上面 ans 复数的
19、部分是否为误差值 ans =1.0000 -3.0000 3.0000 -1.0000 从 ans 的结果 , 我们得到矩阵 A 的特征多项式 P()=( -1 )3 , 故其特征值 =1 有代数重根数 3; rref(A-eye(3) ans =1 2 -10 0 00 0 0 我们得到矩阵 A 的特征向量 x, 可写成 x= -2+ = 2 -1 0 + 1 0 1 2 -1 0 , 1 0 1 线性独立, 所以特征值 =1 有几何重根数 2 ; 因此有两个 Jordan blocks, 一个是 1*1 而另一个是 2*2 .令矩阵 Q 的第一个行向量 q1= 1 0 1 , 第二行向量
20、q2 =2 -1 0 +1 0 1 , 则必须找到一个 generalized eigenvector 当做第三行向量 q3 , 所以解 (A-I)x = q 2 =2+ - , 其解为 q3 因为 1 2 -1 (2+ )rref(A-I q2)= 0 0 0 +0 0 0 (2+2) 若要有解, 则势必 = -; 取 =1 , 得 = -1因此 q 2 =1 -1 -1 ,A1= A-eye(3) ; q2 =1 -1 -1 ;rref(A1 q2) ans =1 2 -1 10 0 0 00 0 0 0 我们得 q3 = 1 0 0 and Q = q1 q2 q3 , 检验 Q-1AQ
21、 是否是 Jordan Form ?q1 = 1 0 1 ; q2 = 1 -1 -1 ; q3 = 1 0 0 ;Q =q1 q2 q3 ;inv(Q)*A*Q 第三章 第 9 頁ans =1 0 00 1 10 0 1 从上面的例子我们可见, 若要找出矩阵 Q 使得 Q-1AQ=J, 并不容易; 尤其当矩阵的维度增大时 , 其特征值的代数重根数与几何重根数, 也很可能增大 ; 因此要判断 Jordan Blocks 的形式倍加困难 . 例如下列矩阵 A 2 -1 0 00 2 0 0A= 0 0 2 10 0 0 2 同学可自行检验, A 的特征值只有 2, 其代数重根数是 4 而几何重根
22、数为 2, 所以有两个 Jordan Blocks, 但是无法确定 Block 的大小是 1*1 与3*3, 还是两个 2*2 . 下面的定理5, p. 125可供我们判断 .Theorem: Let A be a n*n matrix andbe a eigenvalue of A. If k is the number ofk*k blocks J(), and k = dim ker(A-I) k , then the following equationsare valid :(a) 1 = 2 1 - 2 ,(b) k = - k-1 + 2 k - k+1 , 1 nk= n ;e
23、lse k=m-1 ;end for j = 1: k % 最多只须做 k 次w = zeros(m,1) ; if A(j+1: m, j) = zeros(length(j+1: m) , 1)x = A(:, j) ;w(j+1: m) = x(j+1: m) ; s = norm(x(j: m) ;if x(j) 0 w(j) = x(j) - s ;else w(j) = x(j) + s ;end ; %if - else第三章 第 17 頁%得到 Householder-vector w 接着计算 y = Hw xy = x ; %设定初值为矩阵 A 的第 j 行向量cst =
24、2 / (w*w) ; y(j) = x(j) - cst* (w*x) * w(j) ;y(j+1 : m) = 0 ; R(1:m, j) = y ; %得到上三角矩阵第 j 行% 计算 Householder matrix Hj 作用在矩阵 A 的结果 for col = j+1 : nx = A(1:m, col) ; A(1:m, col) = x - cst* (w*x) * w ;end ;% 再计算 Q= Hj *Q = Hj *H1 for col = 1 : mx = Q(1:m, col) ; Q(1:m, col) = x - cst* (w*x) * w ;end ;
25、else R(1:m,j)=A(1:m,j) ;end ; %if A(j+1: m, j) = zeros(j+1 : m, 1)end % 外回圈 for if k= m-1for j = m : nR(1:m, j) = A(1:m, j) ; %因为最多只须做 k 次, 所以 copy 其余行向量end end Q= Q ; 下面我们观察一些例子 :例 1. 利用 Householder matrix 分解矩阵 A = 2 -1 3 ; 4 0 3 ; 1 4 2path(path,d:matlabprojmym_file) path 指令必须先执行 , 否则找不到函数; 因此 , 分
26、成不同的 cell 来执行A= 2 -1 3; 4 0 3; 1 4 2 ;Q,R = hsholderqr(A)Q*R %验证是否等于 A Q =0.4364 0.2904 -0.85160.8729 0.0929 0.47900.2182 -0.9524 -0.2129R =4.5826 0.4364 4.36440 -4.0999 -0.75490 0 -1.5435ans =2.0000 -1.0000 3.00004.0000 0.0000 3.00001.0000 4.0000 2.0000 第三章 第 18 頁与 Matlab 的 qr( )函数比较其执行结果q, r = qr(
27、A)q* r q =-0.4364 0.2904 0.8516-0.8729 0.0929 -0.4790-0.2182 -0.9524 0.2129r =-4.5826 -0.4364 -4.36440 -4.0999 -0.75490 0 1.5435ans =2.0000 -1.0000 3.00004.0000 0 3.00001.0000 4.0000 2.0000 我们发现 Q, R 只有正负符号的差别 .例 2. 利用 Householder matrix 分解矩阵A = 1 1 2 3 1; 0 -1 1 3 1; 0 4 0 3 2; 0 1 4 2 1 A = 1 1 2
28、3 1; 0 -1 1 3 1; 0 4 0 3 2; 0 1 4 2 1 ;Q,R=hsholderqr(A)Q*R Q =1.0000 0 0 00 0.2357 -0.2872 0.92840 -0.9428 0.1641 0.29010 -0.2357 -0.9437 -0.2321R =1.0000 1.0000 2.0000 3.0000 1.00000 -4.2426 -0.7071 -2.5927 -1.88560 0 -4.0620 -2.2567 -0.90270 0 0 3.1914 1.2766ans =1.0000 1.0000 2.0000 3.0000 1.000
29、00 -1.0000 1.0000 3.0000 1.00000 4.0000 0.0000 3.0000 2.00000 1.0000 4.0000 2.0000 1.0000 与 Matlab 的 qr( )函数比较其执行结果q, r = qr(A)q* r 第三章 第 19 頁q =-1.0000 0 0 00 -0.2357 -0.2872 -0.92840 0.9428 0.1641 -0.29010 0.2357 -0.9437 0.2321r =-1.0000 -1.0000 -2.0000 -3.0000 -1.00000 4.2426 0.7071 2.5927 1.8856
30、0 0 -4.0620 -2.2567 -0.90270 0 0 -3.1914 -1.2766ans =1.0000 1.0000 2.0000 3.0000 1.00000 -1.0000 1.0000 3.0000 1.00000 4.0000 0.0000 3.0000 2.00000 1.0000 4.0000 2.0000 1.0000 同样的, 我们发现 Q, R 只有正负符号的差别 . (3) By rotation matrices一个 rotation matrix 是 p-by-p 的矩阵除了第(k,k), (k,n), (n,k)与(n,n)的元素有特别定义外其余与单位
31、矩阵同, 如下列 :rk k = rn n = cosRk n() = rk n = sin , rn k = -sinri i = 1 for i k and i nrI j = 0 for all other entries 我们要选取适当的 , 使得新矩阵 A1=Rp q()A 在(p,q)的元素为 0, pq依此方式 , 经由一连串的 rotation matrices R(1), R(2), ,使得 R(m) R(2) R(1)A 为一个 upper triangular matrix .例 : 找一个 Rk n()使得 Rk n() A 是上三角矩阵 , A= 1 1 20 0 1
32、0 1 4 1 0 0我们取 R3 2() = 0 cos -sin0 sin cos 1 1 2得到 R3 2()A = 0 -sin cos- 4 sin0 cos sin+ 4 cos 第三章 第 20 頁令 =/ 2 , 即 cos= 0 , 使得 1 1 2R3 2()A = 0 -1 -40 0 1 是上三角矩阵 .事实上, 同学可发现 :矩阵 A1=Rp q()A 与矩阵 A 的差别, 仅在第 p, q 两列向量, 其余皆同 .第 q 列向量成为 Aq1 cos A q 2 cos Aq q cos Aq p cos . . . Aq n cos- Ap1 sin - Ap2 s
33、in - Ap q sin - Ap p sin - Ap n sin 第 p 列向量成为 Aq1 sin Aq 2 sin A q q sin Aq p sin . . . Aq n sin+ Ap1 cos +Ap2 cos +A p q cos +Ap p cos + Ap n cos 令第(p, q)元素为 0, 即 Aq q sin+A p q cos= 0 ,因为 A p q 0 , cos= - Aq q /Ap q sin 与 cos 2+ sin2 = 1 可解得 sin = 1/(1+t 2) , where t = - (Aq q /Ap q ) 而后得 cos= t /
34、 (1+t 2) 所以矩阵 A1=Rp q() A 的第 q 列向量 与第 p 列向量, 皆可得 .而且 A2=Ri j()A1, Ri j() 作用在 A1 的结果并不影响 A1(p,q)=0 .经一序列相同的步骤, 我们就可得上三角矩阵 .当原矩阵 A 下三角部份, 仅有少数个非零的元素, 如 tri-diagonal matrix利用 rotation matrices 得到上三角矩阵, 是不错的方法 .以下为矩阵 A 的 QR 分解之 m-file 函数path(path, d:matlabprojmym_file) %先说明寻找函数的路径type rotateqr.m functio
35、n Q,R = rotateqr(A)% m-file : c:mym_filerotateqr.m , 档案名称与函数名称一样% Function : A=QR decomposition by rotation matrices% Given an m-by-n matrix A , obtain an m-by-m orthogonal第三章 第 21 頁% matrix Q , and an m-by-n upper triangular matrix R , % where Q=R1 R2.Rj of at most j rotation matrices Ri .% (m 2 )%
36、 m,n = size(A) ; R= A ; Q= eye(m) ; U=Q ; %设定初值%逐行处理矩阵 A 的行向量 if m nk= n ;else k=m-1 ;end for q = 1: k % 外回圈最多只须做 k 次for p = q+1 : mif A(p, q) = 0 t = - A(q, q) / A(p, q) ;sinn = 1/ sqrt(1+t2) ; cosn = t* sinn ; %计算 RR(q, 1:n) = cosn*A(q, 1:n) - sinn*A(p, 1:n) ;R(p, 1:n) = sinn*A(q, 1:n) + cosn*A(p,
37、 1:n) ;A=R;%计算 QU(q, 1:m) = cosn*Q(q, 1:m) - sinn*Q(p, 1:m) ;U(p, 1:m) = sinn*Q(q, 1:m) + cosn*Q(p, 1:m) ;Q=U;end % if A(p.q) =0end % 内回圈 for end % 外回圈 forQ=Q ; 例 1. 利用 rotation matrix 分解矩阵 A = 2 -1 3 ; 4 0 3 ; 1 4 2A=2 -1 3; 4 0 3; 1 4 2 ;Q, R = rotateqr(A) Q*R %验证 Q*R=A Q =-0.4364 0.2904 0.8516-0.
38、8729 0.0929 -0.4790-0.2182 -0.9524 0.2129R =-4.5826 -0.4364 -4.36440 -4.0999 -0.75490 -0.0000 1.5435ans =2.0000 -1.0000 3.00004.0000 0.0000 3.00001.0000 4.0000 2.0000 从 ans 的结果, 我们分解 A=Q*R 成功 .第三章 第 22 頁例 2. 利用 rotation matrix 分解 tri-diagonal 矩阵 A 6 1 0 0 A = 2 -5 3 0 0 -1 3 10 0 4 6 A=6 1 0 0; 2 -5
39、 3 0; 0 -1 3 1; 0 0 4 6 ; Q,R = rotateqr(A) Q*R Q =-0.9487 0.3102 -0.0315 0.0526-0.3162 -0.9307 0.0944 -0.15790 -0.1939 -0.5034 0.84200 0 -0.8583 -0.5131R =-6.3246 0.6325 -0.9487 00 5.1575 -3.3737 -0.19390 0 -4.6603 -5.65330 0 0 -2.2366ans =6.0000 1.0000 0.0000 0.00002.0000 -5.0000 3.0000 -0.00000 -
40、1.0000 3.0000 1.00000 0 4.0000 6.0000 比较 Matlab qr(A) 执行的结果q, r = qr(A) q =-0.9487 0.3102 -0.0315 -0.0526-0.3162 -0.9307 0.0944 0.15790 -0.1939 -0.5034 -0.84200 0 -0.8583 0.5131r =-6.3246 0.6325 -0.9487 00 5.1575 -3.3737 -0.19390 0 -4.6603 -5.65330 0 0 2.2366 结果与上面的一致 .第三章 第 23 頁习题 :1. Let A = 1 2;
41、2 1 , we proceed as follows: A= A0 =Q0R0A1 = R0Q0 =Q0A0Q0 = Q1R1 %A1 is similar to A, they have same eigenvalues .A2 = R1Q1 =Q1A1Q1 = Q2R2 %A2 is similar to A1, they have same eigenvalues . . . . . . Use the matlab qr( ) function and for-loop, to see the sequence of the first ten iterates , A, A1 ,
42、A2 , . . . , A10 ; and make a conclusion .2. Repeat 1. using A = 5 0 0 4; 10 5 -10 6; 10 0 -5 10; 0 0 0 1 第三章 第 24 頁(二)奇异值分解(Singular Value Decomposition)对于任一个 mn 实数(复数) 矩阵 A , 都可分解为 A=USV ; 其中 U 与 V 分别为 mm 与 nn 的 orthogonal(unitary)方阵, S 为一个 mn 的对角矩阵, 满足S=diag(s1,s2, . ,sp) , p=minm,n , s1s 2 . s p
43、0 。而在 Matlab 中, 提供了svd 函数, 来计算这个分解。1. Matlab 的 svd 函数例:(a) A=diag(2*ones(4,1)-diag(ones(3,1),1)-diag(ones(3,1),-1)svd(A) %计算出 A 矩阵的奇异值(singular values),也就是上面所说%的 s1,s2,s3,s4 值。 A =2 -1 0 0-1 2 -1 00 -1 2 -10 0 -1 2ans =3.61802.61801.38200.3820 (b) U,S,V=svd(A) %计算出 A 矩阵的奇异值分解,并回应成 U,S,V 矩阵。svda=U*S*
44、V %验算答案是否为 A 矩阵。 U =0.3717 -0.6015 0.6015 -0.3717-0.6015 0.3717 0.3717 -0.60150.6015 0.3717 -0.3717 -0.6015-0.3717 -0.6015 -0.6015 -0.3717S =3.6180 0 0 00 2.6180 0 00 0 1.3820 00 0 0 0.3820V =0.3717 -0.6015 0.6015 -0.3717-0.6015 0.3717 0.3717 -0.60150.6015 0.3717 -0.3717 -0.6015-0.3717 -0.6015 -0.60
45、15 -0.3717svda =2.0000 -1.0000 0.0000 0.0000-1.0000 2.0000 -1.0000 -0.00000.0000 -1.0000 2.0000 -1.00000.0000 0.0000 -1.0000 2.0000 【结论】 从上面 svda 的值, 我们发现分解的结果是正确的 .第三章 第 25 頁2. 奇异值分解与位阶(rank)的关系与应用 矩阵的 SVD 有个重要的用途; 由于一个矩阵的位阶(rank), 等于非零的奇异值之个数, 所以我们可以由矩阵的 SVD 更有效的算出其位阶。注:1. 由于计算误差的关系 , Matlab 在计算矩阵位阶时 , 并非实际去计算非零的奇异值个数, 而是比较奇异值与 Matlab 中的最小容忍值, 当奇异值大于容忍值时, 则视为非零, 反之则视为零。2. 如 1.所述, 当使用 rank 函数时, 通常可设定容忍值的大小 , 如: rank(A,tol);tol 为容忍值, 但使用 tol 须小心, 若其值太小, 小于电脑机器的