Bài giảng phần Ma trận - pdf 17

Download miễn phí Bài giảng phần Ma trận



§14. PHÂN TÍCH SCHUR 
  Cho ma trận vuông [A], cấp n ta phân tích nó thành: 
  [A] = [T][T]* 
Trong đó: 
[T] ‐ ma trận unita và [T]* là ma trận chuyển vị liên hợp của [T](lâý chuyển vị của [T] rồi lấy liên hợp của các phần tử). 
 = [Λ] + [N] 
[Λ] ‐ là ma trận đường chéo có các phần tử là các giá trị riêng của [A] 
[N] ‐ ma trận tam giác phải, có các phần tử thuộc đường chéo chính bằng zero. 
Mọi ma trận vuông đều có thể phân tích Schur. Tuy nhiên phân tích này 
không duy nhất. Nếu [A] là ma trận trực giao thì  là ma trận đường chéo 
và các cột của [T] là các vec tơ riêng của [A]. Phân tích Schur khi này được gọi 
là phân tích phổ. Nếu [A] xác định dương, phân tích Schur chính là phân tích SVD.



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

 
          pp = max(size(p)); 
          v = nulld(aa, small);          
          jv(:,p) = v*(rand(size(v, 2), pp) ‐ 0.5)*16; 
          k = k + pp; 
      end 
      clear v; 
      for k = 1:dns(1)  
          v(:,1) = jv(:, k); 
          for p = 2:ec(k) 
              v(:, p) = a1*v(:, p‐1); 
          end 
          vv = fliplr(v(:, 1:ec(k))); 
          M = [M vv]; 
84
      end 
   end 
end 
k = abs(det(M))^(‐1/n); 
M = k*M;  
Mi = inv(M); 
D = Mi*a*M; 
d0 = diag(D); 
d1 = diag(D, 1); 
D = diag(d0) + diag(d1, 1); 
function Z = nulld(A, small) 
norma = sqrt(mean(mean(abs(A)))); 
tiny = norma*eps; 
if nargin<2 
   small = (1 + norma)*sqrt(eps); 
end 
[m, n] = size(A); 
if  m~= n 
   error(ʹMa tran phai vuong!ʹ) 
end 
p = find(abs(A)<tiny); 
if ~isempty(p) 
   A(p) = 0; 
end 
[U,S,V] = svd(A, 0); 
S = diag(S); 
s = S; 
norma = max(s); 
smax = max(s); 
if smax == 0; 
    smax = 1; 
end 
s = s/smax; 
snorm = s; 
85
t = find(s>0); 
if isempty(t); 
    Z = V; 
    return; 
end 
p = find(s<tiny); 
if ~isempty(p) 
   s(p) = tiny; 
end 
p = find(s == 0); 
if ~isempty(p) 
   s(p) = small*min(s(t)); 
end 
logs = log10(s); 
sdifflog = ‐diff(logs); 
smax = max(sdifflog); 
r = find(sdifflog == smax); 
if min(size(r))>0 
   r = r(end); 
else 
   r = 0; 
end 
Z = V(:,r+1:n); 
if snorm == ones(n, 1);   
    Z = zeros(n, 0);  
end 
if max(S) <= small;  
    Z = V;  
end 
§13. PHÂN TÍCH MA TRẬN THEO CÁC GIÁ TRỊ KÌ DỊ  
  Phân tích ma trận theo các giá trị kì dị (kì dị value) được thực hiện trên 
các ma trận vuông hay chữ nhật. Ta có: 
  [Anp] = [Unn][Snp][Vpp] 
Trong đó: 
86
  T = [Enn] 
  [V]T[V] = [Epp] 
nghĩa là các ma trận  và [V] là trực giao. 
Các cột của    là các vec  tơ kì dị  trái,  [S] có các giá  trị kì dị và  là ma  trận 
đường chéo và [V]T có các hàng là các vec tơ kì dị phải. Để tính các ma trận 
, [S] và [V] ta tìm các giá trị riêng của [A][A]T và [A]T[A]. Các vec tơ riêng 
của [A]T[A] tạo nên các cột của [V]. Các vec tơ riêng của [A][A]T tạo nên các 
cột của  . Các giá  trị kì dị của  [S]  là căn bậc hai của các giá  trị  riêng của 
[A][A]T hay  [A]T[A]. Các giá  trị riêng  trên đường chéo của  [S] được sắp xếp 
theo thứ tự giảm dần. Để hiểu được thuật toán này ta xét ví dụ sau: 
Ta xây dựng hàm svddecomp() để thực hiện thuật toán này: 
function [U, S , V] = svddecomp(A) 
[m, n] = size(A); 
if (m > n) 
    % ta can timcac vec to kì dị phai truoc 
    %[V D] = eigs(Aʹ*A) 
    [V, D] = eigs(Aʹ*A); 
    [dummy, perm] = sort(‐diag(D)); 
    S = diag(sqrt(diag(D(perm, perm)))); 
    V = V(:, perm); 
    sinv = diag(1./sqrt(diag(D))); 
    U = (A*V)*sinv; 
else 
    % ta can tim cac vec to kì dị trai truoc 
    % [U D] = eigs(A*Aʹ) 
    [U, D] = eigs(A*Aʹ); 
    [dummy, perm] = sort(‐diag(D)); 
    S = diag(sqrt(diag(D(perm, perm)))); 
    U = U(:, perm); 
    sinv = diag(1./sqrt(diag(D))); 
    V = sinv*(Uʹ*A); 
    V = Vʹ; 
