Programming και Scripts Ο πιο απλός τύπος προγράμματος του MATLAB λέγεται script *. Το script είναι ένα αρχείο με επέκταση.m που περιέχει περισσότερες διαδοχικές γραμμές εντολών και επίκλησης συναρτήσεων MATLAB. Μπορούμε να τρέξουμε ένα script γράφοντας απλά το όνομά του στην γραμμή εντολών. * script: δεν υπάρχει όρος που να αποδίδει στα ελληνικά την λέξη
Programming και Scripts Παράδειγμα Script Για να δημιουργήσουμε ένα script, χρησιμοποιούμε την εντολή edit, edit plotrand Αυτό ανοίγει ένα άδειο αρχείο που ονομάζεται plotrand.m Εισάγουμε κάποιες εντολές που δημιουργούν ένα άνυσμα τυχαίων δεδομένων: n = 50; r = rand(n,1); plot(r)
Programming και Scripts Στην συνέχεια προσθέτουμε εντολές για την χάραξη μιας οριζόντιας γραμμής με την μέση τιμή των τιμών των δεδομένων: m = mean(r); hold on plot([0,n],[m,m]) hold off title('mean of Random Uniform Data') Εάν τρέξουμε όλο το script μαζί, θα πάρουμε το εξής αποτέλεσμα:
Programming και Scripts 1 Mean of Random Uniform Data 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 5 10 15 20 25 30 35 40 45 50
Programming και Scripts Όταν γράφουμε έναν κώδικα, είναι μια καλή πρακτική, να προσθέτουμε σχόλια και επεξηγήσεις, ώστε να τον καταλαβαίνουν αυτοί που τον διαβάζουν, αλλά και εμείς για να φρεσκάρουμε την μνήμη μας, όταν τον ανακαλούμε μετά από καιρό. Για να προσθέσουμε σχόλια, βάζουμε πριν το σύμβολο (%).
Programming και Scripts % Generate random data from a uniform distribution % and calculate the mean. Plot the data and the mean. n = 50; % 50 data points r = rand(n,1); plot(r) % Draw a line from (0,m) to (n,m) m = mean(r); hold on plot([0,n],[m,m]) hold off title('mean of Random Uniform Data')
Programming και Scripts Σώστε το αρχείο στο current folder. Για να τρέξουμε το script, γράφουμε το όνομά του στην γραμμή εντολών: plotrand Μπορούμε επίσης να το τρέξουμε από τον Editor με το κουμπί Run,.
Programming και Scripts Loops και Conditional Statements Μέσα σ ένα script, μπορούμε να κάνουμε βρόχους (loop) με εντολές καθώς και τμήματα προγράμματος που θα εκτελούνται υπό συνθήκη, χρησιμοποιώντας τις εντολές : for, while, if, και switch.
Programming και Scripts Loops και Conditional Statements Η εντολή for Η δομή της εντολής αυτής είναι η ακόλουθη: for end δείκτης = λίστα = ορισμός περιοχής δείκτη σύνολο εντολών προς εκτέλεση
Programming και Scripts Loops και Conditional Statements Η εντολή for Η εκτέλεση των πράξεων επαναλαμβάνεται, με το δείκτη να παίρνει όλες τις τιμές που καθορίζονται από τα στοιχεία της λίστας. Στη θέση της λίστας μπορεί επίσης να τοποθετηθεί μια εντολή που να δημιουργεί τη λίστα αυτή, όπως π.χ. 1:10. Συνήθως η λίστα είναι μονοδιάστατη. Σε περίπτωση δισδιάστατης, ο δείκτης ακολουθεί τις στήλες της λίστας, τη μία μετά την άλλη.
Programming και Scripts Loops και Conditional Statements Η εντολή for Παράδειγμα: Να δημιουργηθεί μια μήτρα που να περιέχει τα τετράγωνα των ακεραίων αριθμών από 1 έως 10: x=[]; for i=1:10 x=[x,i^2]; end
Programming και Scripts Loops και Conditional Statements Η εντολή for Η δομή του αλγορίθμου έχει ως εξής: Αρχικά δημιουργείται μια κενή Μήτρα, η x. Μετά δημιουργείται ένας βρόχος, σε κάθε κύκλο i του οποίου προστίθεται στην υπάρχουσα λίστα (Μήτρα) ο επόμενος αριθμός, ίσος με i^2. x x = 1 4 9 16 25 36 49 64 81 100
Programming και Scripts Loops και Conditional Statements Η εντολή for Παράδειγμα: Να υπολογιστεί το άθροισμα των πρώτων εκατό ακεραίων αριθμών (1-100): s=0; for i=1:100 s=s+i; end; s
Programming και Scripts Loops και Conditional Statements Η εντολή for Παράδειγμα: Η δομή του αλγορίθμου έχει ως εξής: Χρησιμοποιείται η μεταβλητή s στην οποία αποδίδεται η τιμή του αθροίσματος και η οποία αρχικά ξεκινάει με την τιμή μηδέν. Δημιουργείται ένας βρόχος (i=1:100), σε κάθε κύκλο i του οποίου προστίθεται στην υπάρχουσα τιμή ο επόμενος αριθμός, ίσος με i.
Programming και Scripts Loops και Conditional Statements Εντολή While Μερικές φορές, δεν είναι γνωστός, εκ των προτέρων, ο αριθμός των κύκλων εκτέλεσης ενός βρόχου, ο οποίος ενδέχεται να διαμορφώνεται κατά την διάρκεια των κύκλων, όπως ενδέχεται και η τιμή του δείκτη για τον επόμενο κύκλο να υπολογίζεται μέσα στον ίδιο το βρόχο, ως μια συνάρτηση των ενδιάμεσων αποτελεσμάτων.
Programming και Scripts Loops και Conditional Statements Εντολή While Για ν αντιμετωπιστούν οι περιπτώσεις αυτές υπάρχει η εντολή while, η οποία έχει την ακόλουθη δομή: αρχική_τιμή_δείκτη while εντολη_ελέγχου_δείκτη εντολές προς εκτέλεση προσδιορισμός_νέας_τιμής_δείκτη end
Programming και Scripts Loops και Conditional Statements Εντολή While Όπως και στο βρόχο for, έτσι και στο βρόχο while, γίνεται επαναληπτική εκτέλεση των πράξεων, μέχρι να παραβιαστεί ο έλεγχος. Ο έλεγχος γίνεται με τη χρήση του δείκτη, του οποίου η αρχική τιμή καθορίζεται πριν από την έναρξη του βρόχου, και η τιμή για τον επόμενο κύκλο υπολογίζεται μέσα στον τρέχοντα κύκλο.
Programming και Scripts Loops και Conditional Statements Εντολή While Για να μπορέσει όμως να τερματιστεί ο βρόχος, θα πρέπει η τιμή του δείκτη να μεταβάλλεται, με την επανάληψη των πράξεων, κατά τρόπο ώστε να παραβιαστεί κάποτε η εντολή ελέγχου.
Programming και Scripts Loops και Conditional Statements Εντολή While Παράδειγμα Να ευρεθεί ο μεγαλύτερος, μεταξύ 100 αριθμών, που είναι αποθηκευμένοι σε μια μήτρα άνυσμαστήλη, και να προσδιοριστεί ταυτόχρονα και η θέση του στη λίστα αυτή.
Programming και Scripts Loops και Conditional Statements Εντολή While Παράδειγμα n=100; a=10*rand(1,n); amax=a(1);imax=1; ni=1; while ni<n+0.5 if a(ni)>amax amax=a(ni); imax=ni; end ni=ni+1; end disp('maximum number= '),disp(amax) disp('position= '),disp(imax)
Programming και Scripts Loops και Conditional Statements Την εμβάθυνση για την λειτουργία των βρόχων και των εντολών for, while, if, και switch, θα την συναντήσουμε στα παραδείγματα που θα ακολουθήσουν, με δημιουργία σύνθετων προγραμμάτων στο MATLAB, όπου θα χρησιμοποιούνται πολλές εντολές μαζί.
Script Locations Programming και Scripts Το MATLAB ψάχνει για scripts και άλλα αρχεία σε συγκεκριμένες θέσεις. Για να τρέξει ένα script, το αρχείο του πρέπει να βρίσκεται στο current folder ή σε ένα folder στο search path. Εξ ορισμού, το folder του MATLAB που δημιουργείται με την εγκατάστασή του, βρίσκεται στο search path. Εάν θέλουμε να αποθηκεύσουμε και να τρέχουμε το πρόγραμμα από άλλο folder, πρέπει να το προσθέσουμε στο search path. Επιλέγουμε το folder στο Current Folder browser, δεξί-κλικ, και μετά Add to Path.
Help και Documentation Όλες οι εντολές του MATLAB έχουν υποστηρικτική τεκμηρίωση που εμπεριέχει παραδείγματα και εξηγεί την σύνταξη της εντολής, τις εισόδους, τις εξόδους της και γενικά ότι χρειάζεται για την σωστή χρήση της. Υπάρχουν διάφοροι τρόποι να έχουμε αυτές τις πληροφορίες από την γραμμή εντολών: Ανοίγουμε την πληροφορία για την εντολή σε ξεχωριστό παράθυρο χρησιμοποιώντας την εντολή doc. Π.χ. doc mean
Help και Documentation Εμφανίζει τις επεξηγήσεις για την εντολή (το τμήμα της τεκμηρίωσης για την σύνταξη της εντολής) στο Command Window αφού σταματήσουμε μετά την αριστερή παρένθεση (. mean( Εμφανίζει μια σύντομη εκδοχή της τεκμηρίωσης για την εντολή στο Command Window χρησιμοποιώντας την εντολή help. help mean
Help και Documentation Οδηγεί στο αρχείο για όλη την τεκμηρίωση χτυπώντας την εικόνα για την βοήθεια (help icon).
Βασικό Γλωσσάρι (Language Fundamentals)
Μήτρες και Μαγικά Τετράγωνα
Οι Μήτρες (Πίνακες).και λίγη ιστορία Στο περιβάλλον του MATLAB, η Μήτρα είναι μία τετραγωνική σειρά αριθμών. Όταν η Μήτρα είναι 1x1 έχουμε έναν αριθμό και όταν η Μήτρα έχει μόνο μία σειρά ή μόνο μία στήλη, τότε έχουμε ένα άνυσμα. Το MATLAB έχει κι άλλους τρόπους να αποθηκεύει αριθμητικά (ή όχι) δεδομένα, αλλά αρχικά είναι χρήσιμο να τα δούμε όλα σαν Μήτρες.
Οι Μήτρες (Πίνακες).και λίγη ιστορία Οι ενέργειες στο MATLAB έχουν σχεδιαστεί να είναι όσο γίνεται πιο απλές και φυσικές. Ενώ σε άλλες γλώσσες προγραμματισμού δουλεύουμε με αριθμούς (έναν κάθε φορά), το MATLAB μας επιτρέπει να δουλεύουμε με Μήτρες πιο γρήγορα και πιο εύκολα. Ένα παράδειγμα Μήτρας εμφανίζεται στην εποχή της Αναγέννησης, στην γκραβούρα Melencolia I του Γερμανού ζωγράφου που αγαπούσε και τα μαθηματικά, του Albrecht Dürer.
Η Μήτρα αυτή είναι γνωστή ως Μαγικό Τετράγωνο και στην εποχή του Dürer, πολλοί πίστευαν πως είχε μαγικές ιδιότητες. Έχει κάποια συναρπαστικά χαρακτηριστικά που αξίζει να ερευνηθούν.
Εισαγωγή Μητρών Καθώς το MATLAB δουλεύει με Μήτρες, καλό είναι να αρχίσουμε απ αυτές. Μπορούμε να εισάγουμε Μήτρες στο MATLAB με διάφορους τρόπους: Να εισάγουμε μία αναλυτική λίστα με στοιχεία. Να εισάγουμε Μήτρες από εξωτερικά αρχεία δεδομένων. Να δημιουργήσουμε Μήτρες με τις εντολές built-in. Να δημιουργήσουμε Μήτρες με δικές μας συναρτήσεις και να τις αποθηκεύσουμε σε αρχεία.
Εισαγωγή Μητρών Για να εισάγουμε την Μήτρα του Dürer, σαν λίστα στοιχείων, πρέπει να ακολουθήσουμε κάποιους βασικούς κανόνες: Να χωρίζουμε τα στοιχεία μιας γραμμής με κενό διάστημα ή με (,). Να Χρησιμοποιούμε το (;) για να ορίσουμε το τέλος της κάθε γραμμής. Η όλη λίστα των στοιχείων πρέπει να περικλείεται από τετραγωνικές παρενθέσεις [ ]. Δηλαδή, για να εισάγουμε την Μήτρα του Dürer, γράφουμε στο Command Window: A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
Εισαγωγή Μητρών Το MATLAB θα εμφανίσει την Μήτρα: A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1 Είναι η Μήτρα της γκραβούρας. Εισάγοντάς την, αυτόματα απομνημονεύεται στην επιφάνεια εργασίας του MATLAB. Μπορούμε να αναφερόμαστε σ αυτήν απλά με το όνομά της Α. Δείτε τώρα τι είναι αυτό που την κάνει τόσο ενδιαφέρουσα; Γιατί είναι μαγική;
sum, transpose, και diag Έχουμε βέβαια ήδη κάνει μνεία για τις ιδιότητες της μαγικής Μήτρας που έχουν να κάνουν με τους διαφορετικούς τρόπους αθροίσματος των στοιχείων της: Αν πάρτε το άθροισμα των στοιχείων κάθε σειράς ή κάθε στήλης, ή κάθε διαγωνίου της Μήτρας θα δείτε πως είναι όλα ίδια. Ας το διαπιστώσουμε με το MATLAB.
sum, transpose, και diag Κάνουμε την 1 η πρόσθεση: sum(a) ans = 34 34 34 34 Με την εντολή sum(a) το MATLAB έκανε ένα άνυσμα-σειρά που έχει για στοιχεία του τα αθροίσματα των στοιχείων κάθε στήλης της Α, δηλαδή το μαγικό άθροισμα, 34.
sum, transpose, και diag Τι γίνεται όμως με το άθροισμα των γραμμών; Το MATLAB «προτιμά» να δουλεύει με τις στήλες των μητρών. Έτσι, ένας τρόπος για να πάρουμε το άθροισμα των γραμμών, είναι να βρούμε την Μήτρα Α Τ και μετά να κάνουμε την ίδια δουλειά, βρίσκοντας αυτή την φορά τα αθροίσματα των σειρών (αφού θα έχουν γίνει οι σειρές στήλες). Με μία εκ νέου Τ, θα έχουμε το άνυσμα-στήλη των αθροισμάτων των γραμμών της Μήτρας Α.
sum, transpose, και diag Το MATLAB έχει δύο τρόπους για το (transpose Τ ). Η απόστροφος ( ) που κάνει την σύνθετη μιγαδική αντιμετάθεση γύρω από την κύρια διαγώνιο της μήτρας και αλλάζει συγχρόνως το πρόσημο του φανταστικού μέρους κάθε μιγαδικού στοιχείου της μήτρας (δηλαδή βάζει το συζυγές του). Η τελεία-απόστροφος (.'), που κάνει μόνο την αντιμετάθεση χωρίς να αλλάζει τα πρόσημα των μιγαδικών στοιχείων. Για τις μήτρες που έχουν μόνο πραγματικούς αριθμούς, το αποτέλεσμα είναι το ίδιο.
sum, transpose, και diag Έτσι το: A' Μας δίνει: ans = 16 5 9 4 3 10 6 15 2 11 7 14 13 8 12 1
sum, transpose, και diag Και το: sum(a')' Μας δίνει ένα άνυσμα-στήλη με τα αθροίσματα της κάθε σειράς: ans = 34 34 34 34
sum, transpose, και diag Ένας άλλος τρόπος για να βρούμε το άθροισμα των γραμμών, που αποφεύγει το διπλό Τ, χρησιμοποιεί την είσοδο της διάστασης στην συνάρτηση της πρόσθεσης sum: sum(a,2) ans = 34 34 34 34 Βοήθεια: doc sum B = sum(a,dim) sums along the dimension of A specified by scalar dim. The dim input is an integer value from 1 to N, where N is the number of dimensions in A. Set dim to 1 to compute the sum of each column, 2 to sum rows, etc.
sum, transpose, και diag Το άθροισμα των στοιχείων της κύριας διαγωνίου βρίσκεται με τις εντολές: sum και diag: diag(a) Μας δίνει: ans = 16 10 7 1
sum, transpose, και diag και sum(diag(a)) Μας δίνει: ans = 34
sum, transpose, και diag Η άλλη διαγώνιος λέγεται αντιδιαγώνιος (antidiagonal) και καθώς δεν είναι τόσο σημαντική (μαθηματικώς), το MATLAB δεν έχει έτοιμες συναρτήσεις γι αυτήν. Υπάρχει όμως μια εντολή που χρησιμοποιείται αρχικά στα γραφικά, η fliplr, η οποία αντιστρέφει την Μήτρα από αριστερά δεξιά: sum(diag(fliplr(a))) ans = 34
sum, transpose, και diag Κατά την εξέταση της Μήτρας στην γκραβούρα του Dürer και για να ανακαλύψουμε τις «μαγικές» της ιδιότητες, είδαμε μερικές από τις συναρτήσεις του MATLAB για τις μήτρες. Στην συνέχεια, πάλι με την ίδια μήτρα του Dürer, θα ανακαλύψουμε κι άλλες δυνατότητες του MATLAB.
Η εντολή magic Όπως είδαμε, το MATLAB έχει μια εντολή δημιουργίας μαγικών τετραγώνων, σχεδόν κάθε διάστασης, η οποία δικαιωματικά λέγεται εντολή magic: B = magic(4) B = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1
Η Μήτρα αυτή είναι σχεδόν ίδια με την Μήτρα του Dürer στην γκραβούρα και έχει τις ίδιες μαγικές ιδιότητες. Η μόνη διαφορά τους είναι πως οι δύο μεσαίες στήλες τους, είναι αντιμετατεθειμένες. Για να τις κάνουμε ακριβώς ίδιες, πρέπει να αντιμεταθέσουμε τις δύο στήλες:
A = B(:,[1 3 2 4]) Αυτοί οι δείκτες δείχνουν πως για κάθε γραμμή της Μήτρας Β- αλλάζουμε την σειρά των στοιχείων τους σε 1, 3, 2, 4, πράγμα που δίνει: A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1
Δημιουργώντας Μήτρες Το MATLAB μας δίνει την δυνατότητα να δημιουργούμε τις βασικές Μήτρες με 4 (τέσσερις) εντολές. zeros ones rand randn Όλα μηδενικά Όλοι άσσοι Ομοιόμορφα κατανεμημένα τυχαία στοιχεία Κανονικά κατανεμημένα τυχαία στοιχεία
Δημιουργώντας Μήτρες Ιδού κάποια παραδείγματα: Z = zeros(2,4) Z = 0 0 0 0 0 0 0 0 F = 5*ones(3,3) F = 5 5 5 5 5 5 5 5 5
Δημιουργώντας Μήτρες N = fix(10*rand(1,10)) N = 9 2 6 4 8 7 4 0 8 4 R = randn(4,4) R = 0.6353 0.0860-0.3210-1.2316-0.6014-2.0046 1.2366 1.0556 0.5512-0.4931-0.6313-0.1132-1.0998 0.4620-2.3252 0.3792
Δημιουργώντας Μήτρες (τρόποι δημιουργίας) v = [1 2 3 4] v = 1 2 3 4 vec = 1:5 vec = 1 2 3 4 5 nv = 1:2:9 nv = 1 3 5 7 9
Δημιουργώντας Μήτρες (τρόποι δημιουργίας) ls = linspace(3,15,5) ls = 3 6 9 12 15 Διάστημα από το 3 μέχρι το 15 γραμμικά, με 5 τιμές logspace(1,5,3) ans = 10 1000 100000 Διάστημα από το 10 1 μέχρι το 10 5 γραμμικά, με 3 τιμές
Εκφράσεις (Expressions)
Μεταβλητές (Variables) Όπως οι περισσότερες γλώσσες προγραμματισμού, έτσι και το MATLAB έχει μαθηματικές εκφράσεις, οι οποίες όμως εδώ σε αντίθεση με τις άλλες γλώσσες- αφορούν ολόκληρες Μήτρες. Το MATLAB δεν απαιτεί κανενός είδους δήλωση ή τον ορισμό των διαστάσεων της Μεταβλητής.
Μεταβλητές (Variables) Όταν βρίσκει το όνομα μιας καινούργιας Μεταβλητής, την δημιουργεί αυτόματα και της παραχωρεί τον απαραίτητο χώρο για την αποθήκευσή της. Εάν η Μεταβλητή ήδη υπάρχει, αλλάζει το περιεχόμενό της, και αν χρειάζεται της παραχωρεί νέο χώρο αποθήκευσης.
Μεταβλητές (Variables) Για παράδειγμα: num_students = 25 Δημιουργεί μία Μήτρα (1x1) με το όνομα num_students και αποθηκεύει την τιμή 25, στο μοναδικό της στοιχείο. Για να δούμε την Μήτρα που αντιστοιχείται σε κάθε Μεταβλητή, απλά γράφουμε το όνομα της Μεταβλητής.
Μεταβλητές (Variables) Τα ονόματα των Μεταβλητών αρχίζουν από ένα γράμμα που μπορεί να ακολουθείται από γράμματα, αριθμούς, ψηφία, ή ακόμα και παύλες. Το MATLAB ξεχωρίζει τα μικρά από τα κεφαλαία γράμματα. Το Α και το a δεν είναι η ίδια Μεταβλητή.
Μεταβλητές (Variables) Αν και τα ονόματα των μεταβλητών μπορούν να έχουν οποιοδήποτε μέγεθος, το MATLAB χρησιμοποιεί μόνο τους πρώτους N χαρακτήρες του ονόματος, (όπου N είναι ο αριθμός που δίνει η συνάρτηση namelengthmax), και αγνοεί τους υπόλοιπους. Έτσι, είναι σημαντικό να κάνουμε τα ονόματα των μεταβλητών μοναδικά, στα πρώτα Ν γράμματα του ονόματός των, για να βοηθούμε το MATLAB να ξεχωρίζει τις μεταβλητές.
Μεταβλητές (Variables) N = namelengthmax N = 63
Αριθμοί (Numbers) To MATLAB χρησιμοποιεί την συμβατική δεκαδική γραφή, με επιλογή του δεκαδικού σημείου και πρόσημο στην αρχή των αριθμών. Η επιστημονική γραφή χρησιμοποιεί το γράμμα e για να ορίσει την δύναμη στην οποία υψώνεται το 10. Οι φανταστικοί αριθμοί χρησιμοποιούν ή το i ή το j σαν κατάληξη.
Αριθμοί (Numbers) Παραδείγματα αριθμών: 3-99 0.0001 9.6397238 1.60210e-20 6.02252e23 1i -3.14159j 3e5i
Αριθμοί (Numbers) Το MATLAB αποθηκεύει όλους τους αριθμούς, χρησιμοποιώντας εσωτερικά το long format, όπως αυτό ορίζεται από το πρότυπο κινητής υποδιαστολής της IEEE. Οι αριθμοί κινητής υποδιαστολής έχουν ακρίβεια 16 δεκαδικών ψηφίων και πεπερασμένη περιοχή από 10-308 μέχρι 10 +308.
Αριθμοί (Numbers) Οι αριθμοί που έχουν double format έχουν μέγιστη ακρίβεια 52 ψηφίων. Για παράδειγμα ο ακόλουθος κώδικας (πρόγραμμα) δείχνει δύο άνισους αριθμούς, σαν ίσους, γιατί είναι αμφότεροι κομμένοι στο τέλος: x = 36028797018963968; y = 36028797018963972; x == y ans = 1
Αριθμοί (Numbers) Οι ακέραιοι μπορούν να έχουν ακρίβεια 8-bit, 16- bit, 32-bit, και 64-bit. Αποθηκεύοντας τους αριθμούς -του προηγούμενου παραδείγματοςσαν ακέραιους, με ακρίβεια 64-bit, αυτό βελτιώνει την ακρίβεια: x = uint64(36028797018963968); y = uint64(36028797018963972); x == y ans = 0
Αριθμοί (Numbers) Το MATLAB αποθηκεύει το πραγματικό και το φανταστικό μέρος ενός μιγαδικού αριθμού. Κρατάει το μέτρο των δύο μερών με διαφορετικό τρόπο, ανάλογα με την περίπτωση (context). Για παράδειγμα, η συνάρτηση sort (που βάζει τους αριθμούς στην σειρά σύμφωνα με το μέγεθος, να αυξάνεται) δίνει αποτέλεσμα με βάση το μέτρο και ορίζει την σειρά, με βάση την γωνία της φάσης.
Αριθμοί (Numbers) sort([3+4i, 4+3i]) ans = 4.0000 + 3.0000i 3.0000 + 4.0000i Κι αυτό διότι η γωνία της φάσης: angle(3+4i) ans = 0.9273 angle(4+3i) ans = 0.6435
Αριθμοί (Numbers) Ο συγκριτικός τελεστής == ίσο με απαιτεί και το πραγματικό και το φανταστικό μέρος να είναι ίσα. Οι άλλοι δυαδικοί συγκριτικοί τελεστές: > <, >=, και <= αγνοούν το φανταστικό μέρος του αριθμού και λαμβάνουν υπόψη μόνο το πραγματικό μέρος.
Πράξεις με Μήτρες (Matrix Operators) Οι εκφράσεις χρησιμοποιούν τους γνωστούς αριθμητικούς τελεστές αλλά και κανόνες προτεραιότητας. + Addition - Subtraction * Multiplication / Division \ Left division ^ Power ' Complex conjugate transpose ( ) Specify evaluation order
Τελεστές Σειρών (Array Operators) Όταν οι Μήτρες απομακρύνονται από τον κόσμο της γραμμικής άλγεβρας, τότε γίνονται δισδιάστατες αριθμητικές Σειρές. Οι αριθμητικές πράξεις στις Σειρές γίνονται στοιχείο με στοιχείο. Αυτό σημαίνει πως η πρόσθεση και η αφαίρεση ναι μεν είναι ίδιες και για τις Σειρές και για τις Μήτρες, αλλά ο πολ/σμός είναι διαφορετικός. Το MATLAB χρησιμοποιεί μία τελεία (.) ή ένα κώμα (,), επιπλέον για τις πολλαπλασιαστικές πράξεις στις Σειρές.
Τελεστές Σειρών (Array Operators) Οι πράξεις αυτές γίνονται: + Addition - Subtraction.* Element-by-element multiplication./ Element-by-element division.\ Element-by-element left division.^ Element-by-element power.' Unconjugated array transpose
Τελεστές Σειρών (Array Operators) Εάν η μαγική τετραγωνική Μήτρα του Dürer πολ/σθεί με τον εαυτό της, με πολ/σμό σειρών: A.*A Το αποτέλεσμα θα είναι μια Σειρά που θα έχει τα τετράγωνα των αριθμών από 1 μέχρι 16, σε μια ασυνήθιστη σειρά:
Τελεστές Σειρών (Array Operators) ans = 256 9 4 169 25 100 121 64 81 36 49 144 16 225 196 1
Κατασκευάζοντας Πίνακες (Building Tables) Οι πράξεις με Σειρές είναι χρήσιμες για την κατασκευή πινάκων. Υποθέστε πως n είναι ένα άνυσμα στήλη: n = (0:9)'; Κατόπιν με pows = [n n.^2 2.^n] Δημιουργείται ένας πίνακας με αριθμούς, δυνάμεις του 2:
Κατασκευάζοντας Πίνακες (Building Tables) pows = 0 0 1 1 1 2 2 4 4 3 9 8 4 16 16 5 25 32 6 36 64 7 49 128 8 64 256 9 81 512
Κατασκευάζοντας Πίνακες (Building Tables) Οι βασικές μαθηματικές συναρτήσεις δουλεύουν στις Σειρές στοιχείο με στοιχείο. Έτσι οι εντολές: format short g x = (1:0.1:2)'; logs = [x log10(x)] Δημιουργούν ένα πίνακα με αριθμούς στην 1 η στήλη και τους λογαρίθμους τους στην 2 η στήλη.
Κατασκευάζοντας Πίνακες (Building Tables) logs = 1.0 0 1.1 0.04139 1.2 0.07918 1.3 0.11394 1.4 0.14613 1.5 0.17609 1.6 0.20412 1.7 0.23045 1.8 0.25527 1.9 0.27875 2.0 0.30103
Συναρτήσεις (Functions) Το MATLAB προσφέρει ένα πολύ μεγάλο αριθμό βασικών μαθηματικών συναρτήσεων, των abs, sqrt, exp, και sin, συμπεριλαμβανομένων. Όταν ζητάμε την τετραγωνική ρίζα ή τον λογάριθμο ενός αρνητικού αριθμού, δεν δίνει λάθος, αλλά υπολογίζει το αντίστοιχο μιγαδικό αποτέλεσμα. Το MATLAB επίσης υπολογίζει ένα πλήθος προχωρημένων μαθηματικών συναρτήσεων, όπως οι συναρτήσεις Bessel και gamma.
Συναρτήσεις (Functions) Οι περισσότερες απ αυτές τις συναρτήσεις δέχονται μιγαδικά ορίσματα (arguments). Για να έχετε την λίστα των βασικών μαθηματικών συναρτήσεων, δώστε: help elfun Για να έχετε την λίστα των προχωρημένων μαθηματικών συναρτήσεων και Μητρών, δώστε: help specfun help elmat
Συναρτήσεις (Functions) Μερικές από τις συναρτήσεις, όπως οι sqrt και sin, είναι built in. Δηλαδή αποτελούν κορμό του MATLAB και είναι αρκετά αποτελεσματικές, αλλά οι υπολογιστικές τους λεπτομέρειες δεν είναι εύκολα προσβάσιμες. Άλλες πάλι φτιάχνονται με την γλώσσα προγραμματισμού του MATLAB και οι υπολογιστικές τους λεπτομέρειες είναι προσβάσιμες.
Συναρτήσεις (Functions) Υπάρχουν μερικές διαφορές μεταξύ των συναρτήσεων built-in και των άλλων. Για παράδειγμα, για τις συναρτήσεις built-in, μπορούμε να δούμε τον κώδικά τους. Για τις άλλες, μπορούμε και να τον δούμε και να τον αλλάξουμε, εάν θέλουμε.
Συναρτήσεις (Functions) Αρκετές ειδικές συναρτήσεις δίνουν τις τιμές χρήσιμων σταθερών. pi 3.14159265... i j eps realmin Realmax Inf NaN Imaginary unit, 1 Same as i Floating-point relative precision, ε = 2 52 Smallest floating-point number, 2 1022 Largest floating-point number, (2 -ε)2 1023 Infinity Not-a-number
Συναρτήσεις (Functions) Το άπειρο Inf προκύπτει όταν μία μη μηδενική ποσότητα διαιρείται με το μηδέν, ή όταν μία καλώς ορισμένη μαθηματική έκφραση ξεπερνάει (overflow), το realmax. Το Not-a-number προκύπτει από εκφράσεις του τύπου: 0/0 ή Inf-Inf που δεν έχουν καλά ορισμένες μαθηματικές τιμές.
Συναρτήσεις (Functions) Τα ονόματα των συναρτήσεων δεν είναι κατειλημμένα. Μπορούμε να δώσουμε νέες τιμές σε οποιαδήποτε απ αυτές, π.χ. eps = 1.e-6 Και στην συνέχεια χρησιμοποιούμε αυτή την τιμή στους υπολογισμούς. Η αρχική συνάρτηση μπορεί να αποκατασταθεί με την εντολή: clear eps
Παραδείγματα Εκφράσεων Είδαμε ήδη μερικά παραδείγματα με εκφράσεις του MATLAB. Στην συνέχεια δίνουμε μερικά ακόμα παραδείγματα με τα αποτελέσματά τους: rho = (1+sqrt(5))/2 rho = 1.6180
Παραδείγματα Εκφράσεων a = abs(3+4i) a = 5 z = sqrt(besselk(4/3,rho-i)) z = 0.3730+ 0.3214i
Παραδείγματα Εκφράσεων huge = exp(log(realmax)) huge = 1.7977e+308 toobig = pi*huge toobig = Inf