Τ.Ε.Ι. ΔΥΤΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΠΑΡΑΡΤΗΜΑ ΚΑΣΤΟΡΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Της Γεωργίας Μανωλαρά Α.Ε.Μ.



Σχετικά έγγραφα
Εφαρμοσμένα Μαθηματικά ΙΙ

Χαρακτηριστική Εξίσωση Πίνακα

Εφαρμοσμένα Μαθηματικά ΙΙ

ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ (ΗΥ-119)

Ιδιάζουσες τιμές πίνακα. y έχουμε αντίστοιχα τις σχέσεις : Αυτές οι παρατηρήσεις συμβάλλουν στην παραγοντοποίηση ενός πίνακα

Παραδείγματα Ιδιοτιμές Ιδιοδιανύσματα

8.1 Διαγωνοποίηση πίνακα

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΣΧΟΛΗ ΤΜΗΜΑ. Μαθηματικά 2. Σταύρος Παπαϊωάννου

= 7. Στο σημείο αυτό θα υπενθυμίσουμε κάποιες βασικές ιδιότητες του μετασχηματισμού Laplace, δηλαδή τις

Αριθμητική Ανάλυση και Εφαρμογές

Παναγιώτης Ψαρράκος Αν. Καθηγητής

Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών

ΜΕΜ251 Αριθμητική Ανάλυση

ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΜΑΘΗΜΑΤΙΚΑ Ι (ΘΕ ΠΛΗ 12) ΕΡΓΑΣΙΑ 2 η Ημερομηνία Αποστολής στον Φοιτητή: 28 Νοεμβρίου 2011

Παναγιώτης Ψαρράκος Αν. Καθηγητής

ETY-202 ΎΛΗ & ΦΩΣ 07. ΣΤΡΟΦΟΡΜΗ ΚΑΙ ΤΟ ΑΤΟΜΟ ΤΟΥ ΥΔΡΟΓΟΝΟΥ

Επιστημονικοί Υπολογισμοί (ή Υπολογιστική Επιστήμη)

Ασκήσεις3 Διαγωνισιμότητα Βασικά σημεία Διαγωνίσιμοι πίνακες: o Ορισμός και παραδείγματα.

ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΑΚ. ΕΤΟΣ Μαθηματικά για Οικονομολόγους ΙI-Μάθημα 4 Γραμμικά Συστήματα

D = / Επιλέξτε, π.χ, το ακόλουθο απλό παράδειγμα: =[IA 1 ].

Εφαρμοσμένα Μαθηματικά ΙΙ

Διαγωνοποίηση μητρών. Στοιχεία Γραμμικής Άλγεβρας

Κεφάλαιο 6 Ιδιοτιμές και Ιδιοδιανύσματα

ΕΙΣΑΓΩΓΗ ΣΤΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΣΥΣΤΗΜΑΤΩΝ

ΤΕΤΥ Εφαρμοσμένα Μαθηματικά 1. Τελεστές και πίνακες. 1. Τελεστές και πίνακες Γενικά. Τι είναι συνάρτηση? Απεικόνιση ενός αριθμού σε έναν άλλο.

ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΜΑΘΗΜΑΤΙΚΑ Ι (ΘΕ ΠΛΗ 12) ΕΡΓΑΣΙΑ 3 η Ημερομηνία Αποστολής στον Φοιτητή: 7 Ιανουαρίου 2008

Εφαρμοσμένα Μαθηματικά ΙΙ

Matrix Algorithms. Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι. Αλγόριθμοι» Γ. Καούρη Β. Μήτσου

Ασκήσεις2 8. ; Αληθεύει ότι το (1, 0, 1, 2) είναι ιδιοδιάνυσμα της f ; b. Να βρεθούν οι ιδιοτιμές και τα ιδιοδιανύσματα της γραμμικής απεικόνισης 3 3

1 ιαδικασία διαγωνιοποίησης

Υπολογισμός του πίνακα A n, n Z Νίκος Χαλιδιάς Τμήμα Στατιστικής και Αναλογιστικών - Χρηματοοικονομικών Μαθηματικών Πανεπιστήμιο Αιγαίου

Σπιν 1 2. Γενικά. Ŝ και S ˆz γράφονται. ιδιοκαταστάσεις αποτελούν ορθοκανονική βάση στον χώρο των καταστάσεων του σπιν 1 2.

Πιο συγκεκριμένα, η χρήση του MATLAB προσφέρει τα ακόλουθα πλεονεκτήματα.

Ασκήσεις3 Διαγωνίσιμες Γραμμικές Απεικονίσεις

Σημειώσεις για το μάθημα: «Βασικές Αρχές Θεωρίας Συστημάτων» (Μέρος Α )

Εισαγωγή στην Αριθμητική Ανάλυση

Εφαρμοσμένα Μαθηματικά ΙΙ Τελική Εξέταση Ι. Λυχναρόπουλος

Στοχαστικά Σήματα και Τηλεπικοινωνιές

Κεφάλαιο 5 ΔΙΔΙΑΣΤΑΤΑ ΓΡΑΜΜΙΚΑ ΣΥΣΤΗΜΑΤΑ. Ενα αυτόνομο δυναμικό σύστημα δύο διαστάσεων περιγράφεται από τις εξισώσεις

ΜΕΜ251 Αριθμητική Ανάλυση

ΚΕΦ.6:ΤΕΤΡΑΓΩΝΙΚΕΣ ΜΟΡΦΕΣ. ΣΥΜΜΕΤΡΙΚΟΙ ΠΙΝΑΚΕΣ

ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ. ΕΝΟΤΗΤΑ: Άλγεβρα των Πινάκων (2) ΔΙΔΑΣΚΩΝ: Βλάμος Παναγιώτης ΙΟΝΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

QR είναι ˆx τότε x ˆx. 10 ρ. Ποιά είναι η τιµή του ρ και γιατί (σύντοµη εξήγηση). P = [X. 0, X,..., X. (n 1), X. n] a(n + 1 : 1 : 1)

Πεπερασμένες Διαφορές.

Αριθμητική Ανάλυση και Εφαρμογές

Αριθμητική Ανάλυση και Εφαρμογές

7 ΑΛΓΕΒΡΑ ΜΗΤΡΩΝ. 7.2 ΜΗΤΡΕΣ ΕΙΔΙΚΗΣ ΜΟΡΦΗΣ (Ι)

ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΜΑΘΗΜΑΤΙΚΑ Ι (ΘΕ ΠΛΗ 12) ΕΡΓΑΣΙΑ 1 η Ημερομηνία Αποστολής στον Φοιτητή: 20 Οκτωβρίου 2008

Διανύσµατα στο επίπεδο

Μαθηματικά ΜΕΡΟΣ 5 ΓΡΑΜΜΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΞΙΣΩΣΕΩΝ ΜΕ ΠΙΝΑΚΕΣ

1 Επανάληψη εννοιών από τον Απειροστικό Λογισμό

Αριθμητική Ανάλυση και Εφαρμογές

2 3x 5x x

1. a. Έστω b. Να βρεθούν οι ιδιοτιμές και τα ιδιοδιανύσματα του A Έστω A και ( x) [ x]

Παραδείγματα Απαλοιφή Gauss Απαλοιφή Gauss Jordan

Περιεχόμενα. Πρόλογος 3

ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ (Εξ. Ιουνίου - 02/07/08) ΕΠΙΛΕΓΜΕΝΕΣ ΑΠΑΝΤΗΣΕΙΣ

ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΜΑΘΗΜΑΤΙΚΑ Ι (ΘΕ ΠΛΗ 12) ΕΡΓΑΣΙΑ 1 η Ημερομηνία Αποστολής στον Φοιτητή: 17 Οκτωβρίου 2011

Η ΚΑΝΟΝΙΚΗ ΜΟΡΦΗ JORDAN

ETY-202 ΤΑ ΜΑΘΗΜΑΤΙΚΑ ΕΡΓΑΛΕΙΑ ΤΗΣ ΚΒΑΝΤΟΜΗΧΑΝΙΚΗΣ ETY-202 ΎΛΗ & ΦΩΣ 02. ΜΑΘΗΜΑΤΙΚΑ ΕΡΓΑΛΕΙΑ. Στέλιος Τζωρτζάκης 1/11/2013

3. Μια πρώτη προσέγγιση στην επίλυση των κανονικών μορφών Δ. Ε.

Matrix Algorithms. Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι Αλγόριθμοι» Γ. Καούρη Β. Μήτσου

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον

Κεφ. 2: Επίλυση συστημάτων αλγεβρικών εξισώσεων. 2.1 Επίλυση απλών εξισώσεων

Εφαρμοσμένα Μαθηματικά ΙΙ Τελική Εξέταση 19/6/2018 Διδάσκων: Ι. Λυχναρόπουλος

ΚΕΦΑΛΑΙΟ 2: ΟΡΙΖΟΥΣΕΣ

Παραδείγματα Απαλοιφή Gauss Απαλοιφή Gauss-Jordan Παραγοντοποίηση LU, LDU

Εφαρμοσμένα Μαθηματικά ΙΙ Τελική Εξέταση Ι. Λυχναρόπουλος

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΣΧΟΛΗ ΤΜΗΜΑ. Μαθηματικά 1. Σταύρος Παπαϊωάννου

Κεφ. 3: Παρεμβολή. 3.1 Εισαγωγή. 3.2 Πολυωνυμική παρεμβολή Παρεμβολή Lagrange Παρεμβολή Newton. 3.3 Παρεμβολή με κυβικές splines

Εφαρμοσμένα Μαθηματικά ΙΙ

Η ΜΕΘΟΔΟΣ PCA (Principle Component Analysis)

Κεφ. 2: Επίλυση συστημάτων εξισώσεων. 2.1 Επίλυση εξισώσεων

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ ΣΤΑ ΓΕΝΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

5.1 Ιδιοτιµές και Ιδιοδιανύσµατα

Κεφάλαιο 7 Ορθογώνιοι Πίνακες

I. ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ. math-gr

Μαθηματικά Γ Γυμνασίου

Εφαρμοσμένα Μαθηματικά ΙΙ

Επίλυση Γραµµικών Συστηµάτων

Εφαρμοσμένα Μαθηματικά ΙΙ

Εφαρμοσμένα Μαθηματικά ΙΙ Εξέταση Σεπτεμβρίου Ι. Λυχναρόπουλος

Επίκουρος Καθηγητής Παν/µίου Ιωαννίνων. Μαθηµατικά Ι Ακαδ. Έτος /58

21/11/2013 ETY-202 ETY-202 ΎΛΗ & ΦΩΣ 06. Ο ΑΡΜΟΝΙΚΟΣ ΤΑΛΑΝΤΩΤΗΣ. 1396; office Δ013 ΙΤΕ. Στέλιος Τζωρτζάκης

Πίνακες Γραμμικά Συστήματα

21 a 22 a 2n. a m1 a m2 a mn

Τυπικές χρήσεις της Matlab

Κεφ. 2: Επίλυση συστημάτων αλγεβρικών εξισώσεων. 2.1 Επίλυση απλών εξισώσεων

Αριθμητική Ανάλυση 4.5 Ιδιοτιμές και ιδιοδιανύσματα πινάκων. Γ. Παπαευαγγέλου, ΕΔΙΠ, ΤΑΤΜ/ΑΠΘ

Ταξινόμηση καμπυλών και επιφανειών με τη βοήθεια των τετραγωνικών μορφών.

Kεφάλαιο 4. Συστήματα διαφορικών εξισώσεων. F : : F = F r, όπου r xy

Διδάσκων: Καθηγητής Νικόλαος Μαρμαρίδης, Καθηγητής Ιωάννης Μπεληγιάννης

ΕΠΑΝΑΛΗΠΤΙΚΗ ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ 3 Ιουλίου 2010

