Home > Matrix Theory > Chéo hóa ma trận bằng phương pháp Jacobi

Chéo hóa ma trận bằng phương pháp Jacobi


Có thể nói đây là phương pháp đơn giản nhất đối với bài toán chéo hóa các ma trận đối xứng.

Giả sử ma trận A\in M_n(\mathbb{R}) đối xứng. Ta xây dựng dãy ma trận trực giao (R_k)_{k\ge1} và dãy ma trận (D_k)_{k\ge 0} như sau

 

D_0=A, \ D_k=R_k^T D_{k-1}R_k, \ \ k=1,2,...

 

sao cho \displaystyle\lim_{k\to\infty} D_k = diag(\lambda_1,\lambda_2,...,\lambda_n) là dạng chéo hóa của A.

 

Thiết lập một dãy như vậy được gọi là quá trình lặp Jacobi

 

Tại bước thứ k của quá trình này D_{k}=R_{k}^T D_{k-1}R_k chúng ta sẽ làm cho phần tử d^{(k)}_{pq}=d^{(k)}_{qp} nằm ngoài đường chéo chính nhận giá trị 0 bằng cách đặt

 

R_k=\begin{pmatrix}1 & 0 & ... & 0 & ... & 0 &... & 0 & 0\\ 0 & 1 & ... & 0 & ... & 0 &... & 0 & 0\\ ...& ... & ... & ... & ... & ... &... & ... & ...\\ 0 & 0 & ... & c & ... & s &... & 0 & 0\\ ...& ... & ... & ... & ... & ... &... & ... & ...\\ 0 & 0 & ... & -s & ... & c &... & 0 & 0\\ ...& ... & ... & ... & ... & ... &... & ... & ...\\ 0 & 0 & ... & 0 & ... & 0 &... & 1 & 0\\ 0 & 0 & ... & 0 & ... & 0 &... & 0 & 1\end{pmatrix}

 

trong đó c=\cos\varphi, s=\sin\varphi

 

Tương ứng với phép biến đổi

d^{(k)}_{jp}=cd^{(k-1)}_{jp}-sd^{(k-1)}_{jq}, \ j\neq p, \ j\neq q

d^{(k)}_{jq}=s d^{(k-1)}+c d^{(k-1)}_{jq}j\neq p, \ j\neq q

d^{(k)}_{pp}=c^2d^{(k-1)}_{pp}+s^2 d^{(k-1)}_{qq}-2csd^{(k-1)}_{pq}

 

d^{(k)}_{qq}=c^2d^{(k-1)}_{pp}+s^2 d^{(k-1)}_{qq}+2csd^{(k-1)}_{pq}

 

d^{(k)}_{pq}=(c^2-s^2)d^{(k-1)}_{pq}+cs\left( d^{(k-1)}_{pp}-d^{(k-1)}_{qq} \right)

 

Giả sử d^{(k-1)}_{pq}\neq 0, chúng ta muốn rằng d^{(k)}_{pq}=0 nên từ phương trình cuối cùng ta có

 

\theta=\cot2\varphi=\frac{c^2-s^2}{cs}=\frac{ d^{(k-1)}_{pp}-d^{(k-1)}_{qq}}{d^{(k-1)}_{pq}}

 

Ta đặt \displaystyle t=\tan\varphi=\frac{s}{c} suy ra \displaystyle\theta=\frac{1-s^2/c^2}{2s/c}=\frac{1-t^2}{2t}, dẫn đến phương trình bậc 2

 

t^2+2\theta t-1=0

 

với nghiệm \displaystyle t=\frac{sign(\theta)}{|\theta|+\sqrt{\theta^2+1}}. Từ đây ta tính được

 

c=\displaystyle\frac{1}{\sqrt{1+t^2}}, \ \ s=ct

 

Chúng ta xét các tổng các phần tử nằm ngoài đường chéo chính

 

S_k= \sum_{i\neq j, \ i,j=1...n} |d^{(k)}_{ij}|^2

 

