Πρόγραμμα Eigen
Εύρεση Ιδιοτιμών Συμμετρικού Πίνακα Τάξεως n  

Εισαγωγή

    Στα πλάισια της Κβαντομηχανικής αλλά και πολλών άλλων επιστημών συναντάμε συχνά το πρόβλημα της διαγωνοποίησης συμμετρικών πινάκων. Η διαδικασία αυτή είναι αρκετά επίπονη και χρονοβόρα. Με τη βοήθεια του ηλεκτρονικού υπολογιστή όμως τέτοιοι υπολογισμοί γίνονται πολύ εύκολα και σε πολύ σύντομο χρονικό διάστημα

Θεωρητικά ....
 

 
 a i , j = a j , i
   
A x  =  λ x        (1)
(A - λ I) x = 0   (2)
 
Ιi,j = δi,j , όπου
 
1 αν i = j
δ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 που θα δημιουργηθεί είναι το εκτελέσιμο. Ενα παράδεγμα εκτέλεσης του προγράμματος φαίνεται παρακάτω. Το πρόγραμμα αυτό δεν αποθηκεύει αυτόματα τα αποτελέσματα σε ένα αρχείο εξόδου οπότε για να γίνει αυτό πρέπει να στείλουμε εμείς με τον εξής τρόπο :

eigen > filename

Έτσι στο αρχείο filename θα αποθηκευτούν τα αποτελέσματα του προγράμματος

Παράδειγμα Εφαρμογής Προγράμματος

                                        Δεδομένα a(n,n) (n=3)
Γραμμή 1η :
 3
Γραμμή 2η :
 2
Γραμμή 3η :
 1
 2
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