Δίνεται το σύστημα μιας εισόδου και μιας εξόδου, το οποίο περιγράφεται από τις κάτωθι εξισώσεις:,, πίνακας,

ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ (ΗΥ-119)

Κεφάλαιο 4 Διανυσματικοί Χώροι

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

ΧΑΡΑΚΤΗΡΙΣΤΙΚΟ ΠΟΛΥΩΝΥΜΟ ΠΙΝΑΚΑ: Έστω Α ένας n nπίνακας επί ενός σώματος F. Για χ στο F, ορίζεται το πολυώνυμο ( ως προς χ ) : h ( x) = det( A- xi ).

Παναγιώτης Ψαρράκος Αν. Καθηγητής

Transcript:

Τ.Ε.Ι. ΔΥΤΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΠΑΡΑΡΤΗΜΑ ΚΑΣΤΟΡΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Της Γεωργίας Μανωλαρά Α.Ε.Μ. 43 ΔΙΑΧΕΙΡΙΣΗ ΑΡΑΙΩΝ ΠΙΝΑΚΩΝ ΣΤΟ MATLAB ΚΑΙ ΕΦΑΡΜΟΓΕΣ ΣΤΙΣ ΔΙΑΦΟΡΙΚΕΣ ΕΞΙΣΩΣΕΙΣ Επιβλέπων: Ζαχαρούλα Καλογηράτου Καθηγήτρια Καστοριά Νοέμβριος 009

Τ.Ε.Ι. ΔΥΤΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΠΑΡΑΡΤΗΜΑ ΚΑΣΤΟΡΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Της Γεωργίας Μανωλαρά Α.Ε.Μ. 43 ΔΙΑΧΕΙΡΙΣΗ ΑΡΑΙΩΝ ΠΙΝΑΚΩΝ ΣΤΟ MATLAB ΚΑΙ ΕΦΑΡΜΟΓΕΣ ΣΤΙΣ ΔΙΑΦΟΡΙΚΕΣ ΕΞΙΣΩΣΕΙΣ Επιβλέπων: Ζαχαρούλα Καλογηράτου, Καθηγήτρια Εγκρίθηκε από την τριμελή εξεταστική επιτροπή την 5//009 Ζαχαρούλα Καλογηράτου Άγγελος Μιχάλας Θεόδωρος Θεμελής Καθηγήτρια Επίκουρος Καθηγητής Εργαστηριακός Συνεργάτης Καστοριά Νοέμβριος 009

Copyright 009_Γεωργία Μανωλαρά Απαγορεύεται η αντιγραφή, αποθήκευση και διανομή της παρούσας εργασίας, εξ ολοκλήρου ή τμήματος αυτής, για εμπορικό σκοπό. Επιτρέπεται, η ανατύπωση, αποθήκευση και διανομή για σκοπό μη κερδοσκοπικό, εκπαιδευτικής ή ερευνητικής φύσης, υπο την προϋπόθεση να αναφέρεται η πηγή προέλευσης και να διατηρείται το παρόν μήνυμα. Οι απόψεις και τα συμπεράσματα που περιέχονται σε αυτό το έγγραφο εκφράζουν αποκλειστικά το συγγραφέα και δεν αντιπροσωπεύουν τις επίσημες θέσεις του Τ.Ε.Ι. Δυτικής Μακεδονίας.

Πρόλογος Η παρούσα πτυχιακή εργασία εκπονήθηκε κατά τη διάρκεια του ακαδημαϊκού έτους 008-009 υπό την εποπτεία της κ. Ζαχαρούλας Καλογηράτου με σκοπό την απόκτηση πτυχίου του ΤΕΙ Δυτικής Μακεδονίας του Παραρτήματος Καστοριάς του τμήματος ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ. Θα ήθελα να ευχαριστήσω την επιβλέπουσα καθηγήτρια μου κ. Ζαχαρούλα Καλογηράτου για την εμπιστοσύνη που μου έδειξε αναθέτοντας μου αυτή την εργασία, για την καθοδήγηση της κατά την συγγραφή και την διόρθωση της και κυρίως για την ευκαιρία που μου έδωσε να ασχοληθώ με ένα ενδιαφέρων αντικείμενο.

Περίληψη Η παρούσα εργασία ασχολείται με την διαχείριση αραιών πινάκων και εφαρμογές τους με τη χρήση του MATLAB. Παρουσιάζονται ειδικές μορφές αραιών πινάκων και η διαχείριση τους καθώς και το αλγεβρικό πρόβλημα ιδιοτιμών και η επίλυση του με το MATLAB. Επίσης, γίνεται εφαρμογή στις διαφορικές εξισώσεις και συγκεκριμένα επιλύεται αριθμητικά το πρόβλημα εύρεσης ιδιοτιμών στην εξίσωση Schrödinger με διακριτοπιοίηση. Εφαρμόζονται δύο αριθμητικές μέθοδοι δύο βημάτων για την μονοδιάστατη εξίσωση και η μέθοδος διακριτοποίησης πέντε σημείων για την διδιάστατη εξίσωση. Αναπτύχθηκαν M-files για την υλοποίηση των παραπάνω μεθόδων και παρουσιάζεται ο τρόπος με τον οποίο μπορούν να κληθούν από τον χρήστη. Τέλος παρουσιάζονται αριθμητικά αποτελέσματα που λαμβάνονται από τη χρήση των παραπάνω M-files. Λέξεις Κλειδιά: Αραιός πίνακας, πρόβλημα ιδιοτιμών, εξίσωση Schrödinger, μέθοδος Numerov, μέθοδος πέντε σημείων, MATLAB.

Abstract This dissertation deals with sparse matrixes of specific forms and their implementation in the MATLAB environment. Also deals with the algebraic eigenvalue problem the numerical computation of eigenvalues and eigenvectors using MATLAB. Also contains applications to differential equations. Specifically we solve the problem of eigenvalue computation in the one-dimensional and two-dimensional Schrödinger equation. The one-dimensional equation is discretized by two numerical methods of two-steps for second order differential equations. The five-point discretization method is used for the two-dimensional equation. The above methods are implemented with M-files and the usage of these files is presented. Finally, numerical results are obtained using the M-files. Keywords: Sparse matrix, eigenvalue problem, Schrödinger equation, Numerov method, five-points method, MATLAB.

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ Πρόλογος Περίληψη Περίληψη (στην αγγλική γλώσσα) ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ Εισαγωγή... Κεφάλαιο. Αραιοί Πίνακες.. Ορισμός Αραιού Πίνακας. 3.. Ειδικές Μορφές Αραιών Πινάκων Διαγώνιοι Πίνακες..3.3. Διαχείριση Διαγώνιων Πινάκων με το ΜΑΤLAB.... 7.3. Δημιουργία διαγώνιων πινάκων με την εντολή diag...7.3. Δημιουργία διαγώνιων πινάκων με την εντολή spdiags......8 Κεφάλαιο. Χαρακτηριστικά Μεγέθη Πίνακα. Το Πρόβλημα των Ιδιοτιμών 3. Εύρεση Ιδιοτιμών Ιδιοδιανυσμάτων.5.3 Εύρεση Ιδιοτιμών Ιδιοδιανυσμάτων με το MATLAB.. 30 Κεφάλαιο 3. Εφαρμογή στην εξίσωση Schrödinger 3. Η μονοδιάστατη ανεξάρτητη του χρόνου εξίσωση του Schrödinger 40 3.. Περιγραφή του προβλήματος...40 3.. Εφαρμογή αριθμητικών μεθόδων. 4 3.. Η διδιάστατη χρονικά ανεξάρτητη εξίσωση Schrödinger.....56 3.. Περιγραφή του προβλήματος... 56 3.. Εφαρμογή αριθμητικών μεθόδων. 57 Βιβλιογραφία..65

Εισαγωγή Η ευρεία εξάπλωση των μαθηματικών σε σχεδόν όλους τους κλάδους της επιστήμης οφείλεται στο γεγονός ότι φαινόμενα από εντελώς διαφορετικής φύσης συχνά περιγράφονται με παρόμοιο μαθηματικό τρόπο. Τέτοιες περιγραφές κατηγοριοποιούνται μαθηματικά στα πλαίσια ενός πολύ μικρού αριθμού διαφορετικών μοντέλων. Τα πιο απλά μαθηματικά υποδείγματα είναι τα γραμμικά, ακόμα και τα μη γραμμικά προβλήματα μπορεί να προσεγγισθούν από απλούστερα γραμμικά. Για το λόγο αυτό η γραμμική άλγεβρα αποτελεί έναν θεμελιώδη κλάδο των μαθηματικών με εφαρμογές σε όλες τις επιστήμες. Από την άλλη πλευρά τα προβλήματα της γραμμικής άλγεβρας μπορεί να επιλυθούν μέσω αλγορίθμων και αυτό αποτελεί τον κλάδο της αριθμητικής γραμμικής άλγεβρας. Πολλά φυσικά φαινόμενα περιγράφονται από διαφορικές εξισώσεις, οι οποίες με τη σειρά τους μπορεί να διακριτοποιηθούν και να μετατραπούν σε συστήματα γραμμικών αλγεβρικών εξισώσεων. Τα συστήματα αυτά χαρακτηρίζονται από αραιούς πίνακες συντελεστών οι οποίοι μάλιστα έχουν και συγκεκριμένη δομή. Το MATLAB είναι ένα διαδραστικό σύστημα του οποίου το βασικό στοιχείο δεδομένων είναι το διάνυσμα (array). Μας επιτρέπει να λύσουμε πολλά τεχνικά υπολογιστικά προβλήματα και ειδικότερα αυτά που περιγράφονται με πίνακες και διανύσματα σε πολύ λιγότερο χρόνο από αυτόν που απαιτείτε για να γραφεί ένα πρόγραμμα σε μία μη διαδραστική γλώσσα όπως η C ή η Fortran. Άλλωστε και το όνομα προέρχεται από τα αρχικά των λέξεων MATrix LABoratory και αρχικά σχεδιάστηκε για να παρέχει εύκολη πρόσβαση στο λογισμικό γραμμικής άλγεβρας LINPACK και EISPACK. Σήμερα το MATLAB έχει αναπτυχθεί σε τέτοιο βαθμό ώστε να χρησιμοποιείται από πολλές επιστήμες με τα επιπρόσθετα εξειδικευμένα πακέτα τα οποία ονομάζει toolboxes. Τα toolboxes είναι διαθέσιμα για πολλούς κλάδους όπως η επεξεργασία σήματος και εικόνας, τα συστήματα αυτόματου ελέγχου, τα νευρωνικά δίκτυα, η ασαφής λογική, η προσομοίωση και άλλα. Στην παρούσα εργασία θα ασχοληθούμε με την διαχείριση αραιών πινάκων και εφαρμογές τους με τη χρήση του MATLAB. Στο πρώτο κεφάλαιο παρουσιάζονται ειδικές μορφές αραιών πινάκων και η διαχείριση τους με το - -

MATLAB. Στο δεύτερο κεφάλαιο ασχολούμαστε με το αλγεβρικό πρόβλημα ιδιοτιμών. Στο τρίτο κεφάλαιο παρουσιάζουμε εφαρμογές στις διαφορικές εξισώσεις και συγκεκριμένα επιλύουμε το πρόβλημα εύρεσης ιδιοτιμών στην εξίσωση Schrödinger με διακριτοπιοίηση. Εφαρμόζουμε δύο αριθμητικές μεθόδους την μέθοδο των δύο βημάτων για την μονοδιάστατη εξίσωση και την μέθοδο διακριτοποίησης πέντε σημείων για την διδιάστατη εξίσωση. Τέλος, παρουσιάζουμε τα M-files που γράψαμε, τον τρόπο με τον οποίο μπορούν να κληθούν και τα αριθμητικά αποτελέσματα που πήραμε από τη χρήση τους. - -

Κεφάλαιο. Αραιοί Πίνακες. Ορισμός Αραιού Πίνακας Αραιοί (sparse) πίνακες καλούνται οι πίνακες που έχουν πολλά μηδενικά στοιχεία και λίγα μη μηδενικά. Ένα μέγεθος το οποίο μας δείχνει πόσο αραιός είναι ένας πίνακας είναι η πυκνότητα του και ορίζεται ως εξής: Πυκνότητα ενός αραιού πίνακα ορίζουμε το πλήθος των μη μηδενικών στοιχείων του πίνακα προς το πλήθος των στοιχείων του. Συνεπώς η πυκνότητα παίρνει τιμές από 0 (μηδενικός πίνακας) έως (κανένα μηδενικό στοιχείο).. Ειδικές Μορφές Αραιών Πινάκων Διαγώνιοι Πίνακες Στην στοιχειώδη γραμμική άλγεβρα έχουμε συναντήσει την έννοια του διαγώνιου πίνακα ο οποίος έχει μηδενικά στοιχεία παντού εκτός από την κύρια διαγώνιο. Ο πίνακας αυτός είναι μια πολύ ειδική μορφή αραιού πίνακα. Στην περίπτωση τετραγωνικού πίνακα η πυκνότητα του είναι το πολύ /n (καθώς το πλήθος των διαγώνιων στοιχείων ενός πίνακα nxn είναι n, ενώ το πλήθος όλων των στοιχείων του είναι n ). Όπως αναφέραμε και στην εισαγωγή αραιοί πίνακες με διαγώνια ή block διαγώνια μορφή εμφανίζονται στην μαθηματική μοντελοποίηση και συγκεκριμένα στην επίλυση διαφορικών εξισώσεων είτε συνήθως είτε με μερικές παραγώγους. Η γενική μορφή διαγώνιου πίνακα ο οποίος έχει k διαγώνιους πάνω από την κύρια διαγώνιο και l διαγώνιους κάτω από την κύρια διαγώνιο είναι: a = 0, για i j, j+... j+ k ij i j, j... j l - 3 -

Μια ακόμα ειδικότερη περίπτωση είναι αυτή στην οποία ο πίνακας έχει το ίδιο πλήθος διαγώνιων με μη μηδενικά στοιχεία πάνω και κάτω από την κύρια διαγώνιο. Γενική μορφή διαγώνιου πίνακα ο οποίος έχει k διαγώνιους πάνω και k διαγώνιους κάτω από την κύρια διαγώνιο a = 0, για i j, j+... j+ k ij i j, j... j k Ειδικές περιπτώσεις αραιών πινάκων είναι οι παρακάτω περιπτώσεις Διαγώνιοι πίνακες στους οποίους το k=0 Όπου a = 0, για i j ij ή a = 0, j i 0 ij Τριδιαγώνιοι πίνακες στους οποίους το k= Όπου a = 0, για i j, i j+, i j ij ή a = 0, j i {, 0,} ij Πενταδιαγώνιοι πίνακες στους οποίους το k= Όπου a = 0, για i j, i j+, i j+, i j, i j ij ή a = 0, j i {,, 0,, } ij Οι παραπάνω πίνακες είναι αραιοί αλλά με συγκεκριμένη δομή για το λόγο αυτό μπορούμε να κατασκευάσουμε αλγόριθμους που εκμεταλλεύονται τη συγκεκριμένη δομή και μειώνουν κατά πάρα πολύ τις πράξεις (υπολογιστικό κόστος). Ως προς την αποθήκευση θα δούμε παρακάτω ότι μπορούμε να γράψουμε τις διαγωνίους σε αραιούς πίνακες (πίνακες στήλη) και έτσι να μειώσουμε τον χώρο αποθήκευσης. Για παράδειγμα για έναν τριδιαγώνιο πίνακα διάστασης n=00 αν αποθηκεύσουμε μόνο τις διαγωνίους χρειαζόμαστε n+*(n-)=98 θέσεις αντί για n =0000 θέσεις. - 4 -

Θα ασχοληθούμε με τετραγωνικούς πίνακες n n. Έχουν την γενική μορφή a a a3 L a, n a n a a a3 L a, n a n a3 a3 a33 L a3, n a 3n A= M M M O M M an, an, an,3 L an, n a n, n an an an 3 ann, a L nn Κύρια διαγώνιος έχει στοιχεία a, a, a33, K, a,, a, n n n n Μια διαγώνιος πάνω από την κύρια έχει στοιχεία a, a3, a34, K, an, n Μια διαγώνιος κάτω από την κύρια έχει στοιχεία a, a3, a43, K, ann, Διαγώνιος πίνακας a = 0, για i j ή ij a = 0, j i 0 ij A a 0 0 L 0 0 a 0 L 0 = 0 0 a33 L 0 M M M O M 0 0 0 L a nn - 5 -

Τριδιαγώνιος Πίνακας a a 0 L 0 0 a a a3 L 0 0 0 a3 a33 L 0 0 A = M M M O M M 0 0 0 L an, n a n, n 0 0 0 ann, a L nn a = 0, για i j, i j+, i j ή ij { } a = 0, j i, 0, ij Πενταδιαγώνιος Πίνακας a a a3 0 K 0 0 0 a a a3 a4 K 0 0 0 a3 a3 a33 a34 K 0 0 0 0 a4 a43 a44 0 0 0 A K = M M M M O M M M 0 0 0 an, n 4 an, n 3 an, n an, n an, n 0 0 0 0 an, n 3 an, n an, n a n, n 0 0 0 0 0 ann, ann, a nn a = 0, για i j, i j+, i j+, i j, i j, ή ij { } a = 0, j i,, 0,, ij - 6 -

.3 Διαχείριση Διαγώνιων Πινάκων με το ΜΑΤLAB.3.. Δημιουργία διαγώνιων πινάκων με την εντολή diag. Το MATLAB για την δημιουργία διαγώνιων πινάκων έχει την εντολή diag η οποία συντάσσεται ως εξής: diag(v,k) όπου v το διάνυσμα και k είναι η διαγώνια θέση στην οποία θα τοποθετηθούν τα στοιχεία του διανύσματος. Έτσι αν το μήκος του διανύσματος v είναι n ο πίνακας που θα δημιουργηθεί θα είναι τετραγωνικός και θα έχει διάσταση n+k. Αναφερόμαστε στην κύρια διαγώνιο με τον αριθμό μηδέν ενώ για τις πάνω διαγωνίους με θετικούς ακέραιους και για τις κάτω διαγωνίους με αρνητικούς ακεραίους. Στο παρακάτω Πίνακα. και Σχήμα. φαίνονται οι θέσεις στις οποίες τοποθετούνται τα στοιχεία της διαγωνίου όπου k=0 είναι η κύρια διαγώνιος, όταν αναφερόμαστε στην θέση k= εννοούμε την θέση που βρίσκεται πάνω από την κύρια διαγώνιο, ενώ για k=- αναφερόμαστε στην διαγώνιο που βρίσκετε μια θέση κάτω από την κύρια διαγώνιο κ.ο.κ. για τις υπόλοιπες τιμές. Αν γράψουμε diag(v) χωρίς το k το διάνυσμα v θα τοποθετηθεί στην κύρια διαγώνιο. Δηλαδή όταν δεν αναφέρεται το k λαμβάνεται ίσο με το μηδέν. κ = 0 i = j κ = j i = κ = j i = κ = j i = κ = j i = Πίνακας. Διαγώνιες θέσεις πίνακα. - 7 -

Σχήμα. Διαγώνιες θέσεις πίνακα. Επίσης η εντολή μπορεί να χρησιμοποιηθεί και με όρισμα πίνακα diag(x,k) στην περίπτωση αυτή επιστρέφει διάνυσμα με τα στοιχεία της k διαγωνίου του πίνακα X. Πυκνότητα αραιού πίνακα Μπορούμε να βρούμε με το MATLAB το πλήθος των μη μηδενικών στοιχείων ενός πίνακα με την εντολή nnz(a). Συνεπώς η πυκνότητα του αραιού πίνακα Α είναι: nnz(a)/(n*n) Δηλαδή το πλήθος των μη μηδενικών στοιχείων του πίνακα προς (n*n) που είναι το πλήθος των στοιχείων του πίνακα και συνεπώς παίρνει τιμές από 0 (μηδενικός πίνακας) έως (κανένα μηδενικό στοιχείο). Παράδειγμα. diag(v,0) σχηματίζει πίνακα με κύρια διαγώνιο τα στοιχεία του διανύσματος v. Παράδειγμα. diag(v,) σχηματίζει πίνακα με τα στοιχεία του διανύσματος v τοποθετημένα πάνω από την κύρια διαγώνιο. - 8 -

Παράδειγμα 3. diag(v,-) σχηματίζει πίνακα με τα στοιχεία του διανύσματος v τοποθετημένα κάτω από την κύρια διαγώνιο. Παράδειγμα 4. diag(v,) σχηματίζει πίνακα με τα στοιχεία του διανύσματος v τοποθετημένα σε δύο θέσεις πάνω από την κύρια διαγώνιο. Παράδειγμα 5. diag(v,-) σχηματίζει πίνακα με τα στοιχεία του διανύσματος v τοποθετημένα σε δύο θέσεις κάτω από την κύρια διαγώνιο. Παράδειγμα 6. Έστω ότι θέλουμε να δημιουργήσουμε τον παρακάτω διαγώνιο πίνακα με κύρια διαγώνιο τα στοιχεία του διανύσματος d=[5 3 ]. 5 0 0 0 0 0 0 Α= 0 0 3 0 0 0 0 Για να μπορέσουμε όμως να δημιουργήσουμε αυτόν τον πίνακα πρέπει να ισχύει το εξής size(d)=n. Αρχικά ορίζουμε το μέγεθος του πίνακα που στην δική μας περίπτωση είναι n=4 και στην συνέχεια ορίζουμε το διάνυσμα d=[5 3 ] του οποίου τα στοιχεία, είναι τα στοιχεία τα οποία θα βρίσκονται στην κύρια διαγώνιο του πίνακα και χρησιμοποιώντας την εντολή diag(d,κ) ή την εντολή diag(d) οι οποίες είναι ισοδύναμες γιατί η τιμή κ=0 αντιστοιχεί στην κύρια διαγώνιο θα δημιουργήσουμε τον ζητούμενο πίνακα. Η κατασκευή του παραπάνω πίνακα στο MATLAB γίνεται ως εξής: >> n = 4; >> d = [5 3 ]; >> Α = diag(d) - 9 -

Και μας εμφανίζει: A = 5 0 0 0 0 0 0 0 0 3 0 0 0 0 Παρατηρούμε ότι ενώ έχουμε 6 θέσεις για να αποθηκεύσουμε τα στοιχεία του πίνακα εμείς χρειαζόμαστε και χρησιμοποιούμε μόνο τις 4 θέσεις του πίνακα μας. Ένας άλλος τρόπος δημιουργίας του παραπάνω πίνακα είναι να μην ορίσουμε το διάνυσμα d από την αρχή αλλά το ορίζουμε κατευθείαν μέσα στην εντολή diag([d]) είναι ο παρακάτω: >> Α = diag([5 3 ]) Παράδειγμα 7. Τώρα θα δημιουργήσουμε έναν πίνακα στον οποίο θέλουμε να τοποθετήσουμε τα στοιχεία του διανύσματος u στην διαγώνιο που είναι μια θέση πάνω από την κύρια διαγώνιο εδώ το κ θα είναι ίσο με. Όπως βλέπουμε παρακάτω επειδή το διάνυσμα έχει 4 στοιχεία ο πίνακας που δημιουργήθηκε είναι διάστασης 5x5. Επίσης, θα πρέπει να αναφέρουμε ότι το μέγεθος του διανύσματος u θα πρέπει να είναι size(u)=n-. Και για να κατασκευάσουμε τον παραπάνω πίνακα στο MATLAB γράφουμε: >> u=[5 4-3 ]; >> A= diag(u,) Και μας εμφανίζει: A = 0 5 0 0 0 0 0 4 0 0 0 0 0-3 0 0 0 0 0 0 0 0 0 0-0 -

