Εισαγωγή
Στα πλάισια της Κβαντομηχανικής αλλά και πολλών άλλων επιστημών συναντάμε συχνά το πρόβλημα της διαγωνοποίησης συμμετρικών πινάκων. Η διαδικασία αυτή είναι αρκετά επίπονη και χρονοβόρα. Με τη βοήθεια του ηλεκτρονικού υπολογιστή όμως τέτοιοι υπολογισμοί γίνονται πολύ εύκολα και σε πολύ σύντομο χρονικό διάστημα
Θεωρητικά ....
a i , j = a j , i |
|
1 αν i = j | |
|
|
0 αν i # j |
Το πρόγραμμα Eigen1
χρησιμοποιεί τη γεωμετρική μέθοδο Jacobi για την εύρεση των ιδιοτιμών
και των ιδιοδιανυσμάτων συμμετρικών πινάκων.
Η μέθοδος αυτή βασίζεται στην παρατήρηση ότι με στροφή του συστήματος
συντεταγμένων κατά μία γωνία θ, ένας συμμετρικός πίνακας 2x2 μπορεί να
μετασχηματιστεί σε διαγώνιο πίνακα τα διαγώνια στοιχεία του οποίου θα είναι
οι ιδιοτιμές του αρχικού πίνακα. Έτσι εισάγοντας μια επαναλληπτική διαδικασία
και επιλέγοντας διαφορετικά στοιχεία του πίνακα Α, κάθε φορά, η
μέθοδος Jacobi επιτυγχάνει να μετασχηματίσει ένα συμμετρικό πίνακα
τάξεως n σε διαγώνια μορφή και επομένως να εντοπίσει τις ιδιοτιμές
του.
Μεταβλητές προγράμματος
Οι μεταβλητές που χρησιμοποιεί το πρόγραμμα είναι
οι
n (ακέραιος)
: Διάσταση πίνακα
α (40,40) (πίνακας) : Στοιχεία του πίνακα
Δεδομένα Προγράμματος
Από το χρήστη τα ζητούμενα είναι
n (ακέραιος) :
Διάσταση πίνακα
a (n,n) (πίνακας) : Στοιχεία πίνακα
Αποτελέσματα Προγράμματος
Τα αποτελέσματα του προγράμματος είναι
a (n,n) (πίνακας) : Διαγώνιος πίνακας ιδιοτιμών
s (n,n) (πίνακας) : Μήτρα ιδιοδιανυσμάτων
Εκτέλεση Προγράμματος
Το πρόγραμμα Eigen1 είναι γραμμένο σε fortran. Για να το εκτελέσουμε πρέπει να το μετατρέψουμε σε κώδικα μηχανής με ένα compiler όπως είναι το xlf. Η εντολή είναι xlf -o eigen1 eigen1.f Το αρχείο eigen1 που θα δημιουργηθεί είναι το εκτελέσιμο. Ενα παράδεγμα εκτέλεσης του προγράμματος φαίνεται παρακάτω. Το πρόγραμμα αυτό δεν αποθηκεύει αυτόματα τα αποτελέσματα σε ένα αρχείο εξόδου οπότε για να γίνει αυτό πρέπει να στείλουμε εμείς με τον εξής τρόπο :
Έτσι στο αρχείο filename θα αποθηκευτούν τα αποτελέσματα του προγράμματος
Παράδειγμα Εφαρμογής Προγράμματος
Δεδομένα a(n,n) (n=3)
|
|
|
|
|
|
|
|
|
|
|
|
1 solutions for this eigenvalue problem
eigenvalue = 6.372
eigenvector is
.542
.643
.542
eigenvalue = .628
eigenvector is
-.454
.766
-.454
eigenvalue = 2.000
eigenvector is
-.707
.000
.707