end 
87
Để phân tích một ma trận ta dùng chương trình ctsvddecomp.m: 
clear all, clc 
%a = [ 1 2 3 4 5; 6 7 8 9 0; 3 4 5 6 7; 8 9 0 1 2; 2 4 6 8 1]; 
a = [ 1 1; 0 1; 1 0]; 
[u, s, v] = svddecomp(a) 
§14. PHÂN TÍCH SCHUR 
  Cho ma trận vuông [A], cấp n ta phân tích nó thành: 
  [A] = [T][T]* 
Trong đó: 
[T]  ‐ ma  trận  unita  và  [T]*  là ma  trận  chuyển  vị  liên  hợp  của  [T](lâý 
chuyển vị của [T] rồi lấy liên hợp của các phần tử). 
 = [Λ] + [N] 
[Λ] ‐ là ma trận đường chéo có các phần tử là các giá trị riêng của [A] 
[N]  ‐ ma  trận  tam giác phải,  có  các phần  tử  thuộc  đường  chéo  chính 
bằng zero. 
Mọi ma trận vuông đều có thể phân tích Schur. Tuy nhiên phân tích này 
không duy nhất. Nếu [A] là ma trận trực giao thì  là ma trận đường chéo 
và các cột của [T] là các vec tơ riêng của [A]. Phân tích Schur khi này được gọi 
là phân tích phổ. Nếu [A] xác định dương, phân tích Schur chính là phân tích 
SVD. 
Để phân tích ma trận theo thuật toán Schur ta thực hiện các bước sau: 
- Tìm giá trị riêng λ1 của [A] và vec tơ riêng tương ứng [v1] 
- Chọn n‐ 1 vec tơ [w1],...,[wn‐1] độc lập tuyến tính và trực giao với [v1] 
- Tạo [V1] là ma trận có các cột là [v1], [w1],...,[wn‐1] và tính: 
[ ] [ ][ ] [ ]11 1 1V A V 0 A
∗ λ ∗⎡ ⎤= ⎢ ⎥⎣ ⎦
Trong đó [A1] là ma trận (n‐1)×(n‐1) 
- Lặp lại quá trình với ma trận [A1] ta có: 
     [ ] [ ][ ] [ ]22 1 2 2V A V 0 A
∗ λ ∗⎡ ⎤= ⎢ ⎥⎣ ⎦
Trong đó [A2] là ma trận (n‐2)×(n‐2) 
88
- Do [ ] [ ] [ ]
[ ]
1
2 2 1
2
T A T 0
0 0 A
∗ ∗
λ ∗ ∗⎡ ⎤⎢ ⎥= λ ∗⎢ ⎥⎢ ⎥⎣ ⎦
Trong đó [ ]2 1 2ˆT V V⎡ ⎤ ⎡ ⎤= ⎣ ⎦ ⎣ ⎦  với  [ ]2 2
1 0

0 V
⎡ ⎤⎡ ⎤ = ⎢ ⎥⎣ ⎦ ⎣ ⎦
- Tiếp tục quá trình ta tìm được [V1],...,[Vn]. Cuối cùng  = [T]*[A][T]  
2 1 2 n
ˆ ˆT V V V⎡ ⎤ ⎡ ⎤ ⎡ ⎤⎤⎡ =⎣ ⎦ ⎣ ⎦ ⎣ ⎦ ⎣ ⎦L  
Ta xây dựng hàm schurdecom() thực hiện thuật toán trên: 
function [T, U] = schurdecom(a) 
% Phan tich Schur ma tran A  
n = size(a, 1); 
v = zeros(n, 1); 
v(1) = 1; 
b = zeros(n, n); 
b(:, n) = v; 
for k = 2:n 
    v = a*v; 
    b(:, n‐k+1) = v; 
end 
c = a*v; 
rho = ‐b\c; 
rho = [1 rhoʹ]; 
lambda = roots(rho); 
n = size(lambda, 1); 
evec = zeros(n); 
c = evec; 
e = eye(n); 
for i = 1:n 
    b = a ‐ lambda(i)*e; 
    c = nulld(b); 
    evec(:, i) = c(:,1);      
89
end 
p = grams(evec); 
T = conj(transpose(p))*a*p; 
U = p; 
Để phân tích ma trận ta dùng chương trình ctschur.m: 
clear all, clc 
a = [ 1 2 3 5; 4 5 6 2; 4 6 8 9; 9 3 6 7]; 
[t, u] = schurdecom(a) 
§15. ĐỊNH THỨC CỦA MA TRẬN 
Cho một ma trận vuông cấp n. Ta cần tìm định thức của nó. Trước hết 
chúng ta nhắc lại một số tính chất quan trọng của định thức: 
- nếu nhân  tất cả các phần  tử của một hàng  (hay cột) với k  thì  định 
thức được nhân với k 
- định  thức không đổi nếu  ta cộng  thêm vào một hàng  tổ hợp  tuyến 
tính của các hàng còn lại. 
- nếu đổi chỗ hai hàng cho nhau thì định thức đổi dấu 
Trước khi đi đến định nghĩa về định thức ta tìm hiểu khái niệm về hoán 
vị và phép thế.  
Cho một dãy số, nếu ta đổi chỗ các số trong dãy cho nhau thì ta đã thực 
hiện một phép hoán vị. Ví dụ 123, 132,..  là các hoán vị của dãy số  {1, 2, 3}. 
Trong hoán vị α1α2…αi…αj…αn  ta nói αi  làm một nghịch  thế với αj nếu  i <  j 
mà αi > αj. Ví dụ trong hoán vị 1432 số 4 làm với số  3 một nghịch thế  , số 4 
làm với số 2 một nghịch thế, số 3 làm với số 2 một nghịch thế. M
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status