Εναλλακτικά, θα μπορούσαμε να γράψουμε diag( [5 4-3 ],). Παράδειγμα 8. Για να κατασκευάσουμε έναν πίνακα που έχει στην διαγώνιο η οποία είναι μια θέση κάτω από την κύρια διαγώνιο τα στοιχεία του διανύσματος l=[-5 8-6 ] στο MATLAΒ γράφουμε: >> l=[-5 8-6 ]; >> A= diag(l,-) Και μας εμφανίζει: A = 0 0 0 0 0-5 0 0 0 0 0 8 0 0 0 0 0-6 0 0 0 0 0 0 Εναλλακτικά, θα μπορούσαμε να γράψουμε diag( [-5 8-6 ],-). Παράδειγμα 9. Σ αυτό το παράδειγμα δημιουργούμε έναν πίνακα που να έχει τα στοιχεία ενός διανύσματος u στην θέση κ= η οποία βρίσκεται θέσεις πάνω από την κύρια διαγώνιο και το size(u)=n-. Επίσης, εδώ παρατηρούμε ότι το διάνυσμα έχει 4 στοιχεία ενώ ο πίνακας που δημιουργήθηκε είναι διάστασης 6x6. >> u = [-7-6 -3 ]; >> A = diag(u,) - -

Και μας εμφανίζει: A = 0 0-7 0 0 0 0 0 0-6 0 0 0 0 0 0-3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Εναλλακτικά, θα μπορούσαμε να γράψουμε diag([-7-6 -3 ],). Παράδειγμα 0. Αντίστοιχα για την δημιουργία της διαγώνιου που βρίσκεται θέσεις κάτω από την κύρια θα έχουμε κ= - και το μέγεθος του διανύσματος l θα είναι size(l)=n-. >> l=[6-6 -4 ]; >> A= diag(l,-) Και μας εμφανίζει: A = 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0-6 0 0 0 0 0 0-4 0 0 0 0 0 0 0 0 Εναλλακτικά, θα μπορούσαμε να γράψουμε diag([6-6 -4 ],-). Παρακάτω θα ασχοληθούμε με την δημιουργία ενός τριδιαγώνιου πίνακα. Για την δημιουργία του θα χρησιμοποιήσουμε τρία διανύσματα και τρεις θέσεις την θέση κ=0 που είναι η κύρια διαγώνιος, την θέση κ= που είναι μια θέση πάνω από την κύρια διαγώνιο και την θέση κ= - που είναι μια θέση κάτω από την κύρια διαγώνιο. - -

Παράδειγμα. Έστω ότι τώρα θέλουμε να κατασκευάσουμε έναν τριδιαγώνιο πίνακα στον οποίο: τα στοιχεία του διανύσματος d να τοποθετηθούν στην κύρια διαγώνιο τα στοιχεία του διανύσματος u να τοποθετηθούν στην διαγώνιο πάνω από την κύρια και τα στοιχεία του διανύσματος l να τοποθετηθούν στην διαγώνιο κάτω από την κύρια. Θα πρέπει όμως να ισχύουν και τα εξής: Size(d)=n Size(u)=n- Size(l)= n- Τώρα για να κατασκευάσουμε τον παραπάνω τρδιαγώνιο πίνακα διάστασης n στο MATLAB ακολουθούμε τα παρακάτω βήματα: αρχικά ορίζουμε το διάνυσμα d με την εντολή d= [5-3 7 6 4] στην συνέχεια ορίζουμε το διάνυσμα u με την εντολή u = [ 6 8 5 3 ] και τέλος ορίζουμε το διάνυσμα l με την εντολή l = [8-6 -3 -] και ο ζητούμενος τριδιαγώνιος πίνακας Α δημιουργείτε με την εντολή: diag(d)+diag(u,)+diag(l,-) >> d= [5-3 7 6 4]; >> u = [ 6 8 5 3 ]; >> l = [8-6 -3 -]; >> A=diag(d)+diag(u,)+diag(l,-) Και μας εμφανίζει: A = 5 0 0 0 0 8-6 0 0 0 0-3 8 0 0 0 0 6 7 5 0 0 0 0-3 6 3 0 0 0 0-4 - 3 -

Παράδειγμα. Πολλές φορές οι πίνακες που εμφανίζονται στα γραμμικά συστήματα είναι αραιοί αλλά με μία συγκεκριμένη συνήθως διαγώνια δομή. Για το λόγο αυτό και εμείς θα δημιουργήσουμε τον παρακάτω τριδιαγώνιο πίνακα που εμφανίζεται πολύ συχνά στην επίλυση διαφορικών εξισώσεων και ο οποίος εκτός από την κύρια διαγώνιο έχει και από μια διαγώνιο πάνω και κάτω. A = O O O Και απο πριν γνωρίζουμε ότι για έναν τριδιαγώνιο πίνακα ισχύει το εξής: a = 0, για i j, i j+, i j ij ή { } a = 0, j i, 0, ij Και για να κατασκευάσουμε τον παραπάνω τριδιαγώνιο πίνακα διάστασης n στο MATLAB γράφουμε: >> n = 7; >> A = -*diag(ones(n,))+diag(ones(n-,),)+diag(ones(n-,),-) Και μας εμφανίζει: A = - 0 0 0 0 0-0 0 0 0 0-0 0 0 0 0-0 0 0 0 0-0 0 0 0 0-0 0 0 0 0 - - 4 -

Οπού με την εντολή diag(ones(n,)) πολλαπλασιασμένη με το - δημιουργούμε την κύρια διαγώνιο όπου όλα τα στοιχεία της είναι -, ενώ με την εντολή diag(ones(n-,),) δημιουργούμε την διαγώνιο πάνω από την κύρια και αντίστοιχα με την εντολή diag(ones(n-,),-) δημιουργούμε την διαγώνιο κάτω από την κύρια με όλα τα στοιχεία τους ίσα με το ένα. Παράδειγμα 3. Έστω ότι θέλουμε να κατασκευάσουμε έναν πενταδιαγώνιο πίνακα στον οποίο: τα στοιχεία του διανύσματος d να τοποθετηθούν στην κύρια διαγώνιο. τα στοιχεία του διανύσματος u να τοποθετηθούν μία θέση πάνω από την κύρια διαγώνιο δηλαδή στην θέση κ=. τα στοιχεία του διανύσματος u να τοποθετηθούν δύο θέσεις πάνω από την κύρια διαγώνιο δηλαδή στην θέση κ=. τα στοιχεία του διανύσματος l να τοποθετηθούν μία θέση κάτω από την κύρια διαγώνιο στην θέση κ= -. τα στοιχεία του διανύσματος l να τοποθετηθούν δύο θέσεις κάτω από την κύρια διαγώνιο στην θέση κ= -. Θα πρέπει όμως να ισχύουν και τα εξής: Size(d)=n Size(u)=n- Size(u)=n- Size(l)= n- Size(l)= n- Τώρα για να κατασκευάσουμε τον παραπάνω πενταδιαγώνιο πίνακα διάστασης n στο MATLAB ακολουθούμε τα παρακάτω βήματα: αρχικά ορίζουμε το διάνυσμα d με την εντολή d = [5-3 7 6 4 -]. μετά ορίζουμε το διάνυσμα u με την εντολή u = [ 6 8 5 3 -] και το διάνυσμα u = [ 3 9 6-3]. στην συνέχεια ορίζουμε το διάνυσμα l με την εντολή l = [8-6 -3-3] και το διάνυσμα l = [- 4 3 9]. και τέλος με την εντολή A=diag(d)+diag(u,)+diag(u,)+diag(l,-)+diag(l,) δημιουργείτε ο ζητούμενος πίνακας Α. - 5 -

>> d = [5-3 7 6 4 -]; >> u = [ 6 8 5 3 -]; >> u = [ 3 9 6-3]; >> l = [8-6 -3-3]; >> l = [- 4 3 9]; >> A=diag(d)+diag(u,)+diag(u,)+diag(l,-)+diag(l,-) Και μας εμφανίζει: A = 5 0 0 0 0 8-6 3 0 0 0 - - 3 8 9 0 0 0 4 6 7 5 6 0 0 0-3 6 3-3 0 0 0 3-4 - 0 0 0 0 9 3 - Παράδειγμα 4. Έστω ότι σ αυτό το παράδειγμα θέλουμε να κατασκευάσουμε τον παρακάτω πενταδιαγώνιο πίνακα. 4 4 4 4 A = O O O O O 4 4 4 a = 0, για i j, i j+, i j+, i j, i j, ij ή { } a = 0, j i,, 0,, ij - 6 -

Και για την κατασκευή αυτού του πενταδιαγώνιου πίνακα διάστασης n γράφουμε στο MATLAB: >> n = 0; >>A = -4*diag(ones(n,))+diag(ones(n-,),)+diag(ones(n-,),-) +diag(ones(n-,),)+diag(ones(n-,),-) και μας εμφανίζει: A = -4 0 0 0 0 0 0 0-4 0 0 0 0 0 0-4 0 0 0 0 0 0-4 0 0 0 0 0 0-4 0 0 0 0 0 0-4 0 0 0 0 0 0-4 0 0 0 0 0 0-4 0 0 0 0 0 0-4 0 0 0 0 0 0 0-4 Οπού με την εντολή diag(ones(n,)) πολλαπλασιασμένη με το - δημιουργείτε η κύρια διαγώνιος που όλα τα στοιχεία της είναι -, ενώ με την εντολή diag(ones(n-,),) δημιουργούμε την διαγώνιο πάνω από την κύρια και αντίστοιχα με την εντολή diag(ones(n-,),-) δημιουργούμε την διαγώνιο κάτω από την κύρια με όλα τα στοιχεία τους ίσα με το ένα. - 7 -

.3.. Δημιουργία διαγώνιων πινάκων με την εντολή spdiags. Εδώ θα ασχοληθούμε μόνο με το πώς δημιουργούμε αραιούς διαγώνιους πίνακες με την εντολή spdiags. Το συντακτικό της εντολής είναι: spdiags(b,d,m,n) όπου Β πίνακας, d διάνυσμα με ακέραιες τιμές, m, n θετικοί αριθμοί. Επιστρέφει αραιό πίνακα διάστασης mxn με διαγώνιους τις στήλες του πίνακα Β στις θέσεις που ορίζει το διάνυσμα d αντίστοιχα. Το πλήθος των στηλών του θα είναι ίσο με το μήκος του d αφού η πρώτη στήλη του Β θα τοποθετηθεί στην θέση d(), η δεύτερη στήλη του Β στη θέση d() κ.ο.κ.. Ο πίνακας που δημιουργείται με την εντολή αυτή αποθηκεύεται από το MATLAB με ειδικό τρόπο που δεν κρατούνται όλες οι mxn θέσεις αλλά μόνο τα μη μηδενικά στοιχεία μαζί με την πληροφορία της θέσης τους στον πίνακα. Παράδειγμα 5. Σ αυτό το παράδειγμα θα δημιουργήσουμε τον παρακάτω τριδιαγώνιο πίνακα A = O O O με διαφορετικό τρόπο από αυτό που τον δημιουργήσαμε στο παράδειγμα. χρησιμοποιώντας την εντολή spdiags γράφοντας στο ΜATLAB: >> n = 7; >> e = ones(n,); >> A = spdiags([e -*e e], -:,n,n); - 8 -

Όπου με την εντολή e=ones(n,) δημιουργούμε έναν πίνακα στήλη ο οποίος έχει όλα τα στοιχεία του ίσα με. Στην συνέχεια με την εντολή A=spdiags([e -*e e], -:,n,n) δημιουργούμε έναν αραιό πίνακα A διάστασης nxn (δηλαδή όπου n=7 άρα θα έχουμε έναν πίνακα 7x7) με στοιχεία της κύριας διαγωνίου τα στοιχεία που περιέχονται στον πίνακα στήλη πολλαπλασιασμένα με - (-*e) ενώ τα στοιχεία των διαγώνιων που βρίσκονται πάνω και κάτω από την κύρια θα έχουν τα στοιχεία του πίνακα στήλη (e) και οι θέσεις που θα τοποθετηθούν θα είναι -,0, (-:) για κάθε διαγώνιο. Εδώ ο πίνακας Β είναι ο nx3 πίνακας [e -*e e] και το διάνυσμα d είναι το -: δηλαδή d=[-,0,]. Για να δούμε τον πίνακα που δημιουργήσαμε γράφουμε: >> A A = (,) - (,) (,) (,) - (3,) (,3) (3,3) - (4,3) (3,4) (4,4) - (5,4) (4,5) (5,5) - (6,5) (5,6) (6,6) - (7,6) (6,7) (7,7) - Παρατηρούμε ότι μας επιστρέφει την θέση κάθε μη μηδενικού στοιχείου και την τιμή του. - 9 -

Για να δούμε τον πίνακα στη γνωστή μας μορφή γράφουμε >>full(a) >> ans = - 0 0 0 0 0-0 0 0 0 0-0 0 0 0 0-0 0 0 0 0-0 0 0 0 0-0 0 0 0 0 - Η εντολή full(a) μετατρέπει έναν πίνακα ο οποίος είναι αποθηκευμένος με αραιό τρόπο σε πλήρη πίνακα. Στην περίπτωση μας ο αραιός πίνακας Α χρησιμοποιεί 60 bytes μνήμη ενώ ο full πίνακας χρησιμοποιεί 39 bytes μνήμη. Η διαφορά αυτή είναι μεγαλύτερη και αξιοσημείωτη σε μεγάλους αραιούς πίνακες. (η πυκνότητα του πίνακα Α είναι 0.3878). Για να δούμε αν ένας πίνακας είναι αποθηκευμένος σαν αραιός χρησιμοποιούμε την εντολή issparse(a) επιστρέφει την τιμή αν ο πίνακας είναι αποθηκευμένος σαν αραιός και την τιμή 0 αν όχι. Στην περίπτωση μας >> issparse(a) >> ans = - 0 -

Παράδειγμα 6. Επομένως ένας δεύτερος τρόπος για να κατασκευάσουμε στο MATLAB τον παρακάτω πενταδιαγώνιο πίνακα 4 4 4 4 A = O O O O O 4 4 4 χρησιμοποιώντας την εντολή του προηγούμενου παραδείγματος είναι να γράψουμε: >> n=7; >> e=ones(n,); >> A= spdiags([e e -4*e e e], -:,n,n); >> full(a) A = -4 0 0 0 0-4 0 0 0-4 0 0 0-4 0 0 0-4 0 0 0-4 0 0 0 0-4 Όπου με την εντολή e=ones(n,) δημιουργούμε έναν πίνακα στήλη ο οποίος έχει όλα τα στοιχεία του ίσα με. - -

Στην συνέχεια με την εντολή A=spdiags([e e -4*e e e], -:,n,n) δημιουργούμε έναν αραιό πίνακα A διάστασης nxn (δηλαδή όπου n=7 άρα θα έχουμε έναν πίνακα 7x7) με στοιχεία της κύριας διαγωνίου τα στοιχεία που περιέχονται στον πίνακα στήλη πολλαπλασιασμένα με -4 (-4*e) ενώ τα στοιχεία των διαγώνιων που βρίσκονται στις θέσεις κ = -,- και κ =, θα έχουν στοιχεία στις διαγωνίους τους τα στοιχεία του πίνακα στήλη (e). Η πυκνότητα του αραιού πίνακα A είναι: >> nnz(a)/(n*n) >> ans = 0.598 Μπορούμε να μετατρέψουμε έναν πίνακα σε αραιό (με την έννοια της αποθήκευσης) γράφοντας sparse(a). Ο πίνακας A αποθηκεύεται από το MATLAB με ειδικό τρόπο που δεν κρατούνται όλες οι mxn θέσεις αλλά μόνο τα μη μηδενικά στοιχεία μαζί με την πληροφορία της θέσης τους στον πίνακα. Μπορούμε να δημιουργήσουμε έναν πίνακα με αραιή μορφή με την εντολή sparse(i, j, s, m, n, nzmax) i και j είναι διανύσματα με τις θέσεις στις οποίες θα τοποθετηθούν τα μη μηδενικά στοιχεία, s είναι διάνυσμα που περιέχει τα μη μηδενικά στοιχεία, mxn είναι η διάσταση του πίνακα που δημιουργείται. Έτσι ώστε για τον πίνακα Α που δημιουργείται ισχύει A(i(k),j(k))=s(k). - -

Κεφάλαιο. Χαρακτηριστικά Μεγέθη Πίνακα. Το Πρόβλημα των Ιδιοτιμών Το πρόβλημα της εύρεσης των ιδιοτιμών και ιδιοδιανυσμάτων ενός πίνακα είναι από τα κυρίαρχα προβλήματα της γραμμικής άλγεβρας και έχει πολλές πρακτικές εφαρμογές. Οι ιδιοτιμές και τα ιδιοδιανύσματα καλούνται και χαρακτηριστικές τιμές και χαρακτηριστικά διανύσματα αντίστοιχα και συνολικά χαρακτηριστικά μεγέθη του πίνακα. Παρακάτω διατυπώνουμε το πρόβλημα χαρακτηριστικών μεγεθών. Δίνετε ένας πίνακας Α πραγματικών αριθμών nxn ζητούμε πραγματικό αριθμό λ και διάνυσμα πραγματικών αριθμών n u (διάστασης n), έτσι ώστε να ισχύει: Au = λu Η παραπάνω σχέση μπορεί να γραφεί ισοδύναμα Au = λu Au λu = 0 Au λiu=0 ( A λi) u=0 () Τότε το u καλείται ιδιοδιάνυσμα (eigenvector) ή χαρακτηριστικό διάνυσμα του πίνακα Α και ο πραγματικός αριθμός λ καλείται ιδιοτιμή (eigenvalue) ή χαρακτηριστική τιμή του πίνακα Α. - 3 -

Αν ο πίνακας A λi είναι αντιστρέψιμος τότε η () έχει μοναδική λύση την u =0 ενώ αν δεν είναι αντιστρέψιμος τότε θα έχει και μη μηδενικές λύσεις. Δηλαδή η () έχει μη μηδενικές λύσεις αν και μόνο αν ( λ ) det A I = A λi = 0 () Η () λέγεται χαρακτηριστική εξίσωση, η det( A-λI ) λέγετε χαρακτηριστική ορίζουσα. Όταν αναπτύξουμε την χαρακτηριστική ορίζουσα προκύπτει ένα πολυώνυμο ως προς λ βαθμού n, αυτό λέγεται χαρακτηριστικό πολυώνυμο. Το πρόβλημα των ιδιοτιμών δεν έχει πάντα λύση στο σύνολο των πραγματικών αριθμών. Αφού οι ιδιοτιμές είναι ρίζες ενός πολυωνύμου μπορεί να είναι και μιγαδικοί αριθμοί. Στα προβλήματα με τα οποία θα ασχοληθούμε στο επόμενο κεφάλαιο οι πίνακες που προκύπτουν από την διακριτοποίηση των διαφορικών εξισώσεων είναι συμμετρικοί, όπως φαίνεται και από τις ιδιότητες των χαρακτηριστικών μεγεθών που αναφέρουμε και παρακάτω οι συμμετρικοί πίνακες έχουν μόνο πραγματικές ιδιοτιμές. Παρακάτω θα αναφερθούμε στις βασικές ιδιότητες των ιδιοτιμών - ιδιοδιανυσμάτων ενός πίνακα:. Τα ιδιοδιανύσματα ενός nxn πίνακα Α είναι γραμμικός ανεξάρτητα αν οι αντίστοιχες ιδιοτιμές είναι διαφορετικές μεταξύ τους,. Οι ιδιοτιμές ενός τριγωνικού πίνακα είναι τα διαγώνια στοιχεία του. 3. Αν Α και Β είναι όμοιοι πίνακες, είναι δηλαδή B = P AP, τότε οι πίνακες Α και Β έχουν τις ίδιες ιδιοτιμές. 4. Οι ιδιοτιμές και οι συνιστώσες των ιδιοδιανυσμάτων ενός συμμετρικού πίνακα είναι πραγματικοί αριθμοί και τα ιδιοδιανύσματα που αντιστοιχούν σε διαφορετικές μεταξύ τους ιδιοτιμές είναι ορθογώνια. 5. Αν Α είναι ένας συμμετρικός πίνακας με ιδιοτιμές λ, λ,..., λ n διαφορετικές μεταξύ τους, τότε: det A = λ λ... λ n i. ( ) tr A = λ + λ+... + λn ii. ( ) - 4 -

. Εύρεση Ιδιοτιμών Ιδιοδιανυσμάτων Για να βρούμε τις ιδιοτιμές ενός πίνακα κάνουμε τα εξής βήματα: ) Αρχικά σχηματίζουμε τον πίνακα A λι. ) Έπειτα βρίσκουμε την ορίζουσα του πίνακα. 3) Στην συνέχεια το αποτέλεσμα που προέκυψε από την ορίζουσα είναι το χαρακτηριστικό πολυώνυμο το οποίο για nxn πίνακα έχει βαθμό n. 4) Και τέλος, βρίσκουμε τις ρίζες του πολυωνύμου που είναι και οι ιδιοτιμές και για να βρούμε τα ιδιοδιανύσματα για κάθε ιδιοτιμή που βρήκαμε σχηματίζουμε τον πίνακα A λ Ι και λύνουμε το ομογενές σύστημα ( A λ Ι ) u = 0. i i Παράδειγμα. Να βρεθούν οι ιδιοτιμές και τα ιδιοδιανύσματα του πίνακα 6 0 0 Σχηματίζουμε τον πίνακα 6 0 0 λ 6 A λι= 0 λ 0 0 = λ 0 0 0 0 0 λ - 5 -

Το χαρακτηριστικό πολυώνυμο είναι λ 6 Φ ( λ) = λ 0 = 0 λ λ 0 0 λ = ( λ) + 6 0 λ λ 0 = - (+λ) (-λ) ( ) 6 ( ) 9 9 3 = λ + λ + λ = = ( λ + 3) (λ-) (λ-3) λ λ = Το χαρακτηριστικό πολυώνυμο έχει 3 διακεκριμένες ρίζες άρα οι ιδιοτιμές είναι: λ = 3, λ =, λ = 3 3 Για να βρούμε το ιδιοδιάνυσμα u που αντιστοιχεί στην ιδιοτιμή λ = 3 πρέπει να λύσουμε το σύστημα A λ Ι = 0 A 6 3 0 0 6 λ Ι = 0 + 0 3 0 = 4 0 0 0 0 3 0 4 Εφαρμόζουμε την απαλοιφή Gauss 6 0 4 0 4 0 4 4 0 4 0 0 4 8 0 0 4 6 0 0 0 0 Ας είναι u ( x y z) =,, τότε T x + 4z = 0 y - z = 0-6 -

Θέτουμε z = k από όπου προκύπτει y = k και x = - 4k. Το ιδιοδιάνυσμα είναι: Επιλέγουμε k = και τότε το u u 4k 4 = k = k k είναι u = 4 Με τον ίδιο τρόπο βρίσκουμε και τα ιδιοδιανύσματα u και u 3 που αντιστοιχούν στις ιδιοτιμές λ, λ3 και είναι u 0 = 6 u, 3 = Παράδειγμα. Να βρεθούν οι ιδιοτιμές και τα ιδιοδιανύσματα του πίνακα 0 0 0 0 Σχηματίζουμε τον πίνακα 0 0 0 0 λ 0 A λι= 0 λ 0 0 = λ 0 0 0 0 0 λ - 7 -