Khi đó theo hệ phương trình đã xét ta có S_k=S_{k-1}-2|d^{(k-1)}_{ij}|^2

 

Như vậy dãy (S_k)_{k\ge 1} đơn điệu giảm và bị chặn dưới bởi 0 nên nó hội tụ.

 

Với vị trí (p,q) cần đưa về d^{(k)}_{pq}=0 trong ma trận D_k ta chọn tại vị trí của phần tử \displaystyle\max_{p<q}\{ |d^{(k-1)}_{pq}|\} trong ma trận D_{k-1}.

 

Với cách chọn như vậy thì (S_k)_{k\ge 1} hội tụ về 0 và hệ quả là (D_k)_{k\ge 0} hội tụ về ma trận đường chéo K. Ta biết rằng đa thức đặc trưng ma trận luôn bất biến với phép đồng dạng nên K chính là dạng chéo hóa của A.

 

Quá trình này được cài đặt với Mathematica như sau

 

Jacobi1 

 Jacobi2

Ví dụ.  

A=\begin{pmatrix} 8 & -1 & 3 & -1 \\ -1 & 6 & 2 & 0 \\ 3 & 2 & 9 & 1 \\ -1 & 0 & 1 & 7 \end{pmatrix}

 

Ta làm như sau:

 

{K, V} = JacobiCyclic[A, 10^-11, 50];

Print[" K=", MatrixForm[Chop[K]]];

Print[" V=", MatrixForm[Chop[V]]];

 

Khi đó kết quả thu được là dạng chéo hóa

 

K=\begin{pmatrix} 6.59234 & 0 & 0 & 0 \\ 0 & 3.2957 & 0 & 0 \\ 0 & 0 & 11.7043 & 0 \\ 0 & 0 & 0 & 8.40766 \end{pmatrix}

 

và ma trận trực giao

 

V=\begin{pmatrix} 0.230097 & 0.528779 & 0.582298 & -0.573042 \\ 0.628975 & 0.591967 & 0.175776 & 0.472301 \\ -0.0712347 & -0.536039 & 0.792487 & 0.28205 \\ 0.739169 & 0.287455 & 0.0446803 & 0.607455\end{pmatrix}

 

thỏa mãn A=V^T K V.

 

About these ads
Categories: Matrix Theory Tags:
  1. January 28, 2010 at 12:55 pm

    anh.thế đây là cách làm trên máy tính hả hay sao ma co lắm kí hiệu thế ạnh

  2. Trinh Tuan
    March 16, 2010 at 10:33 am

    Xin chao, minh la Tuan, ky su dien.
    Minh dang vuong mot van de ve toan hoc de giai quyet bai toan tim tan so dao dong rieng va he so tat dan cua cac dao dong rieng cua turbine may phat dien.
    Phuogn trinh toan hoc duoi dang ma tran nhu sau:
    J*x” + K*x = 0.
    Muc tieu cua bai toan la cheo hoa ma tran J va K cung mot luc bang 1 ma tran truc giao duy nhat T: Jm = inv(T)*J*T; Km = inv(T)*K*T Trong do Jm va Km la hai ma tran duong cheo.
    Trong mot so sach, viec dung phep cheo hoa nay duoc de cap rat nhieu. Tuy nhien minh chua tim thay cuon sach nao huong dan cach tim ma tran T, sau do tinh ra ma tran Jm va Km tuong ung.
    Ban co the chi dan giup minh cach giai quyet bai toan nay duoc khong? Hoac gioi thieu cho minh dau sach tham khao ( tieng Anh hoac tieng Viet) ve van de nay.
    Cam on nhieu!

  3. March 16, 2010 at 6:57 pm

    Chào anh Tuấn. Anh đang nhắc vấn đề simultaneous diagonalization. Xin trả lời câu hỏi của anh trong bài viết:
    http://tuanminh1988.wordpress.com/2010/03/16/dong-cheo-hoa-hai-ma-tran/

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: