Χρονικές σειρές 4 o μάθημα: ΠΙΝΑΚΕΣ ΚΑΙ ΔΙΑΝΥΣΜΑΤΑ Εαρινό εξάμηνο 2018-2019 Τμήμα Μαθηματικών ΑΠΘ Διδάσκουσα: Αγγελική Παπάνα Μεταδιδακτορική Ερευνήτρια Πολυτεχνική σχολή, Α.Π.Θ. & Οικονομικό Τμήμα, Πανεπιστήμιο Μακεδονίας http://users.auth.gr/~agpapana/ 1
ΠΙΝΑΚΕΣ ΚΑΙ ΔΙΑΝΥΣΜΑΤΑ Ένα διάνυσμα u = (u1, u2,, un) εισάγεται στη MATLAB ως εξής: >> u=[ u1, u2,, un] ή >> u=[ u1 u2 un] Οι συνιστώσες βρίσκονται ανάμεσα σε αγκύλες (όχι παρενθέσεις) και διαχωρίζονται από κόμματα ή απλώς με διαστήματα. Οι πίνακες ορίζονται με παρόμοιο τρόπο: δίνουμε τα στοιχεία κάθε γραμμής και για να υποδείξουμε την αλλαγή γραμμής χρησιμοποιούμε το σύμβολο ; ή απλά αλλάζουμε γραμμή. 2
Παραδείγματα >> u=[ 1, 2, 3] u = 1 2 3 >> u=[1 2 3] u = 1 2 3 >> u=[1; 2; 3] u = 1 2 3 >> u=[1 2 3; 4 5 6] u = 1 2 3 4 5 6 3
ΠΡΑΞΕΙΣ ΠΙΝΑΚΩΝ Οι πράξεις μεταξύ πινάκων γίνονται με τα σύμβολα που φαίνονται στον πίνακα: Τελεστής Ερμηνεία + Πρόσθεση - Αφαίρεση * Πολλαπλασιασμός \ Αριστερή διαίρεση / Δεξιά διαίρεση ^ Ύψωση σε δύναμη 4
Εννοείται βέβαια ότι οι χρησιμοποιούμενοι πίνακες πρέπει να είναι συμβατοί ως προς την πράξη που κάνουμε. Π.χ. η ύψωση σε δύναμη είναι δυνατή μόνο για τετραγωνικούς πίνακες. Σημειώνουμε επίσης τα εξής: Ο ανάστροφος Α Τ ενός πραγματικού πίνακα Α, ορίζεται ως A'. Οι εντολές A*A*A και A^3, όπου Α τετραγωνικός πίνακας είναι ισοδύναμες. Μπορούμε να πολλαπλασιάσουμε όλα τα στοιχεία ενός πίνακα Α και ενός διανύσματος u με ένα αριθμό x (βαθμωτός πολλαπλασιασμός): x*a και x*u. 5
Με τον ίδιο τρόπο μπορούμε να διαιρέσουμε όλα τα στοιχεία με κάποιο μη μηδενικό αριθμό x: A/x και u/x. Μπορούμε να προσθέσουμε ή να αφαιρέσουμε ένα αριθμό x από όλα τα στοιχεία ενός πίνακα Α και ενός διανύσματος u: A x και u + x. 6
Παράδειγμα Να βρείτε τον ανάστροφο A Τ του πίνακα Α. >> A=[ 1 2 3 4; 1 0 1 0; -1 2-2 1; 4 1 0 0]; >> A' 1 1-1 4 2 0 2 1 3 1-2 0 4 0 1 0 7
Παράδειγμα Να βρείτε το γινόμενο Β Τ Α >> A=[ 1 2 3 4; 1 0 1 0; -1 2-2 1; 4 1 0 0]; >> Β=[1 ; 2 ; -4; 3]; >> Β'*A 19-3 13 1 8
Αριστερή και δεξιά διαίρεση Η MATLAB είναι ένα αρκετά προχωρημένο λογισμικό και επιτρέπει την επίλυση γραμμικών συστημάτων με πολλούς τρόπους. Αν ο A είναι ένας αντιστρέψιμος πίνακας έχουμε τις πιο κάτω διαιρέσεις πινάκων: A\b : μας δίνει τη λύση του συστήματος Ax = b (αριστερή διαίρεση) A/b : μας δίνει τη λύση του συστήματος xa = b(δεξιά διαίρεση) όπου οι πίνακες A, x και b έχουν συμβιβαστές διαστάσεις. 9
Η διαφορά της αριστερής από τη δεξιά διαίρεση φαίνεται στον πίνακα: Συμβολισμός MATLAB Αριστερή διαίρεση b\α Δεξιά διαίρεση α/b Μαθηματικό ισοδύναμο b a a b 10
Παραδείγματα Έστω οι πίνακες >> A = [1 1 1; 1 0 2; 0 2 1] >> b = [6; 7; 7] Θα λύσουμε τα συστήματα Ax = b και xa = b T. >> A\b 1 2 3 >> b'/a 5.6667 0.3333 0.6667 11
Παράδειγμα Θα βρούμε τον πίνακα C για τον οποίο ισχύει AC = B, όπου >> A = [1 1 1; 2 0 1; -3 1 4]; >> B = [6 5 4; 3-1 2; 4 0 1]; >> format rat >> C = A\B C = 11/10 1/5 9/10 41/10 31/5 29/10 4/5-7/5 1/5 12
Στοιχειώδεις πίνακες Αρκετοί στοιχειώδεις πίνακες μπορούν να παραχθούν με τις συναρτήσεις της MATLAB. Οι σημαντικότερες από αυτές φαίνονται στον πίνακα που ακολουθεί: Συνάρτηση Ερμηνεία eye zeros ones rand randn hilb Πίνακας με 1 στην κύρια διαγώνιο και 0 αλλού Μηδενικός πίνακας Πίνακας με 1 σε όλες τις θέσεις Ομοιόμορφα ψευδο-τυχαίος πίνακας Κανονικά ψευδο-τυχαίος πίνακας Τετραγωνικός πίνακας Hilbert 13
Στις παραπάνω συναρτήσεις πρέπει να ορίσουμε τις επιθυμητές διαστάσεις του πίνακα, π.χ. eye(m,n) ή eye([m n]). Αν ο πίνακάς μας είναι τετραγωνικός μπορούμε να γράψουμε eye(n,n) ή eye(n). Η rand(m,n) μας δίνει ένα m n πίνακα με τυχαία στοιχεία επιλεγμένα από μια ομοιόμορφη κατανομή στο διάστημα [0, 1]. Με αυτή την κατανομή, το ποσοστό των αριθμών που βρίσκονται στο διάστημα [a, b], όπου 0 < a < b <1, είναι b a. Η randn(m,n) μας δίνει ένα m n πίνακα με τυχαία στοιχεία επιλεγμένα από τη συνήθη κανονική κατανομή με μέση τιμή το 0, διασπορά 1 και τυπική απόκλιση 1. Καλώντας τις χωρίς όρισμα παίρνουμε ένα τυχαίο αριθμό. 14
Παραδείγματα >> eye(2,3) 1 0 0 0 1 0 >> eye(3,3) 1 0 0 0 1 0 0 0 1 >> rand 0.5013 >> zeros(4,5) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 >> ones(4,2) 1 1 1 1 1 1 1 1 >> rand(4) 0.9501 0.8913 0.8214 0.9218 0.2311 0.7621 0.4447 0.7382 0.6068 0.4565 0.6154 0.1763 0.4860 0.0185 0.7919 0.4057 15
Οι συναρτήσεις pascal και magic επίσης ορίζουν τετραγωνικούς πίνακες. Η πρώτη μας δίνει τον κλασικό πίνακα του Pascal ενώ η magic επιστρέφει μαγικά τετράγωνα. Παραδείγματα >> pascal(4) 1 1 1 1 1 2 3 4 1 3 6 10 1 4 10 20 >> magic(3) 8 1 6 3 5 7 4 9 2 16
Υπάρχουν πολλές άλλες συναρτήσεις στοιχειωδών και άλλων ειδικών πινάκων. Με την εντολή >> help elmat η MATLAB μας δίνει τον κατάλογο κατάλογό τους. Όποιος θέλει να ανακαλύψει περισσότερα για τις εντολές που υπάρχουν, μπορεί να χρησιμοποιήσει την εντολή help. 17
Ορισμός διανυσμάτων και πινάκων με βήμα Η MATLAB μας δίνει τη δυνατότητα να ορίσουμε τα στοιχεία ενός διανύσματος με κάποιο βήμα: >> u = [u1 : b : ulast] Αν το βήμα b είναι ίσο με τη μονάδα, τότε αυτό μπορεί να παραλειφθεί: >> u = [u1 : ulast] Παράδειγμα >> u=[-1:1:5] u = -1 0 1 2 3 4 5 18
Παραδείγματα >> u=[-1:2:9] u = -1 1 3 5 7 9 >> u=[-1:2:10] u = -1 1 3 5 7 9 >> u=[-1:3:10] u = -1 2 5 8 >> A=[1:5;10:-2:2] A = 1 2 3 4 5 10 8 6 4 2 >> B=[1:5;2:2:10;3:3:15] B = 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 19
Στοιχεία ενός διανύσματος ή ενός πίνακα Αν το u είναι ένας n 1 ή 1 n πίνακας, τότε το u(i) όπου 1 i n μας δίνει το στοιχείο u i. Αν το u είναι ένας 1 n πίνακας το u(i: k: j) μας δίνει το υποδιάνυσμα u i =[u i u i+k u j ]. Παραδείγματα >> u=[-1:2:9] u = -1 1 3 5 7 9 >> u(2) 1 >> u(1:3) -1 1 3 20
Τα παραπάνω γενικεύονται και για m n πίνακες. Έτσι αν Α = α 11.. α 1n...... τότε: α m1.. α mn το Α(i, j) μας δίνει το στοιχείο α ij το Α(:, j) μας δίνει την j -στήλη του A το Α(i, : ) μας δίνει την i -γραμμή του A το Α(m: n, p: s) μας δίνει τον υποπίνακα του Α που ορίζεται από τις γραμμές m εως n και τις στήλες p εως s το Α(end, : ) μας δίνει την τελευταία γραμμή του Α το Α(:, end) μας δίνει την τελευταία στήλη του Α 21
Παραδείγματα >> Α=[1 2 3; 4 5 6 ; 7 8 9]; Για τον πίνακα Α (3x3), να βρείτε τα παρακάτω: >> Α(1,3) >> Α(:,2) >> Α(1,:) >> Α(1:2,2:3) >> Α(end,:) >> Α(1:2,end) >> Α([1 3],[2 3]) >> Α(end,[1 3]) H MATLAB μας δίνει την δυνατότητα να επιλέξουμε ονομαστικά τους δείκτες γραμμών και στηλών. 22
Βιβλιογραφία 1. Γ. Γεωργίου, Χ. Ξενοφώντος. Εισαγωγή στη MATLAB. Πανεπιστήμιο Κύπρου, Λευκωσία, 2007 (ISBN 978-9963-644-57-5). 2. Matlab, High-Performance Numeric Computation and Visualization Software. The Math Works Inc, 1992. 23