Το χαρακτηριστικό πολυώνυμο είναι: λ 0 0 λ 0 Φ ( λ) = λ 0 = ( λ) = 0 λ 0 λ = - (+λ) (-λ)(-λ) Το χαρακτηριστικό πολυώνυμο έχει απλή ρίζα - και διπλή ρίζα, άρα οι ιδιοτιμές είναι λ =, λ = λ = 3 Παρατηρούμε ότι οι ιδιοτιμές είναι ίσες με τα διαγώνια στοιχεία του πίνακα. Πραγματικά σε έναν άνω ή κάτω τριγωνικό πίνακα (άρα και διαγώνιο)οι ιδιοτιμές του συμπίπτουν με τα διαγώνια στοιχεία του. Εδώ έχει ενδιαφέρων να βρούμε τα ιδιοδιανύσματα που αντιστοιχούν στη διπλή ρίζα άρα πρέπει να λύσουμε το σύστημα A Ι = 0 0 0 0 0 0 0 A Ι= 0 0 0 = 0 0 0 0 0 0 0 Καταλήγουμε σε μόνο μία γραμμή η οποία αν u ( x y z) T =,, γράφετε x = 0 άρα τα ιδιοδιανύσματα είναι όλα τα στοιχεία του χώρου με πρώτη συντεταγμένη 0. Το σύνολο των ιδιοδιανυσμάτων είναι: u = u, = 0 0 u, 3 = 0 0-8 -

Παράδειγμα 3. Να βρεθούν οι ιδιοτιμές και τα ιδιοδιανύσματα του πίνακα 3 0 0 3 0 Σχηματίζουμε τον πίνακα 3 0 0 0 3 λ 0 A λι = 0 λ 0 0 = 0 λ 3 0 0 0 3 λ Το χαρακτηριστικό πολυώνυμο είναι: 3 λ 0 λ 0 Φ ( λ) = 0 λ = ( 3 λ) - ( ) = 3 λ λ 3 λ = (3-λ) (-λ) ( λ) - (3-λ) (-) 3 + (-) (-) (-)= = (6-3λ - λ + λ ) (-λ) + 9 - λ - 4= 3 = (- 6λ + 3λ + λ - λ ) + 9-3λ 3 = - λ + 5λ - 9λ + 5= = - (λ-) (λ - 4λ + 5) -4= Σύμφωνα με τα παραπάνω παρατηρούμε ότι το τριώνυμο που προκύπτει έχει διακρίνουσα αρνητική δηλαδή Δ<0 άρα δεν έχει πραγματικές ρίζες. Αυτή η περίπτωση όμως δεν θα εξεταστεί στα πλαίσια αυτής της εργασίας γιατί σύμφωνα με τις βασικές ιδιότητες των ιδιοτιμών που αναφέραμε παραπάνω (ιδιότητα 4.) οι ιδιοτιμές ενός συμμετρικού πίνακα είναι θετικές και θα ασχοληθούμε με την εύρεση ιδιοτιμών μόνο συμμετρικών πινάκων. Επομένως συμπεραίνουμε ότι έχουμε μία πραγματική ιδιοτιμή την λ =. - 9 -

Το πρόβλημα της εύρεσης των ιδιοτιμών ενός πίνακα μεγαλύτερου μεγέθους είναι επίπονο αφού απαιτεί την εύρεση των ριζών πολυωνύμου μεγάλου βαθμού. Για το λόγο αυτό μεγάλη έμφαση έχει δοθεί στην κατασκευή αριθμητικών μεθόδων. Μια πολύ γνωστή μέθοδος είναι η μέθοδος της δύναμης η οποία βρίσκει μία ιδιοτιμή σε κάθε εφαρμογή της, μπορούμε να βρούμε την μικρότερη ή την μεγαλύτερη ιδιοτιμή ή την ιδιοτιμή που είναι πλησιέστερη σε έναν αριθμό. Άλλες μέθοδοι είναι η QR και η QZ παραγοντοποίηση, στα πλαίσια της εργασίας αυτής δεν θα αναφερθούμε περισσότερο σε αριθμητικές μεθόδους επίλυσης του προβλήματος ιδιοτιμών αλλά θα δούμε πως μπορούμε να χρησιμοποιήσουμε το MATLAB για το σκοπό αυτό..3 Εύρεση Ιδιοτιμών Ιδιοδιανυσμάτων με το MATLAB Η εύρεση των ιδιοτιμών και των ιδιοδιανυσμάτων στο MATLAB γίνεται με την εντολή eig. Παρακάτω βλέπουμε έξι διαφορετικούς τρόπους με τους οποίους συντάσσεται η εντολή eig. d=eig(a) επιστρέφει ένα διάνυσμα το οποίο περιέχει τις ιδιοτιμές του τετραγωνικού πίνακα Α d=eig(a,b) επιστρέφει ένα διάνυσμα το οποίο περιέχει τις ιδιοτιμές του γενικευμένου προβλήματος ιδιοτιμών Au διάστασης. = λbu όπου Α και Β τετραγωνικοί πίνακες ίδιας [V,D]=eig(A) επιστρέφει πίνακες V και D o πίνακας D είναι διαγώνιος και τα στοιχεία της κύριας διαγωνίου του είναι οι ιδιοτιμές του πίνακα Α, ενώ ο πίνακας V περιέχει σαν στήλες τα ιδιοδιανύσματα του Α (ισχύει AV=DV) [V,D]=eig(A,B) αντίστοιχα με την παραπάνω για το γενικευμένο πρόβλημα ιδιοτιμών. [V,D]=eig(A,B,flag) με το όρισμα flag μπορούμε να επιλέξουμε τον αλγόριθμο που θα χρησιμοποιηθεί για τον υπολογισμό chol χρησιμοποιεί παραγοντοποίηση Cholesky, qz αγνοεί την συμμετρία και χρησιμοποιεί τον αλγόριθμο QZ. - 30 -

Παράδειγμα 4. Όπως αναφέραμε και προηγουμένως η εντολή d=eig(a) επιστρέφει σε ένα διάνυσμα στήλη τις ιδιοτιμές ενός πίνακα μόνο εάν ο συγκεκριμένος πίνακας είναι τετραγωνικός και αυτό φαίνεται και στο MATLAB αν γράψουμε: >> A = [ ; - -] A = - - >> d=eig(a) Μας εμφανίζει το παρακάτω μήνυμα το οποίο μας λέει ότι δεν μπορούμε να βρούμε τις ιδιοτιμές αυτού του πίνακα γιατί ο συγκεκριμένος πίνακας Α δεν είναι τετραγωνικός.??? Error using ==> eig Matrix must be square. Παράδειγμα 5. Έστω ότι τώρα με την βοήθεια της εντολής d=eig(a) θέλουμε να βρούμε στο MATLAB τις ιδιοτιμές του παρακάτω πίνακα Α που είναι και ο πίνακας του παραδείγματος. >> A = [- 6; 0; 0 ]; >> d = eig(a) - 3 -

d = -3.0000 3.0000.0000 Αρχικά με την εντολή A=[- 6; 0; 0 ] δημιουργούμε τον τετραγωνικό πίνακα Α και με την εντολή d=eig(a) βρίσκουμε τις ιδιοτιμές του πίνακα Α και τις τοποθετούμε στο διάνυσμα d. Άρα οι ιδιοτιμές του πίνακα Α είναι -3, 3 και. Παράδειγμα 6. Σ αυτό το παράδειγμα θέλουμε να βρούμε στο MATLAB τις ιδιοτιμές του παρακάτω πίνακα Β που είναι και ο πίνακας του παραδείγματος. >> B = [- 0 0; 0; 0 ] >> d=eig(b) d = - Αρχικά με την εντολή B = [- 0 0; 0; 0 ] δημιουργούμε τον τετραγωνικό πίνακα B και με την εντολή d=eig(β) βρίσκουμε τις ιδιοτιμές του πίνακα Β και τις τοποθετούμε στο διάνυσμα d. Άρα οι ιδιοτιμές του πίνακα Β είναι, και -. - 3 -

Παράδειγμα 7. Σ αυτό το παράδειγμα θέλουμε να βρούμε στο MATLAB τις ιδιοτιμές του παρακάτω πίνακα C που είναι και ο πίνακας του παραδείγματος 3. >> C = [3-0; 0 -; - 3 0] >> d = eig(c) d =.0000 +.0000i.0000 -.0000i.0000 Αρχικά με την εντολή C=[3-0; 0 -; - 3 0] δημιουργούμε τον τετραγωνικό πίνακα C και με την εντολή d=eig(c) βρίσκουμε τις ιδιοτιμές του πίνακα C και τις τοποθετούμε στο διάνυσμα d. Άρα οι ιδιοτιμές του πίνακα C είναι οι.0000 +.0000i,,.0000 -.0000i που είναι μιγαδικοί αριθμοί και η.0000 που είναι και η μοναδική πραγματική ιδιοτιμή. Παρακάτω θα δούμε πώς μπορούμε να βρούμε ταυτόχρονα τις ιδιοτιμές και τα ιδιοδιανύσματα των προηγούμενων παραδειγμάτων (παράδειγμα -3.) χρησιμοποιώντας την εντολή [V,D]=eig(A) (εντολή 3.) η οποία δέχεται τετραγωνικό πίνακα Α και επιστρέφει δύο πίνακες τους πίνακες V και D. Ο πίνακας D (δεύτερος πίνακας) είναι διαγώνιος πίνακας και στις διαγώνιες θέσεις του έχει τις ιδιοτιμές (diag(d)). Ο V πίνακας (πρώτος πίνακας) περιέχει τα ιδιοδιανύσματα με την σειρά που έχουν οι ιδιοτιμές. - 33 -

Παράδειγμα 8. Θέλουμε να βρούμε τις ιδιοτιμές του αλλά και τα ιδιοδιανύσματα του πίνακα Α του παραδείγματος χρησιμοποιώντας την εντολή [V,D]=eig(A). >> A = [- 6; 0; 0 ] >> [V,D] = eig(a) V = -0.879 0.6667-0.0000 0.4364 0.6667-0.9864 0.8 0.3333 0.644 D = -3.0000 0 0 0 3.0000 0 0 0.0000 Στο παράδειγμα αυτό βλέπουμε ότι η πρώτη στήλη του πίνακα V είναι το ιδιοδιάνυσμα που αντιστοιχεί στην ιδιοτιμή -3 (-3.000) δηλαδή στην ιδιοτιμή που βρίσκεται στην θέση (,) του πίνακα D. 4 Πραγματικά θεωρητικά βρήκαμε ότι u = k όπου k. Εδώ βλέπουμε ότι το k = 0.8 γιατί αυτό είναι το κανονικοποιημένο δηλαδή για το u = (x, y, z) Ισχύει x + y + z = - 34 -

Και για το συγκεκριμένο παράδειγμα αν γράψουμε στο MATLAB την παρακάτω εντολή θα δούμε ότι αυτό πραγματικά ισχύει: >> (-0.879)^ + (0.4364)^ + (0.8)^ >> ans =.0000 Όμοια στη δεύτερη στήλη του πίνακα V βρίσκεται το ιδιοδιάνυσμα που αντιστοιχεί στην ιδιοτιμή 3 (3.000) και είναι στην θέση (,) του πίνακα D. Άρα και εδώ έχουμε βρει θεωρητικά ότι u = Και τέλος στην τρίτη στήλη του πίνακα V βρίσκεται το ιδιοδιάνυσμα που αντιστοιχεί στην ιδιοτιμή (.000) και είναι στην θέση (3,3) του πίνακα D. Άρα και εδώ έχουμε βρει θεωρητικά ότι u 3 = 0 6 Παράδειγμα 9. Θα βρούμε τις ιδιοτιμές αλλά και τα ιδιοδιανύσματα του πίνακα Β του παραδείγματος χρησιμοποιώντας την εντολή [V,D]=eig(B). >> B = [- 0 0; 0; 0 ] B = - 0 0 0 0-35 -

