Σέρρες, Μάρτιος 2006 ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ Σπουδάστρια Τμήματος: Επιβλέπων Καθηγητής: Καλαϊτζή Σουλτάνα Κουϊρουκίδης Απόστολος >
Σέρρες, Μάρτιος 2006 Εισαγωγή Επιλέγουμε το πακέτο λογισμικού Matlab, εκμεταλλευόμενοι το ανοιχτό υπολογιστικό περιβάλλον για την υλοποίηση μαθηματικών εκφράσεων. Δημιουργούμε ένα πρόγραμμα που υπολογίζει τις ιδιοτιμές και τα ιδιοδιανύσματα πολυδιάστατων πινάκων Α( Ν*Ν ). Δυνατότητες : i) διαφορετική διάσταση πίνακα και ii) τυχαίες ή προκαθορισμένες τιμές πίνακα. Αποτέλεσμα : i) εξοικονόμηση πράξεων και ii) εμφάνιση των επιθυμητών αποτελεσμάτων σε ελάχιστα δευτερόλεπτα. Περιοριζόμαστε σε πίνακες Α( Ν*Ν ) που είναι συμμετρικοί ή που εξ’ αρχής γνωρίζουμε ότι έχουν πραγματικές ιδοτιμές. Οι πιθανώς και μιγαδικές ιδιοτιμές ενός πίνακα είναι εκτός σκοπού μας.
Σέρρες, Μάρτιος 2006 ΚΕΦΑΛΑΙΟ Ι Θεωρητική εισαγωγή στην μέθοδο QR Δόμηση κώδικα i) το κυρίως πρόγραμμα “qrprg’’ που καλείται από την γραμμή εντολής του Matlab και ii) την υπορουτίνα “hess1’’ που καλείται από το κυρίως πρόγραμμα. Υπορουτίνα ‘’hess1’’ : Σκοπός να φέρουμε τον πίνακα Α (n*n) σε μορφή άνω - Hessenberg. Δηλαδή τα στοιχεία κάτω από την κύρια υποδιαγώνιο να είναι όλα μηδέν. Α (n*n)=
Σέρρες, Μάρτιος 2006 Για να συμβεί αυτό πρέπει να προσδιορίσουμε τους στοιχειώδεις ανακλαστές U 1,U 2,……..,U n-2 (Householder reflectors). Έτσι ώστε ο πίνακας Α n-1 = U n-2*..…*U 1* A 1* U 1* ……….* U n-2 να είναι άνω-Hessenberg. Όπου U k = I k = μοναδιαίος και R k ένας πίνακας της μορφής R k = ( I – U k * ) (1). Έτσι αν δοθεί διάνυσμα χ = υπάρχει αλγόριθμος που μας δίνει τα σ, π, u. n = max{ξk} (k=1,2,………….n) Ui = { } ξi (i=1,2……………n) σ = sign (Ui) *
Σέρρες, Μάρτιος 2006 Οπότε υπολογίζουμε τον Α n-1 με την βοήθεια των U k και τελικά ο Α n και ο Α n-1 είναι όμοιοι, άρα έχουν τις ίδιες ιδιοτιμές, διότι είναι συνδεδεμένοι μέσω των U k που έχουν την ιδιότητα : U=U T, U*U T =I, U 2 =I. Για να βρεθεί ο Α n-1 γίνονται οι αντίστοιχοι προ-πολλαπλασιασμοί U k *A k και στη συνέχεια οι μετα-πολλαπλασιασμοί (U k *A k )* U k. Οπότε προκύπτει ο πίνακας: Α (n-1) = με αποθηκευμένους τους στοιχειώδεις ανακλαστές στις θέσεις του πίνακα Α (n-1). ( U i + σ ) U i π = σ * U i n* σ (σ)
Σέρρες, Μάρτιος 2006 Στο κυρίως πρόγραμμα qrprg: παράγεται μια ακολουθία από όμοιος πίνακες Α 0, Α 1,……Α ν, …Α k,έτσι ώστε ο Α 0 να καταστεί άνω τριγωνικός. Τότε τα στοιχεία της κύριας διαγωνίου είναι οι ζητούμενες ιδιοτιμές. Α 0 = Σκοπός μας είναι τα μηδενίσουμε τα υποδιαγώνια στοιχεία. Έτσι αν βρισκόμαστε στο –ν οστό βήμα, βρίσκουμε ένα shift kν από τα στοιχεία του Α ν, οπότε σχηματίζουμε το (Α ν -k ν *Ι)=Q ν *R ν (1). Όπου Q ν = Ι και ορθογώνιος για πραγματικούς πίνακες και R ν = άνω τριγωνικός πίνακας. Οπότε ο Α ν+1 =R ν * Q ν +k ν * I (2). Από την (1) R ν = (Α ν -k ν *Ι)* Q ν Η (3) οπότε Α ν+1 = Q ν Η * (Α ν -k ν * I) * Qν +k ν *I= Q ν Η *Α ν * Q ν Α ν+1 = Q ν * Α ν * Q ν Η (4). Από την (1) Α ν = R ν * Q ν + k ν *Ι (5). Από την (5) και την (3) Α ν = Q ν * Α ν - k ν *Ι * Q ν Η + k ν *Ι Α ν = Q ν *Α ν * Q ν Η (6). Συγκρίνοντας (4) και (6) προκύπτει ότι οι πίνακες Α ν, Α ν+1 είναι όμοιοι.
Σέρρες, Μάρτιος 2006 Άρα επιλέγοντας κάθε στιγμή το shift ως k v =α nn (v), το στοιχείο στην –ν οστή γραμμή του πίνακα το στοιχείο g v πλησιάζει στο μηδέν. Α ν = Ύστερα λοιπόν από κάποιο αυθαίρετο αριθμό βημάτων, είτε προκαθορισμένο, είτε όταν αντιληφθούμε ότι η νόρμα του διαστήματος ||g v ||= είναι αρκετά κοντά στο μηδέν. Τότε το α nn (v) = λ n περίπου ταυτίζεται με μία πρώτη ιδιοτιμή. ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ Επιλέγοντας λοιπόν ως shift το k v =α nn (v) για το ν- οστο βήμα ρωτάμε πως θα γίνει η παραγοντοποίηση Β ν = (Α ν – k v * I)=Q v * R v. Αυτός ο τρόπος παραγοντοποίησης επιτυγχάνεται με τους πίνακες στροφής (P ij ) που ορίζονται ως εξής:
Σέρρες, Μάρτιος 2006 P ij = Στις θέσεις (i,j ) τα (γ, σ) (τα οποία μπορούν να προσδιοριστούν από τους παρακάτω τύπους), πάνω στην κύρια διαγώνιο μονάδες και παντού αλλού μηδέν. Επιπλέον είναι ορθογώνιος δηλαδή: P T * P = I γ 2 + σ 2 = 1. Οι πίνακες στροφής προσδιορίζονται ως εξής : με δεδομένα τα (α,β) βρίσκουμε τα (γ, σ, ν), που μας χρειάζονται ώστε: n = max{α,β}, α΄= α / n, β΄= β / n, γ= α΄/ δ, δ=( (α΄) 2 + (β΄) 2 ) 1/2, σ= β΄ / δ, ν = n * δ. Έτσι επιτυγχάνουμε την παραγοντοποίηση Β ν = (Α ν – k v * I )=Q v * R v. Αν επιδράσουμε με διαδοχικές στροφές P 12, P 23,………….,P n-1,n πάνω στον Β ν, λαμβάνουμε τον R v = P n-1,n * P n-2,n1 *………* P 23 * P 12 * Β ν ο οποίος R ν =άνω – τριγωνικός.
Σέρρες, Μάρτιος 2006 Αν θέσουμε Q ν =P 12 T * P 23 T *…………*P n-1n Τ πράγματι Β ν =Q ν * R ν με Q ν = ορθογώνιος. Μετά υπολογίζουμε τον πίνακα Q ν * R ν = R ν * P 12 T * P 23 T *………… * P n-1n Τ που είναι εμφανώς άνω-Hessenberg άρα και ο Α ν+1 = R v * Q v + k v * I είναι άνω-Hessenberg. Αυτή η ακολουθία πινάκων (άνω-Hessenberg ) Α 0,Α 1,…Α ν,… Α ν+1, Α k, σε κάποιο αριθμό βημάτων k, λαμβάνει την παρακάτω μορφή: Α k = Διαπιστώνουμε ότι στη θέση (n,n) έχει εμφανιστεί η πρώτη ιδιοτιμή λ n και o υποπίνακας [(n-1)*(n-1)] είναι σε μορφή άνω – Hessenberg. Εφαρμόζοντας την ίδια διαδικασία στον [(n-1)*(n-1)] εμφανίζεται μία δεύτερη ιδιοτιμή και ο υποπίνακας [(n-2)*(n-2)] είναι άνω –Hessenberg. Όταν έρθουμε στον (1*1) πίνακα, η διαδικασία τελειώνει. Οπότε προκύπτει ο τελικός πίνακας: Α m =
Σέρρες, Μάρτιος 2006 ΙΔΙΟΔΙΑΝΥΣΜΑΤΑ ΜΕ ΤΗΝ QR Αρχικά παράγεται ο Α 0 (άνω – Hessenberg), έπειτα μέσω στροφών η ακολουθία Α 0, Α 1,……Α ν, …Α k. Οπότε το k - ιδιοδιάνυσμα του άνω – τριγωνικού Α ν είναι : y k= (έχει μονάδα στην - k θέση και μηδενικά παρακάτω) Λύνοντας το σύστημα : (Α ν -α kk (v) *I) * y k =0 Α ν * y k =α kk (v) * y k. Θεωρώντας το x k = U * Q * y k έχουμε Α ν * x k =α kk (v) * x k. To x k είναι λοιπόν το k -τάξης ιδιοδιάνυσμα του αρχικού πίνακα Α. Πρακτικά συμβαίνει το εξής: μέσω της διαδικασίας του άνω–Hessenberg λαμβάνουμε τον χ = U (άνω – Hessenberg), πάνω στον οποίο δρούμε με πίνακες στροφής οπότε U *Q = X.Κατόπιν θεωρούμε τον πίνακα στήλης Υ, στον οποίο θα εμφανιστούν τα ιδιοδιανύσματα του τελικού πίνακα Α ν. Ορίζουμε τον πίνακα Ζ =Χ * Υ Ζ = χ k * Q * y k * Y.
Σέρρες, Μάρτιος 2006 ΚΕΦΑΛΑΙΟ ΙII Εφαρμογή στον υπολογισμό ιδιοτιμών – ιδιοσυναρτήσεων στο πρόβλημα του αρμονικού ταλαντωτή. Είναι γνωστό ότι σώμα που κινείται κάτω από την επίδραση δύναμης F=k * x εκτελεί, αρμονική ταλάντωση. Στην κβαντομηχανική χρησιμοποιούμε την κυματοσυναρτηση u=u(x), της οποίας το |u(x)| 2 μας δίνει την πιθανότητα το σωμάτιο να ανιχνευθεί στην θέση x. Αυτή ικανοποιεί την εξίσωση Schrodinger : * K * x 2 * u(x) = E * u(x). (1) Η εξίσωση Schrodinger περιγράφει την εξέλιξη του αρμονικού ταλαντωτή, όπου u (x) = κυματοσυναρτηση, K=σταθερά επαναφοράς, k=σταθερά Planck, m=μάζα σωματίου, E=ιδιοτιμή ενέργειας. Γράφουμε τις ακόλουθες αδιάστατες μεταβλητές : ξ = α * x, α 4 =, λ = * =, όπου ω 2 =. Τότε η διαφορική εξίσωση Schrodinger γίνεται : - ξ 2 * u = - λ * u, λ>0. (2)
Σέρρες, Μάρτιος 2006 Σύμφωνα με την θεωρία, οι λύσεις των ιδιοδιανύσματων δίνονται από τον τύπο λ n = 2 * n + 1 ( n=0,1,2,…….Ν ). Οπότε για διάφορα ξ σύμφωνα με την θεωρία της κλασικής φυσικής, παίρνουμε τα αντίστοιχα u n (ξ), και την παρακάτω γραφική: U0U0 Σκοπός μας είναι να συγκρίνουμε τα ιδιοδιανύσματα (συνεχές τιμές) με τις ιδιοσυναρτήσεις (διακριτές τιμές). Θέτουμε ξ [-G, G] με G = 5 και έχουμε ξ 0 = - 5, ξ 100 = 5, h=0.1, ξ n = ξ 0 + n * h, n = 1,2,….,N, (το h και το ξ n το ορίζουμε αυθαίρετα για να έχουμε διακριτές τιμές με απόσταση h, δηλαδή ξ n = -5, -4.9, - 4.8, ………,4. 9, 5 ). Έτσι βρίσκοντας τις παραγώγους πρώτης και δεύτερης τάξης η συνεχές διαφορική εξίσωση Schrodinger μετατρέπεται σε διακριτή εξίσωση εύρεσης ιδιοτιμών - ιδιοδιανυσμάτων ενός πίνακα Ν*Ν.
Σέρρες, Μάρτιος 2006 Πρώτη παράγωγος στο σημείο (x n-1,u n-1 ) y’ n-1 = = = Δεύτερη παράγωγος στο σημείο (x n-1,u n-1 ) y’’ n-1 = = = = = Από την διαφορική εξίσωση Schrodinger - ξ 2 * u = - λ * u συνεπάγεται η εξίσωση ιδιοτιμών του πίνακα: u n+1 – 2 * u n + u n-1 – F( n ) * u n = - λ * h 2 * u n Αυτόν τον πίνακα Ν*Ν τον γνωρίζουμε ήδη από την διαφορική εξίσωση Schrodinger. Μάλιστα κάθε ιδιοτιμή του πίνακα για διακριτές τιμές που θα βρίσκουμε, αντιστοιχεί σε ίδια ιδιοτιμή του πίνακα που γνωρίζουμε. Επίσης κάθε στηλοδιάνυσμα Ν*1 ( Ν– το πλήθος διακριτά σημεία) αντιστοιχεί στο ίδιο στηλοδιάνυσμα στο συνεχές. y y = f(x) = u(x) u n+1 Α u n Ε Δ u n-1 Γ B 0 x n-1 x n x n+1 x h h
Σέρρες, Μάρτιος 2006 Όπου ξ n =ξ 0 + n * h, ξ 0 =-5, h=0,1, n= 0,1,…,100, άρα F (n) = Αν u 0 =u N =0 με καλή προσέγγιση (από την θεωρία γνωρίζουμε όταν u n (ξ) είναι πολύ μεγάλο ή πολύ μικρό τότε u n (ξ) =| 0 | ) και [u 1,u 2,……u N-1 ] τότε για τον (N-1) *(N-1) πίνακα η εξίσωση ιδιοτιμών του πίνακα για διακριτές τιμές είναι: Α n,m = [δ n+1,m – [2 + f( n )] * δ n,m + δ n-1,m ], ψάχνουμε ιδιοτιμές και ιδιοδιανύσματα. Όπου δ n,m = και f( 1 )=0,0001*, άρα για το Α 11 = δ 21 - [2 + f( 1 )] *δ 11 + δ 01 = 0 – [ 2 + 0,2401] *1 +0 = - 1,7599, για το Α 12 = δ 22 - [2 + f( 2 )] *δ 12 + δ 02 = 1 – [ 2 + 0,2304] *0 +0 = 1 κτλ. Άρα προκύπτει ο πίνακας Α n,m =
Σέρρες, Μάρτιος 2006 Ιδιοτιμές και ιδιοσυναρτήσεις αρμονικού ταλαντωτή N=100; C=5; ----> Ορίζω ξn = 5. h=2*C/N; for i=1:N for j=1:N A(i,i)=0; end for i=1:N A(i,i)=-(2+(i-50)^2*h^4); -----> Ορίζουμε τις τιμές που θα έχει ο πίνακας A(n,m) στην κύρια διαγώνιο του. end for j=1:N-1 A(j,j+1)=1; ----> Ορίζουμε την πάνω και κάτω υποδιαγώνιο του πίνακα. A(j+1,j)=1; end
Σέρρες, Μάρτιος 2006 [V,D]=eig(A,'nobalance'); ----> Παράγονται οι ιδιοτιμές και τα ιδιοδιανύσματα του πίνακα Α. for i=1:N x(i)=-C+h*i; ----> Ορίζω ξ n = ξ 0 + h * n. end plot(x,V(1:N, N )) ----> V = Το ιδιοδιάνυσμα που αντιστοιχεί στην 1η ιδιοτιμή. Αν τρέξουμε το πρόγραμμα armtalan θα μας εξάγει τις παρακάτω γραφικές : U 0 για n= N
Σέρρες, Μάρτιος 2006 U 1 για n= N-1 U 2 για n= N-2
Σέρρες, Μάρτιος 2006 Αν συγκρίνουμε την γραφική παράσταση της διαφάνειας 12 με την γραφική της διαφάνειας 17, θα παρατηρήσουμε ότι για την ίδια ιδιοτιμή, το αντίστοιχο ιδιοδιανύσμα ταυτίζεται με την ιδιοσυνάρτηση που μας δίνεται για διακριτές τιμές. Το ίδιο φυσικά ισχύει και για το U 1, U 2, κτλ. Στην πρώτη περίπτωση οι ιδιοτιμές υπολογίζονται από τον τύπο λ n = 2 * n + 1 (n=0,1,2,…….Ν), ενώ στην δεύτερη περίπτωση μέσω του προγράμματος armtalan και πιο συγκεκριμένα με την παρακάτω γραμμή κώδικα: [V,D]= eig(A,'nobalance'). Η οποία παράγει έναν διαγώνιο πίνακα D, που παρέχει τις ιδιοτιμές του πίνακα Α και έναν πίνακα V, οι στήλες του οποίου αντιστοιχούν στις ιδιοσυναρτήσεις για διακριτές τιμές. Στην ουσία η παραπάνω γραμμή κώδικα αντιστοιχεί στο πρόγραμμα QR που έχουμε φτιάξει εμείς, το οποίο έχει ως σκοπό να δίνετε έναν πίνακας Α (Ν*Ν) και να παράγονται οι ιδιοτιμές και τα ιδιοδιανύσματα του. Εμείς όμως εκμεταλλευόμαστε τις έτοιμες συναρτήσεις που μας παρέχει το Matlab για να εφαρμόσουμε το πρόβλημα στον αρμονικό ταλαντωτή. Συμπεράσματα
Σέρρες, Μάρτιος 2006 ΚΕΦΑΛΑΙΟ IV Συμπεράσματα - Αποτελέσματα της μεθόδου QR Μέσω της υπορουτίνας “hess1.m” φέρνουμε ένα πίνακα A(n*n) σε μορφή άνω- Hessenberg. Αρχικά το πρόγραμμα ξεκινάει δημιουργώντας με τυχαίους αριθμούς, ένα πίνακα Α(n*n). Επειδή θέλουμε πραγματικές ιδιοτιμές, φροντίζουμε ο πίνακας να είναι συμμετρικός, ενώ αν θέλουμε απλή επίδειξη του προγράμματος hess1, μπορεί ο πίνακας να είναι τυχαίος. Το κυρίως πρόγραμμα “ qrprg.m” για Ν= όσο επιθυμούμε δίνει : i) τον συμμετρικό πίνακα του οποίου τις ιδιοτιμές θέλουμε, disp(A); msgbox('This is the matrix we want to find the eigenvalues...type "return" and press enter to continue'), ii) τον πίνακα σε μορφή άνω-Hessenberg με τους μετασχηματισμούς Householder αποθηκευμένους στις υποδιαγώνιες θέσεις του πίνακα, disp(C); msgbox('This is the matrix in Hessenberg form with the Householder transformations saved.'), iii) τον πίνακα σε μορφή άνω-Hessenberg, δηλαδή ο Α 0 disp(D); msgbox('This is the matrix in Hessenberg form'),
Σέρρες, Μάρτιος 2006 iv) τον τελικό πίνακα σε άνω- τριγωνική μορφή, του οποίου τα διαγώνια στοιχεία είναι οι ιδιοτιμές του αρχικού πίνακα, δηλαδή ο Α ν disp(G); msgbox ('This is the matrix with the required eigenvalues in the diagonal'). Τροποποιώντας τον αλγόριθμο QR δίνονται τα ιδιοδιανύσματα του αρχικού πίνακα Α (n*n). Τα οποία εμφανίζονται σε ένα πίνακα Ζ, που είναι ο πολλαπλασιασμός του άνω - τριγωνικού πίνακα Χ με τον διαγώνιο πίνακα Υ, στον οποίο θα εμφανιστούν τα ιδιοδιανύσματα του τελικού πίνακα Α ν, δηλαδή Ζ = Χ * Υ. disp(Z); msgbox('These are the eigenvectors').