>> [V,D] = eig(b) V = 0 0 0.6667 0.0000-0.6667.0000 0-0.3333 D = 0 0 0 0 0 0 - Σ αυτό το παράδειγμα βλέπουμε ότι η πρώτη στήλη του πίνακα V είναι το ιδιοδιάνυσμα που αντιστοιχεί στην ιδιοτιμή δηλαδή στην ιδιοτιμή που βρίσκεται στην θέση (,) του πίνακα D. 0 Πραγματικά θεωρητικά βρήκαμε ότι u = 0 Όμοια στη δεύτερη στήλη του πίνακα V βρίσκεται το ιδιοδιάνυσμα που αντιστοιχεί στην ιδιοτιμή και είναι στην θέση (,) του πίνακα D. 0 Άρα και εδώ έχουμε βρει θεωρητικά ότι u = 0 Και τέλος στην τρίτη στήλη του πίνακα V βρίσκεται το ιδιοδιάνυσμα που αντιστοιχεί στην ιδιοτιμή - και είναι στην θέση (3,3) του πίνακα D. Άρα και εδώ έχουμε βρει θεωρητικά ότι το u 3 = - 36 -

Παράδειγμα 0. Έστω ότι θέλουμε να βρούμε τις ιδιοτιμές αλλά και τα ιδιοδιανύσματα του πίνακα C του παραδείγματος 3 χρησιμοποιώντας την εντολή [V,D]=eig(C). >> C = [3-0; 0 -; - 3 0] C = 3-0 0 - - 3 0 >> [V,D] = eig(c) V = 0.707 0.707 0.5774 0.3536-0.3536i 0.3536 + 0.3536i 0.5774-0.3536-0.3536i -0.3536 + 0.3536i 0.5774 D =.0000 +.0000i 0 0 0.0000 -.0000i 0 0 0.0000 Σ αυτό το παράδειγμα βλέπουμε ότι η πρώτη στήλη του πίνακα V είναι το ιδιοδιάνυσμα που αντιστοιχεί στην ιδιοτιμή.0000 +.0000i η οποία είναι και μιγαδικός αριθμός δηλαδή στην ιδιοτιμή που βρίσκεται στην θέση (,) του πίνακα D. - 37 -

Πραγματικά θεωρητικά βρήκαμε ότι u =.0000 +.0000i 0 0 Όμοια στη δεύτερη στήλη του πίνακα V βρίσκεται το ιδιοδιάνυσμα που αντιστοιχεί στην ιδιοτιμή.0000 -.0000i που και πάλι είναι μιγαδικός αριθμός και είναι στην θέση (,) του πίνακα D. 0 Άρα και εδώ έχουμε βρει θεωρητικά ότι u =.0000 -.0000i 0 Και τέλος στην τρίτη στήλη του πίνακα V βρίσκεται το ιδιοδιάνυσμα που αντιστοιχεί στην ιδιοτιμή.0000 η οποία είναι και η μοναδική ιδιοτιμή που είναι πραγματικός και όχι μιγαδικός αριθμός και είναι στην θέση (3,3) του πίνακα D. Άρα και εδώ έχουμε βρει θεωρητικά ότι το u 3 = 0 0.0000. Για πίνακες οι οποίοι είναι αποθηκευμένοι σαν αραιοί χρησιμοποιείται η συνάρτηση eigs η οποία συντάσσεται με πολλούς τρόπους κάποιοι από τους οποίους είναι: d=eigs(a), d=eigs(a,b), και [V,D]=eigs(A), [V,D]=eigs(A,B) αντίστοιχα με αυτούς της συνάρτησης eig που αναφέρθηκαν παραπάνω με τη διαφορά ότι επιστρέφουν τις έξι μεγαλύτερες κατά απόλυτη τιμή ιδιοτιμές. Ο πίνακας Β πρέπει να είναι συμμετρικός (ή ερμιτιανός) και θετικά ορισμένος. Μπορούμε όμως να επιλέξουμε και εμείς οι χρήστες πόσες ιδιοτιμές θέλουμε με την σύνταξη: d=eigs(a,k), d=eigs(a,b,k), που μας δίνει τις k μεγαλύτερες κατά απόλυτη τιμή ιδιοτιμές. - 38 -

Επίσης με την σύνταξη d=eigs(a,k,sigma), d=eigs(a,b,k,sigma), μπορούμε για sigma= lm να βρούμε τις k μεγαλύτερες κατά απόλυτη τιμή ιδιοτιμές, sigma= sm να βρούμε τις k μικρότερες κατά απόλυτη τιμή ιδιοτιμές, sigma=αριθμό να βρούμε τις k πλησιέστερες στον αριθμό αυτό ιδιοτιμές. Η εντολή eigs είναι κατάλληλη για μεγάλους αραιούς πίνακες και θα χρησιμοποιηθεί στο επόμενο κεφάλαιο. - 39 -

Κεφάλαιο 3. Εφαρμογή στην Εξίσωση Schrödinger. 3.. Η μονοδιάστατη ανεξάρτητη του χρόνου εξίσωση του Schrödinger 3... Περιγραφή του προβλήματος Η ανεξάρτητη του χρόνου εξίσωση του Schrödinger είναι μια από τις βασικότερες εξισώσεις στην κβαντομηχανική. Η μονοδιάστατη μορφή της σε γενική μορφή είναι: h + ( ) = m y mω V x y Ey Η απλοποιημένη και αδιάστατη μορφή της, χωρίς βλάβη της γενικότητας για h = m = ω = είναι: ( ) y + V x y= E y ή y + B( x) y = 0 () όπου ( ) = ( ) B x E V x, V το δυναμικό και E οι ιδιοτιμές της ενέργειας. Παρακάτω αναφέρουμε παραδείγματα δυναμικών με τις αντίστοιχες ιδιοτιμές τους. Ο αρμονικός ταλαντωτής Το δυναμικό του αρμονικού ταλαντωτή έχει την παραβολική μορφή: V( x) = k x - 40 -

Οι συνοριακές συνθήκες του προβλήματος είναι: ψ ( ) = 0 και ψ (+ )=0 Δηλαδή η λύση τείνει στο μηδέν καθώς απομακρυνόμαστε από την αρχή των αξόνων. Για k = οι ακριβείς ιδιοτιμές είναι: En = n +. Το άτομο του Υδρογόνου Ένα επίσης σημαντικό δυναμικό είναι εκείνο του ατόμου του υδρογόνου ll ( + ) V( x) = +, 0 < x<+, l = 0,,, K x x του οποίου οι ακριβείς ιδιοτιμές δίνονται από τη σχέση: En =, n=,, K n Το δυναμικό του Morse To δυναμικό του Morse είναι με ( α α ) V( x) = D exp( x) exp( x), D =, α = 0.044 και συνοριακές συνθήκες ψ ( ) = 0, ψ ( + ) = 0 Οι ακριβείς ιδιοτιμές είναι: En = + n+ + n+, n=,,... 48-4 -

Ο διπλός αναρμονικός ταλαντωτής To δυναμικό του διπλού αναρμονικού ταλαντωτή είναι για και συνοριακές συνθήκες 4 6 V( x) = x + λx + λx, λ = λ = ψ ( ) = 0, ψ ( + ) = 0 Μερικές από τις ιδιοτιμές είναι E 0 0.80744 E 5.55367 E 4.53433 E 6.836 E 8 3.03094 E 0 4.0444 E 54.48 E 4 67.9805 3... Εφαρμογή αριθμητικών μεθόδων Χωρίζουμε το διάστημα [, ] έχει μήκος: h. x x σε N ίσα υποδιαστήματα που το κάθε ένα min max Είναι προφανές ότι ισχύει: Ορίζουμε τα σημεία h x N x max min =. x = x, x = x + nh, ( n=,, K, N ), x = x 0 min n 0 N max - 4 -

Η εξίσωση Schrödinger () με μορφή: ( ) 0 y + B x y = είναι μια ομογενής γραμμική διαφορική εξίσωση δεύτερης τάξης και με ομογενείς συνοριακές συνθήκες τις yx ( min ) = 0 και yx ( max ) = 0, ονομάζεται ομογενές πρόβλημα συνοριακών τιμών. Προφανώς κάθε πρόβλημα αυτής της μορφής έχει ως λύση την μηδενική yx ( ) = 0. Έτσι στο πρόβλημα μας υπολογίζουμε τις ιδιοτιμές της ενέργειας E για τις οποίες το παραπάνω πρόβλημα έχει λύση διαφορετική του μηδενός. Για να υπολογίσουμε τις ιδιοτιμές της ενέργειας θα χρησιμοποιήσουμε αριθμητικές μεθόδους δύο βημάτων. Μια μέθοδος δύο βημάτων για την επίλυση της διαφορικής εξίσωσης δεύτερης τάξης y = f ( x, y) Έχει την γενική μορφή ( ) y y + y = h b f + b f + b f n+ n n n+ 0 n n όπου yn είναι η εκτίμηση της λύσης y( x ) στη θέση και f f ( x, y ) =. n n n x, δηλαδή y y( x ) n n, n Για η μέθοδος γράφεται b = 0, b = 0 y y + y = h f () n+ n n n και είναι δεύτερης τάξης, δηλαδή ακριβής για πολυώνυμα έως και δεύτερου βαθμού. - 43 -

Εφαρμόζουμε στην εξίσωση Schrödinger () και έχουμε τα εξής: y y + y = h B x y n+ n n ( n) n [ ] y y + y = h E V x y n+ n n ( n) n y y + y = h Ey + h V x y n+ n n n ( n) n y y + y h V( x ) y = h Ey n+ n n n n n ( y n+ yn + yn ) + V( xn) yn = Eyn (3) h Θεωρούμε το διάνυσμα [,,,,, ] Y = y y y K y y 0 N N Το οποίο περιέχει εκτιμήσεις της λύσης στα σημεία xn = x0 + nh, n = 0,,, K, N, N που έχουμε ορίσει προηγουμένως. Τότε μπορούμε να γράψουμε Ν- εξισώσεις της μορφής (3) θεωρούμε λόγω των συνοριακών συνθηκών. y0 = y N = 0-44 -

Εφαρμόζουμε σε κάθε σημείο της διαμέρισης την εξίσωση (3) και προκύπτουν (Ν-) εξισώσεις για κάθε σημείο x, x, K, xn. ( y y+ y 0) + V( x) y= Ey h ( y y + y ) + V( x ) y = Ey h ( y y + y ) + V( x ) y = Ey h M 3 4 3 3 3 3 ( y y + y ) + V( x ) y = Ey h N N N N N N ή (4) ( y + y ) + V( x) y = Ey h h ( y y + y ) + V( x ) y = Ey h ( y y + y ) + V( x ) y = Ey M 3 3 4 3 3 3 ( y y ) + V( x ) y = Ey h N N N N N (5) Οι εξισώσεις αυτές είναι γραμμικές και μπορεί να γραφούν με την μορφή πινάκων ως εξής: ( ) y V x y y ( ) y V x y y y 3 + V( x3) y 3 = E y 3 h O O M O M M y N V( xn ) y N y N - 45 -

AY + VY = EY (6) h Όπου A είναι ο τριδιαγώνιος πίνακας με διαγώνια στοιχεία a ij = για i = j και a = για j = i + και j = i, ij και V ο διαγώνιος πίνακας με στοιχεία τις τιμές του δυναμικού V( x ) στα σημεία x x,,, xn K. Η εξίσωση πινάκων (6) μπορεί να γραφεί και ως εξής: A + V Y EY = h (7) αυτό είναι ένα πρόβλημα ιδιοτιμών όπως είδαμε και στο δεύτερο κεφάλαιο. Προκειμένου να περιγράψουμε την υλοποίηση της παραπάνω μεθόδου στο MATLAB θα υπολογίσουμε τις ιδιοτιμές του αρμονικού ταλαντωτή. Το διάστημα ολοκλήρωσης επιλέγεται ανάλογα με το πόσες ιδιοτιμές θέλουμε να εκτιμήσουμε για τις πρώτες δέκα ιδιοτιμές η επιλογή του [-0,0] είναι ικανοποιητική. Στο κεφάλαιο είδαμε πως δημιουργείται ο πίνακας Α, αφού ορίσουμε το διάνυσμα e του οποίου όλα τα στοιχεία είναι ίσα με τη μονάδα. e = ones(n-,); A = spdiags([e -*e e],-:,n-,n-) Δημιουργούμε μια συνάρτηση η οποία να υπολογίζει το δυναμικό και την ονομάζουμε harm(x). function y=harm(x) y=x.^/; - 46 -

Θεωρούμε βήμα h=0.0 και κατασκευάζουμε διάνυσμα x με στοιχεία τα σημεία της διαμέρισης x = xmin:h:xmax; το μήκος τους διανύσματος αυτού είναι >> x=-0:0.0:0; >> length(x) ans = 00 Πραγματικά έχουμε N xmax xmin 0 ( 0) 0 = = = = 000 h 0.0 0.0 Κατασκευάζουμε διάνυσμα v το οποίο περιέχει τις τιμές του δυναμικού σε κάθε σημείο της διαμέρισης >> v=harm(x); Και από αυτό κατασκευάζουμε τον πίνακα V o οποίος είναι διαγώνιος και σε κάθε διαγώνια θέση έχει τα στοιχεία του διανύσματος v εκτός από το πρώτο και το τελευταίο. >> V=spdiags(v(:N)',0,N-,N-); Τέλος ο πίνακας του οποίου ζητάμε τις ιδιοτιμές είναι (από την εξίσωση (7)) M = A+ V h Και τον σχηματίζουμε ως εξής: >> Μ = -/(*h^)*α+v; - 47 -

Συνοψίζοντας έχουμε: >> xmax = 0; >> xmin = -0; >> h = 0.0; >> x = xmin:h:xmax; >> N = length(x)-; >> v = harm(x); >> e = ones(n-,); >> A = spdiags([e -*e e],-:,n-,n-); >> V = spdiags(v(:n)',0,n-,n-); >> M = -/(*h^)*a+v; - 48 -

Μπορούμε να υπολογίσουμε τις ιδιοτιμές του πίνακα Μ με την συνάρτηση eig(m)>> l=eig(m); >> l(:) ans = 0.5000.5000.5000 3.4999 4.4999 5.4998 6.4997 7.4996 8.4995 9.4994 0.4993-49 -

Εδώ τις αποθηκεύσαμε στο διάνυσμα l και παρουσιάσαμε τις πρώτες ιδιοτιμές. Παρατηρούμε ότι από την έκτη ιδιοτιμή παρουσιάζεται σφάλμα στο τέταρτο δεκαδικό ψηφίο. Θα πάρουμε μεγαλύτερη ακρίβεια αν μειώσουμε το βήμα σε h=0.00 τώρα το N είναι 0,000 και ο χρόνος εκτέλεσης της eig(m) αυξάνεται δραματικά. >> l=eig(m); >> l(:) ans = 0.5000.5000.5000 3.5000 4.5000 5.5000 6.5000 7.5000 8.5000 9.5000 0.5000 Αν παρουσιάσουμε τα αποτελέσματα με 4 δεκαδικά ψηφία παρατηρούμε ότι το σφάλμα υπάρχει αλλά είναι -6.9063e-006 στην ενδέκατη ιδιοτιμή. >> format long >> l(:) ans = 0.499999968573.49999984383430.4999995937688 3.4999998894-50 -

4.49999878869 5.499998093746 6.4999973438463 7.49999646883068 8.499995468873 9.49999434368897 0.499993093783 Ο χρόνος υπολογισμού μπορεί να μειωθεί αν αντί της εντολής eig(m) χρησιμοποιήσουμε την εντολή eigs(m) η οποία εκμεταλλεύεται όπως είδαμε και στο προηγούμενο κεφάλαιο την αραιή δομή του πίνακα Μ για να πάρουμε και πάλι τις μικρότερες ιδιοτιμές γράφουμε l = eigs(a,,'sm'); Τέλος, μπορούμε να γράψουμε μια συνάρτηση στο MATLAB την οποία θα ονομάσουμε shrod_eig_(fun,xmin,xmax,h,s) και θα παίρνει σαν ορίσματα fun την συνάρτηση η οποία περιέχει το δυναμικό, xmin,xmax τα άκρα του διαστήματος ολοκλήρωσης h το βήμα. s το πλήθος των ιδιοτιμών που θέλουμε να υπολογίσουμε ξεκινώντας από την μικρότερη ιδιοτιμή. Η συνάρτηση είναι: function l=schrod_eig_(fun,xmin,xmax,h,s) x = xmin:h:xmax; N = length(x)-; v = feval(fun,x) ; e = ones(n-,); A =spdiags([e -*e e],-:,n-,n-); V=spdiags(v(:N)',0,N-,N-); M = -/(*h^)*a+v; l = eigs(μ,s, sm ); end - 5 -

Η μέθοδος Numerov είναι όπου ( ) y y + y = h bf + bf + bf n+ n n n+ 0 n n b 0 =, b = 0 Εφαρμόζουμε στην εξίσωση Schrödinger () και έχουμε τα εξής: ( ) y y + y = h bb( x ) y + bb( x ) y + bb( x ) y n+ n n n+ n+ 0 n n n n λαμβάνοντας υπόψη ότι B( x) = ( E V( x )) y y + y = -h [ b( E V( x ))y + n+ n n n+ n+ b (E-V(x ))y + b ( E V( x )) y ] 0 n n n n y y + y = h [ bey bv( x )y + b Ey n+ n n n+ n+ n+ 0 n b V(x )y + b Ey b Vx ( ) y ] 0 n n n n n y n+ yn + yn + bv ( xn+ )yn+ + b0v(x n)yn + b V( xn ) yn = h bey + b Ey + b Ey n+ 0 n n ( y n+ yn + yn ) + bvx ( n+ ) yn+ + bvx 0 ( n) yn + bvx ( n ) yn = h Eby + by+ by ( ) n+ 0 n n Η παραπάνω εξίσωση είναι αντίστοιχη με την εξίσωση (3) της προηγούμενης μεθόδου. - 5 -

Εφαρμόζουμε σε κάθε σημείο της διαμέρισης και προκύπτουν (Ν-) εξισώσεις της μορφής (3) για κάθε σημείο ( y+ y) + bv ( x ) y+ bv 0 ( x) y= E( b0y+ by ) h h + + + + = + + h + + + + = + + M h ( y y y ) bvx ( ) y bvx ( ) y bvx ( ) y Eby ( by by ) 3 3 3 0 3 0 ( y y y ) bvx ( ) y bvx ( ) y bvx ( ) y Eby ( by by ) 3 4 0 3 3 4 4 0 3 4 ( y y ) + bvx ( ) y + bvx ( ) y = Eby ( + by ) N N N N 0 N N N 0 N από όπου έχουμε το ακόλουθο αλγεβρικό πρόβλημα ιδιοτιμών AY + BVY = EBY h Όπου B είναι τριδιαγώνιος πίνακας με διαγώνια στοιχεία b = b0 για i = j και ij bij = b για j = i + και j = i. Αυτό είναι ένα γενικευμένο πρόβλημα ιδιοτιμών A + BV Y EBY = h Αλλά θα μπορούσε να γραφεί και σαν απλό πρόβλημα ιδιοτιμών πολλαπλασιάζοντας από αριστερά με τον αντίστροφο του πίνακα Β. h B A+ BV Y = EY και κάνοντας τον πολλαπλασιασμό έχουμε: + = h B A V Y EY - 53 -

Αυτός ο τρόπος δεν είναι ενδεδειγμένος γιατί πέρα από το γεγονός ότι η αντίστροφή πίνακα είναι εξαιρετικά επίπονη αριθμητική διαδικασία αφού με την αντιστροφή ο πίνακας παύει να είναι αραιός. Για το λόγο αυτό θα αντιμετωπίσουμε το πρόβλημα σαν γενικευμένο πρόβλημα ιδιοτιμών. Αντίστοιχα με τα προηγούμενα μπορούμε να γράψουμε μια συνάρτηση στο MATLAB την οποία θα ονομάσουμε shrod_eig_(fun,xmin,xmax,h,s) και θα παίρνει σαν ορίσματα: fun την συνάρτηση η οποία περιέχει το δυναμικό, xmin,xmax τα άκρα του διαστήματος ολοκλήρωσης h το βήμα. s το πλήθος των ιδιοτιμών που θέλουμε να υπολογίσουμε ξεκινώντας από την μικρότερη ιδιοτιμή. function l = schrod_eig_(fun,xmin,xmax,h,s) x = xmin:h:xmax; N = length(x)-; v = feval(fun,x); V = spdiags(v(:n)',0,n-,n-); e = ones(n-,); A = spdiags([e -*e e],-:,n-,n-); B = spdiags([e 0*e e],-:,n-,n-)/; M = -/(*h^)*a + B*V; l = eigs(m,b,s,'sm'); end - 54 -

Αν καλέσουμε την παραπάνω συνάρτηση για το δυναμικό του αρμονικού ταλαντωτή για το διάστημα [-0,0] και με βήμα h=0.0, δηλαδή >> l=schrod_eig_('harm',-0,0,0.0,); έχουμε τα εξής αποτελέσματα: >> l l = 0.4999999999609.4999999997660.4999999990343 3.49999999753898 4.49999999496086 5.4999999909769 6.499999985773 7.49999997753783 8.49999996745894 9.4999999547348 0.4999999390889 Το σφάλμα στην ενδέκατη ιδιοτιμή είναι >> l()-0.5 ans = -6.0985685345e-008 Πολύ μικρότερο από αυτό που βρέθηκε με την προηγούμενη μέθοδο για μικρότερο βήμα (h=0.00). Αυτό συμβαίνει γιατί η μέθοδος Numerov είναι μεγαλύτερης τάξης (τέταρτης) άλλωστε είναι γνωστό από τη βιβλιογραφία ότι είναι από τις πλέον αποτελεσματικές μεθόδους για την εξίσωση Schrödinger. - 55 -

3..Η διδιάστατη χρονικά ανεξάρτητη εξίσωση Schrödinger 3... Περιγραφή του προβλήματος Η διδιάστατη εξίσωση Schrödinger είναι: ψ ψ + + ( E V ( x, y) ) ψ ( x, y) = 0 x y (8) η συνάρτηση ψ ( x, y ) τείνει στο μηδέν καθώς απομακρυνόμαστε από την αρχή των αξόνων, και ισχύει: ( x ) ( y) ψ, ± = 0, < x <, ψ ±, = 0, < y <, όπου E είναι η ιδιοτιμή της ενέργειας, V ( x, y ) είναι το δυναμικό και ψ (, ) κυματοσυνάρτηση. x y η Διδιάστατος Αρμονικός Ταλαντωτής Το δυναμικό του Διδιάστατου Αρμονικού Ταλαντωτή δίνεται από την σχέση: με συνοριακές συνθήκες: ψ V x y x y ( x ) ( y) (, ) = ( + ), ± = 0, < x<, ψ ±, = 0, < y<, Οι ακριβείς ιδιοτιμές δίνονται από την σχέση: En = n+, n= nx + ny, nx, n y = 0,,,3, K - 56 -