Α.Τ.Ε.Ι Σερρών Σχολή Τεχνολογικών Εφαρμογών Τμήμα Μηχανολογίας Εισαγωγή στο MATLAB ΙΩΑΝΝΗΣ ΜΟΥΣΤΑΚΑΣ Μηχανικός Πληροφορικής, MSc Σέρρες, Φεβρουάριος 2011 Περιεχόμενα 1. Γενικά ........................................................................................... 2 1.1. Τι είναι το MATLAB;..................................................................................... 2 1.2. Στοιχεία του Matlab..................................................................................... 2 1.3. Simulink ........................................................................................................ 3 1.4. Είσοδος στο Μatlab ..................................................................................... 5 1.5. Έξοδος από το Μatlab................................................................................. 6 1.6. Περιγραφή του περιβάλλοντος................................................................... 6 1.7. Μενού File .................................................................................................... 7 1.8. Βασικές μαθηματικές πράξεις...................................................................... 8 1.9. Μεταβλητές ................................................................................................ 11 1.10. Λειτουργίες του παράθυρου εντολών (Command Window)................ 13 1.11. Μορφοποίηση αριθμών (format)............................................................ 14 1.12. Ειδικές λειτουργίες................................................................................... 15 1.13. Βοήθεια..................................................................................................... 16 2. Πίνακες ....................................................................................... 20 2.1. Γενικά.......................................................................................................... 20 2.2. Δημιουργία ειδικών τύπων πινάκων ......................................................... 24 2.3. Πράξεις με πίνακες..................................................................................... 25 2.4. Ειδικές λειτουργίες..................................................................................... 26 3. Γραφικές Παραστάσεις ................................................................ 27 3.1. Γενικά.......................................................................................................... 27 3.2. Πολλαπλές γραφικές παραστάσεις ........................................................... 30 3.3. Περισσότερες ρυθμίσεις ............................................................................ 31 3.4. Ελληνικά στο Matlab ................................................................................. 32 3.5. Αποθήκευση των γραφικών μας παραστάσεων ...................................... 34 4. Πολυώνυμα / Παρεμβολή ........................................................... 35 4.1. Γενικά.......................................................................................................... 35 4.2. Ρίζες πολυωνύμων ..................................................................................... 36 4.3. Υπολογισμός τιμών πολυωνύμου ............................................................. 37 4.4. Πολλαπλασιασμός / Διαίρεση μεταξύ πολυωνύμων ............................... 40 4.5. Παραγώγιση πολυωνύμων ........................................................................ 42 4.6. Πολυωνυμική προσέγγιση......................................................................... 44 4.7. Παρεμβολή ................................................................................................. 45 5. ΣΥΜΒΟΛΙΚΑ ΜΑΘΗΜΑΤΙΚΑ (Symbolic Math).............................. 47 5.1. Γενικά.......................................................................................................... 47 5.2. Συμβολική απεικόνιση μεταβλητών.......................................................... 48 5.3. Όρια ............................................................................................................ 50 5.4. Παράγωγοι / Ολοκληρώματα.................................................................... 51 5.5. Γραφικές παραστάσεις συμβολικών συναρτήσεων................................. 54 Βιβλιογραφία .................................................................................. 56 1 1. Γενικά 1.1. Τι είναι το MATLAB; Το ΜΑΤLΑΒ είναι μία γλώσσα υψηλού επιπέδου που χρησιμοποιείται για τεχνικούς υπολογισμούς. Προκύπτει από τα αρχικά των λέξεων MATrix LABoratory και η λειτουργία του βασίζεται κυρίως στη χρήση πινάκων τα στοιχεία των οποίων μπορεί να είναι πραγματικοί ή μιγαδικοί αριθμοί. Σχεδιάστηκε εξαρχής για μαθηματικούς σκοπούς, για να κάνει δυνατή την υπολογιστική επίλυση απλών και σύνθετων μαθηματικών προβλημάτων. Προγράμματα γραμμένα σε ΜΑΤLΑΒ είναι γενικά σαφή και εύκολα αντιληπτά. Η γλώσσα είναι αυστηρά δομημένη, όσον αφορά τη σύνταξη των εντολών της, και έτσι πολλά από τα συντακτικά λάθη προγραμματισμού μπορούν να ανακαλυφθούν κατά την εκτέλεση του προγράμματος παρέχοντας σημαντική ασφάλεια στον προγραμματιστή. Η δυνατότητά του να κάνει συμβολικές πράξεις αλλά και ο μεγάλος αριθμός έτοιμων βιβλιοθηκών το κατατάσσει στα καλύτερα στην κατηγορία του. Δημιουργήθηκε από τον Cleve Moler στη δεκαετία του 1970, αρχικά σαν εργαλείο διαχείρισης των βιβλιοθηκών της γλώσσας προγραμματισμού FORTRAΝ: Linpack (γραμμική άλγεβρα) και Eispack (ιδιοτιμές και ιδιοδιανύσματα). Η έκδοση που χρησιμοποιείται σήμερα είναι η 8 και πέρα από τις δυνατότητες που παρείχαν οι προηγούμενες αυτή έχει εμπλουτιστεί με νέες βιβλιοθήκες αλλά και με καινούριο πιο φιλικό γραφικό περιβάλλον. Το Matlab χρησιμοποιείται κυρίως για μαθηματικούς υπολογισμούς, ανάπτυξη αλγορίθμων, προσομοίωση, μοντελοποίηση και προτυποποίηση. Επίσης, για ανάλυση δεδομένων, οπτικοποίηση, επιστημονικά και μηχανολογικά γραφικά και ανάπτυξη εφαρμογών. Είναι ένα διαδραστικό σύγχρονο εργαλείο του οποίου βασικό στοιχείο είναι η διάταξη (array). Αυτό μας επιτρέπει τη λύση πολλών υπολογιστικών προβλημάτων, ιδιαίτερα όσων περιλαμβάνουν σχηματισμούς πινάκων και διανυσμάτων σε χρόνο μικρότερο απ’ ότι απαιτούν οι γλώσσες προγραμματισμού Fortran και C. 1.2. Στοιχεία του Matlab Το σύστημα του Matlab αποτελείται από πέντε βασικά μέρη: 2 a. Περιβάλλον ανάπτυξης. Είναι ένα σύνολο από εργαλεία που βοηθάνε στην χρήση των συναρτήσεων και των αρχείων του Matlab. Τα εργαλεία αυτά συμπεριλαμβάνουν την επιφάνεια εργασίας του Matlab (Matlab desktop),τη γραμμή εργασιών (command window), το ιστορικό εντολών (command history), έναν κειμενογράφο (editor) και έναν διορθωτή (debugger), έναν περιηγητή για τη βοήθεια, το χώρο εργασίας (workspace), τα αρχεία και την αναζήτηση. b. Βιβλιοθήκη μαθηματικών συναρτήσεων του Matlab. Είναι μια τεράστια συλλογή από υπολογιστικούς αλγορίθμους που καλύπτουν ένα ευρύτατο φάσμα που ξεκίνα από στοιχειώδεις συναρτήσεις, όπως το άθροισμα, το ημίτονο, και εκτείνεται σε πιο σύνθετες συναρτήσεις, όπως αντιστροφή πίνακα, συναρτήσεις Bessel και μετασχηματισμούς Fourrier. c. Γλώσσα του Matlab. Είναι μια υψηλού επιπέδου γλώσσα με δηλώσεις δομής ελέγχου, δομές δεδομένων, συναρτήσεις, εισόδους / εξόδους και χαρακτηριστικά αντικειμενοστραφούς προγραμματισμού. d. Γραφικά Το Matlab μπορεί με ευκολία να αναπαραστήσει γραφικά διανύσματα και πίνακες και δίνει τη δυνατότητα σχολιασμού και εκτύπωσης αυτών των γραφημάτων. Περιλαμβάνει συναρτήσεις υψηλού επιπέδου για απεικόνιση διανυσμάτων σε διαγράμματα δυο και τριών διαστάσεων, επεξεργασία εικόνας, δυναμική κίνηση ομοιωμάτων και γραφικά παρουσίασης. Περιλαμβάνει επιπλέον συναρτήσεις χαμηλού επιπέδου που επιτρέπουν στο χρήστη να προσαρμόσει πλήρως την εμφάνιση των γραφημάτων. e. Περιβάλλον εφαρμογής προγραμμάτων (Application Program Interface - API) Είναι μια βιβλιοθήκη που επιτρέπει στο χρήστη να γράψει κώδικα στις γλώσσες προγραμματισμού C και Fortran που αλληλεπιδρούν με το Matlab. Δίνει τη δυνατότητα κλήσης υπορουτίνων από το Matlab (dynamic linking), κλήση του Matlab ως υπολογιστικής μηχανής και για την ανάγνωση και ανάπτυξη αρχείων τύπου MAT (MAT-files). 1.3. Simulink Το Simulink είναι ένα λογισμικό πακέτο για μοντελοποίηση, προσομοίωση και ανάλυση δυναμικών, γραμμικών, μη-γραμμικών, συνεχών, διακριτών, απλών 3 αλλά και πολυμεταβλητών συστημάτων. Λειτουργεί σαν συνοδευτικό πρόγραμμα στο Matlab. Το Simulink χρησιμοποιεί ένα διαδραστικό γραφικό περιβάλλον (Graphical User Interface - GUI) και ένα σύνολο βιβλιοθηκών, χρήσιμο για το σχεδιασμό, την προσομοίωση, την εφαρμογή και τον έλεγχο συστημάτων όπως συστήματα επικοινωνιών, επεξεργασίας σήματος και εικόνας, συστημάτων ελέγχου και πολλών άλλων. Οι βιβλιοθήκες περιέχουν τα δομικά στοιχεία των συστημάτων (blocks). Με αυτό μπορούμε να σχεδιάσουμε μοντέλα, όπως θα μπορούσαμε με μολύβι και χαρτί. Τα μοντέλα του Simulink είναι ιεραρχικά δομημένα, δηλαδή κάθε μοντέλο αποτελείται από blocks τα οποία με τη σειρά τους μπορεί να περιέχουν άλλα blocks (υποσυστήματα). Αυτή η προσέγγιση μας βοηθά να κατανοήσουμε το πώς ένα μοντέλο οργανώνεται και πως τα στοιχεία του αλληλεπιδρούν μεταξύ τους. Μετά τον καθορισμό ενός μοντέλου, μπορούμε να το προσομοιώσουμε χρησιμοποιώντας μία επιλογή από μεθόδους ολοκλήρωσης, είτε από το μενού του Simulink είτε με την εισαγωγή εντολών στο παράθυρο εντολών του Matlab. Οι επιλογές του Simulink είναι ιδιαίτερα κατάλληλες για διαδραστική εργασία. Χρησιμοποιώντας παλμογράφους (scopes) και άλλα blocks μπορούμε να δούμε τα αποτελέσματα της προσομοίωσης, κατά την διάρκειά της. Επιπλέον μπορούμε να αλλάξουμε τις παραμέτρους και αμέσως να δούμε το καινούργιο αποτέλεσμα και την απόκλιση του από το αρχικό. Τα αποτελέσματα της προσομοίωσης μπορούν να τοποθετηθούν στο χώρο εργασίας του Matlab (workspace) για την μετέπειτα επεξεργασία και οπτικοποίηση τους. Επειδή το Matlab και το Simulink είναι ενσωματωμένα μπορούμε να προσομοιώσουμε, να αναλύσουμε και να αναθεωρήσουμε τα μοντέλα σε κάθε περιβάλλον, σε οποιοδήποτε σημείο. Το Simulink περιλαμβάνει μία κατανοητή και περιεκτική βιβλιοθήκη από πηγές σημάτων (sources), σύνδεσμοι (sinks), γραμμικές (linear), μη γραμμικές (nonlinear) συναρτήσεις. Μπορούμε ακόμη να προσαρμόσουμε και να δημιουργήσουμε τα δικά μας blocks. Το περιβάλλον του Simulink φαίνεται στην εικόνα που ακολουθεί, όπου διακρίνεται και ένα απλό μοντέλο. 4 1.4. Είσοδος στο Μatlab Για να χρησιμοποιήσουμε το Matlab πρέπει πρώτα να το εγκαταστήσουμε στον υπολογιστή μας. Μπορούμε να ξεκινήσουμε το πρόγραμμα με δύο κυρίως τρόπους. Με τα πλήκτρα Έναρξη -> Προγράμματα (programs) -> MΑΤLAB -> MATLABR2009a ή με διπλό κλικ στο εικονίδιο του Μatlab στην αρχική οθόνη του υπολογιστή, το οποίο έχει εγκατασταθεί αυτόματα στην οθόνη του υπολογιστή μας αμέσως μετά την εγκατάσταση του προγράμματος. 5 1.5. Έξοδος από το Μatlab Για να κλείσουμε το πρόγραμμα επιλέγουμε ένα από τους παρακάτω τρεις τρόπους: a. από το μενού του προγράμματος μας επιλέγουμε File -> Exit -> MATLAB b. πατώντας το στο παράθυρο του Matlab. c. πληκτρολογώντας quit στο παράθυρο εντολών (command window) του Matlab. (ακολουθεί εξήγηση σχετικά με το command window) 1.6. Περιγραφή του περιβάλλοντος Γενικά για το περιβάλλον του Matlab ισχύει ό,τι και για όλες τις παραθυρικές εφαρμογές των Windows. To παράθυρο του προγράμματος περιέχει τη γραμμή τίτλου, με τη βοήθεια της οποίας μπορούμε να το ελαχιστοποιήσουμε, να το μεγιστοποιήσουμε, να το κλείσουμε ή να το μετακινήσουμε στην οθόνη ì ας. Ακριβώς κάτω από τη γραμμή τίτλου βρίσκεται η γραμμή των μενού με κάποιες βασικές λειτουργίες του προγράμματος, η γραμμή εργαλείων και το κυρίως περιβάλλον του Matlab. Εξορισμού το τελευταίο χωρίζεται σε τρία μικρότερα παράθυρα (Εικόνα 1.1): a. Στη δεξιά πλευρά της οθόνης έχουμε το βασικό παράθυρο του προγράμματος. Ονομάζεται Command Window (παράθυρο εντολών) και είναι ο χώρος όπου πληκτρολογούμε τις εντολές μας. b. Στην πάνω αριστερή πλευρά της οθόνης έχουμε καταρχήν το Launch Pad (παράθυρο εκκίνησης), το οποίο μας δείχνει όλα τα μέρη του προγράμματος. Μπορούμε να το χρησιμοποιήσουμε για να προσπελάσουμε εύκολα όλα τα υποπρογράμματα (Toolboxes) του Matlab. c. Στη θέση του Launch Pad μπορούμε να εμφανίσουμε την επιφάνεια εργασίας (Workspace) επιλέγοντας την αντίστοιχη ετικέτα ακριβώς κάτω από το Launch Pad. To Workspace είναι ο χώρος όπου εμφανίζονται οι μεταβλητές που χρησιμοποιούμε στο πρόγραμμα. d. Στην κάτω αριστερή πλευρά της οθόνης υπάρχει το Command History, όπου φαίνονται οι εντολές που έχουμε ήδη δώσει στο Matlab . e. Στη θέση του Command History και με τη βοήθεια πάλι της αντίστοιχης ετικέτας που βρίσκεται από κάτω μπορούμε να εμφανίσουμε τα περιεχόμενα του φακέλου των Windows στον οποίο βρισκόμαστε αυτή τη στιγμή (Current Directory). 6 Χρησιμοποιώντας το μενού View (Προβολή) (Εικόνα 1.2) μπορούμε να αλλάξουμε τη μορφή του περιβάλλοντος του Matlab. Συγκεκριμένα, επιλέγοντας κάθε ένα από τα επιμέρους στοιχεία του περιβάλλοντος μπορούμε να το εμφανίσουμε ή να το αποκρύψουμε. Για να επιστρέψουμε στην αρχική μορφή του περιβάλλοντος θα επιλέξουμε το υπομενού Desktop Layout και στη συνέχεια την εντολή Default. 1.7. Μενού File Από την επιλογή file έχουμε τις ακόλουθες δυνατότητες: 1. file -> new για τη δημιουργία ενός νέου αρχείου. Οι τύποι των αρχείων που μπορούμε να δημιουργήσουμε είναι M-file*, figure, model, GUI. *Aν επιλέξουμε να δημιουργήσουμε ένα αρχείο M-file αυτόματα ενεργοποιείται κι ανοίγει στην οθόνη μας ο κειμενογράφος (editor) του Matlab. O Matlab 7 editor έχει τις ίδιες δυνατότητες με το Command Window, με τη διαφορά ότι κάθε εντολή δεν είναι απαραίτητο να εκτελείται αυτόνομα, αλλά ο χρήστης έχει τη δυνατότητα να γράψει τον κώδικα του συνολικά κι εφόσον τον αποθηκεύσει σε ένα αρχείο με επέκταση .m να εκτελέσει τον κώδικα του στο σύνολο. Επίσης, μπορεί μέσω του Command window να ανακαλέσει το προς εκτέλεση αρχείο όποτε αυτός το θελήσει. Με αυτόν τον τρόπο δίνεται στον χρήστη η δυνατότητα δημιουργίας συναρτήσεων και υπορουτινών που μπορούν να κληθούν μέσω οποιουδήποτε άλλου προγράμματος σε οποιαδήποτε χρονική στιγμή. 2. file -> open, για το άνοιγμα οποιουδήποτε αποθηκευμένου αρχείου. 3. file -> close command window , με το οποίο κλείνει το παράθυρο εντολών. 4. file -> import data, για την εισαγωγή δεδομένων στο χώρο εργασίας. Τα δεδομένα εισάγονται είτε με τη μορφή διανυσμάτων, είτε με τη μορφή πινάκων. 5. file-> save workspace as, αποθηκεύει τα δεδομένα που βρίσκονται στο χώρο εργασίας με την επέκταση .mat. 6. file -> set path, καθορίζει το φάκελο στον οποίο αποθηκεύονται δεδομένα και από τον οποίο ανακαλούνται κι εκτελούνται ήδη αποθηκευμένα προγράμματα και συναρτήσεις. 7. file -> preferences, επιλέγει ο χρήστης διάφορες ρυθμίσεις. 8. file -> print, εκτυπώνει τα αρχεία. 9. file… εμφανίζει τα τελευταία αρχεία που εκτελέστηκαν από το Matlab. 10. file -> exit Matlab για την έξοδο μας από το πρόγραμμα. Επεξηγηματικά σχόλια σε ένα m-file αρχείο μπορούν να εισαχθούν με το σύμβολο «%».Τα σχόλια αρχίζουν αμέσως μετά το ΄%΄ και τελειώνουν στο τέλος της γραμμής. Η εντολή file και οι επιλογές της φαίνονται και στον παρακάτω πίνακα. 1.8. Βασικές μαθηματικές πράξεις Η πιο απλή χρήση του Matlab συνίσταται στον υπολογισμό μαθηματικών πράξεων μεταξύ απλών αριθμών. Αυτό γίνεται στο Command Window με τη χρήση των εξής μαθηματικών τελεστών: 8 Πρόσθεση: Αφαίρεση: Πολλαπλασιασμός: Διαίρεση: Διαίρεση προς τα αριστερά: Ύψωση σε δύναμη: + * / \ ^(Shift+6) Άλλοι χρήσιμοι τελεστές, εκτός από τους βασικούς, φαίνονται στον πίνακα που ακολουθεί. * .* .^ \ ./ : Πολλαπλασιασμός αριθμών ή πινάκων Πολλαπλασιασμός πινάκων κατά στοιχείο Ύψωση σε δύναμη κατά στοιχείο Αριστερή διαίρεση Διαίρεση πινάκων κατά στοιχείο Άνω κάτω τελεία(σύμβολο περιοχής) () [] . , % ! ‘ ; = == <> <= >= ~ | & xor Παρενθέσεις Αγκύλες Δεκαδική υποδιαστολή Διαχωριστής στοιχείων Εισαγωγή σχολίων Εισαγωγή εντολών στο λειτουργικό σύστημα Μετατροπή αριθμού ή στοιχείων πίνακα σε συζυγείς Διαχωριστής γραμμών κατά τη δημιουργία πίνακα Απόδοση τιμής Έλεγχος ισότητας Τελεστές συσχέτισης Λογικό «ΟΧΙ» Λογικό «Η» Λογικό «ΚΑΙ» Αποκλειστικό «Η» Για να υπολογίσουμε το αποτέλεσμα κάποιας πράξης, απλά την πληκτρολογούμε στο Command Window και στη συνέχεια πατάμε το Enter . Μερικά απλά παραδείγματα υπολογισμού μαθηματικών πράξεων στο Matlab εμφανίζονται στην (Εικόνα 1.3): 9 Παρατηρούμε ότι σε κάθε περίπτωση ο υπολογιστής μας δείχνει το αποτέλεσμα της πράξης μας αφού πατήσουμε το Enter, αποθηκεύοντας το παράλληλα σε μια μεταβλητή που ονομάζεται ans. Μπορούμε φυσικά να δώσουμε στην ίδια γραμμή μια σειρά πράξεων όπως π.χ: 3^2/6+5. Σε αυτήν την περίπτωση το πρόγραμμα θα εκτελέσει τις πράξεις από αριστερά προς τα δεξιά και δίνοντας προτεραιότητα κατά σειρά στην ύψωση σε δύναμη (Α), στους πολλαπλασιασμούς / διαιρέσεις (*,/) και τέλος στις προσθαφαιρέσεις (+, -). Έτσι το παράδειγμα μας αντιστοιχεί στην πράξη: Μπορούμε να αλλάξουμε την προτεραιότητα των πράξεων χρησιμοποιώντας παρενθέσεις. Στο παράδειγμα μας, για να υπολογίσουμε την πράξη: θα πρέπει να γράψουμε: 3^2/(6+5). Όσον αφορά στη διαίρεση προς τα αριστερά, όταν η πράξη γίνεται με αριθμούς τότε αυτή έχει την έννοια μιας απλής διαίρεσης, όπου αλλάζουν θέση μεταξύ τους ο διαιρέτης και ο διαιρετέος. Η πράξη 3/5 δηλαδή θα έχει το ίδιο ακριβώς αποτέλεσμα με την πράξη 5\3. Όπως θα δούμε αργότερα, το Matlab επεκτείνει τον συνήθη ορισμό της διαίρεσης και την επιτρέπει ακόμη και μεταξύ διανυσμάτων και πινάκων. Σε αυτές τις περιπτώσεις η διαίρεση προς τα αριστερά έχει διαφορετική έννοια. Για να δούμε κάθε φορά το αποτέλεσμα της τελευταίας μας πράξης αρκεί να πληκτρολογήσουμε ans και να πατήσουμε Enter (Εικόνα 1.4). 10 ΠΡΟΣΟΧΗ: Το πρόγραμμα αποθηκεύει στη μεταβλητή ans μόνο το αποτέλεσμα της τελευταίας πράξης. Αν εμείς θέλουμε να αποθηκεύουμε τα αποτελέσματα των πράξεων μας για μελλοντική χρήση θα πρέπει να χρησιμοποιούμε δικές μας μεταβλητές. 1.9. Μεταβλητές Για να αποθηκεύσουμε το αποτέλεσμα μιας πράξης σε μια μεταβλητή, θα πρέπει να πληκτρολογήσουμε το όνομα της μεταβλητής, το σύμβολο του ίσον (=) και στη συνέχεια την πράξη μας (Εικόνα 1.5). Το όνομα μιας μεταβλητής μπορεί να περιέχει μόνο λατινικούς χαρακτήρες, πρέπει να αρχίζει οπωσδήποτε από γράμμα, και μπορεί να αποτελείται από οποιονδήποτε συνδυασμό γραμμάτων, αριθμών και της "κάτω παύλας" (underscore – “Shift” +”-“). Το συνολικό όνομα μιας μεταβλητής μπορεί να έχει μέχρι 31 χαρακτήρες. Τις μεταβλητές μας μπορούμε να τις δούμε στο Workspace (Εικόνα 1.6) ή εναλλακτικά στο Command Window πληκτρολογώντας την εντολή who. 11 Αφού αποθηκεύσουμε κάποια μεταβλητή μας, μπορούμε στη συνέχεια να δούμε την τιμή της κάνοντας ένα διπλό κλικ με το ποντίκι στην αντίστοιχη καταχώρηση στο Workspace, ή εναλλακτικά πληκτρολογώντας το όνομα της και πατώντας Enter στο Command Window. Για να διαγράψουμε μια μεταβλητή μας μπορούμε να κάνουμε δεξί κλικ με το ποντίκι στην αντίστοιχη καταχώρηση στο Workspace και να επιλέξουμε την εντολή Delete Selection , ή εναλλακτικά να πληκτρολογήσουμε στο Command Window την εντολή clear όνομα μεταβλητής, χρησιμοποιώντας το όνομα της μεταβλητής που θέλουμε να διαγράψουμε. Αντίστοιχα, για να διαγράψουμε όλες τις μεταβλητές μας μπορούμε να χρησιμοποιήσουμε την εντολή clear. Προσοχή: To Matlab χρησιμοποιεί ένα σύνολο εντολών, όπως για παράδειγμα την εντολή clear που είδαμε ήδη. Πρέπει να είμαστε προσεκτικοί να μη χρησιμοποιούμε για ονόματα μεταβλητών λέξεις που χρησιμοποιούνται από το πρόγραμμα ως εντολές, γιατί σε αυτήν την περίπτωση και για όσο χρησιμοποιούμε μεταβλητές με τέτοια ονόματα δε θα μπορούμε να χρησιμοποιούμε τις αντίστοιχες εντολές. Για παράδειγμα, αν δώσουμε σε μια μεταβλητή μας το όνομα clear, τότε δε θα μπορούμε να χρησιμοποιήσουμε πια την αντίστοιχη εντολή. Όπως είδαμε ήδη, το Workspace χρησιμοποιείται για να μας εμφανίζει όλες τις μεταβλητές που έχουμε χρησιμοποιήσει. Κάθε φορά που κλείνουμε το Matlab όμως το Workspace αδειάζει. Αν θέλουμε να κρατήσουμε τις μεταβλητές μας για μελλοντική χρήση, τότε έχουμε τη δυνατότητα να το αποθηκεύσουμε σε ένα αρχείο. Αυτό γίνεται από το μενού File μέσω της εντολής Save Workspace As .... Με την επιλογή της εντολής αυτής θα δούμε το παράθυρο (Εικόνας 1.7): 12 Στο παράθυρο αυτό δηλώνουμε πού θέλουμε να αποθηκεύσουμε το αρχείο μας (στο πεδίο Save in:) και ποιο όνομα θέλουμε να του δώσουμε (στο πεδίο File name:). Για να χρησιμοποιήσουμε ένα από τα αποθηκευμένα αρχεία μεταβλητών μας αρκεί να επιλέξουμε την εντολή Open ... από το μενού File, να βρούμε το αρχείο που θέλουμε και να το ανοίξουμε. 1.10. Λειτουργίες του παράθυρου εντολών (Command Window) Στο Command Window μπορούμε να επαναλάβουμε κάποια εντολή που έχουμε ήδη δώσει. Συγκεκριμένα, χρησιμοποιώντας το πάνω και κάτω βελάκι του πληκτρολογίου μπορούμε να δούμε κατά σειρά τις τελευταίες εντολές που δώσαμε. Για να επαναλάβουμε κάποια εντολή αρκεί να πατήσουμε το Enter όταν αυτή εμφανιστεί στην οθόνη. Το ίδιο μπορούμε να κάνουμε χρησιμοποιώντας το Command History. Όπως είπαμε, αυτό είναι ένα παράθυρο που μας δείχνει όλες τις εντολές που έχουμε χρησιμοποιήσει στο παρελθόν. Αν θέλουμε λοιπόν να επαναλάβουμε πάλι κάποια από αυτές το μόνο που έχουμε να κάνουμε είναι να την εντοπίσουμε στο Command History, να κάνουμε ένα δεξί κλικ πάνω της και να επιλέξουμε την εντολή Evaluate Selection (Εικόνα1.8). 13 Σε αυτό το σημείο θα πρέπει να ξεκαθαρίσουμε τη λειτουργία του Command Window, το οποίο χρησιμοποιείται μόνο για να εκτελούμε τις εντολές μας. Το μοναδικό σημείο του Command Window που έχει σημασία για την εργασία μας λοιπόν είναι το σημείο όπου πληκτρολογούμε. Ότι βρίσκεται πριν από εκείνο το σημείο υπάρχει μόνο για να μας δείχνει τί έχουμε κάνει ήδη, και δεν επηρεάζει τη μελλοντική δουλειά μας. Αν έχουμε δώσει λοιπόν κάποια λανθασμένη εντολή στο Command Window δεν έχει νόημα να προσπαθήσουμε να τη σβήσουμε εκ των υστέρων. Αντί για αυτό θα πρέπει να πληκτρολογήσουμε ξανά τη σωστή εντολή, ή σε κάποιες περιπτώσεις, όταν κάποια λανθασμένη εντολή μας επηρεάζει μια ολόκληρη διαδικασία, να ξαναρχίσουμε τη διαδικασία αυτήν από την αρχή. Παρατήρηση: Αν κάνουμε λάθος στην πληκτρολόγηση μιας μεγάλης εντολής δε χρειάζεται να την πληκτρολογήσουμε ολόκληρη από την αρχή. Αρκεί όπως είδαμε πριν να πατήσουμε το επάνω βελάκι του πληκτρολογίου μέχρι να ξαναεμφανιστεί στην οθόνη, να διορθώσουμε το λάθος και να πατήσουμε Enter. 1.11. Μορφοποίηση αριθμών (format) Αν δοκιμάσουμε να αποθηκεύσουμε στη μεταβλητή α το αποτέλεσμα της πράξης 17/7, θα πάρουμε το εξής (Εικόνα 1.9): 14 Το αποτέλεσμα της πράξης δηλαδή παρουσιάζεται ως ένας δεκαδικός αριθμός με τέσσερα δεκαδικά ψηφία, παρόλο που το Matlab το έχει αποθηκεύσει με πολύ μεγαλύτερη ακρίβεια. Τη μορφή με την οποία θα μας παρουσιάζονται τα αποτελέσματα στο Command Window μπορούμε να την αλλάξουμε με την εντολή format. Αν θέλουμε για παράδειγμα να δούμε το αποτέλεσμα της πράξης μας με δεκατέσσερα δεκαδικά ψηφία, θα πρέπει να χρησιμοποιήσουμε την εντολή: format long (Εικόνα 1.10). Άλλες συνηθισμένες επιλογές της εντολής format είναι οι εξής: format short g: Μας εμφανίζει τα πέντε σημαντικότερα ψηφία των αποτελεσμάτων μας, είτε σε απλή είτε σε επιστημονική μορφή. format long g: Μας εμφανίζει τα δεκαπέντε σημαντικότερα ψηφία των αποτελεσμάτων μας, είτε σε απλή είτε σε επιστημονική μορφή. format compact: Εμφανίζει τα αποτελέσματα μας σε συμπιεσμένη μορφή, αφαιρώντας όλες τις κενές γραμμές ανάμεσα τους. format loose: Επαναφέρει τον τρόπο παρουσίασης των αποτελεσμάτων μετά από μια εντολή format compact . Για πολύ μικρούς ή πολύ μεγάλους αριθμούς το Matlab χρησιμοποιεί την επιστημονική μορφή παρουσίασης των αποτελεσμάτων. Σε αυτήν, τα αποτελέσματα εμφανίζονται υψωμένα στην κατάλληλη δύναμη του δέκα. Για παράδειγμα, τον αριθμό 1000000000 το πρόγραμμα θα τον εμφανίσει στην επιστημονική του μορφή ως: 1.0000e+009 στη μορφοποίηση format short . Αντίστοιχα ο αριθμός 0.00001 θα εμφανιστεί ως 1.0000e-005. 1.12. Ειδικές λειτουργίες Εκτός από τους τελεστές που είδαμε προηγουμένως, υπάρχει και μια σειρά από συναρτήσεις του Matlab που μπορούμε να χρησιμοποιήσουμε για τις μαθηματικές μας πράξεις. Η μορφή τους είναι συνήθως εντολή (όρισμα) και όταν τις εφαρμόζουμε εκτελούν κάποια διαδικασία στη μεταβλητή που θέτουμε ως όρισμα μέσα στις παρενθέσεις. Μερικές από αυτές είναι οι εξής: 15 sqrt(x): Υπολογίζει την τετραγωνική ρίζα της μεταβλητής που δηλώνουμε μέσα στις παρενθέσεις (του x στο παράδειγμα μας). abs(x): Υπολογίζει την απόλυτη τιμή μιας μεταβλητής μας (ή το μέτρο της, αν πρόκειται για μιγαδικό αριθμό) sin(x): Υπολογίζει το ημίτονο μιας μεταβλητής μας. cos(x): Υπολογίζει το συνημίτονο μιας μεταβλητής μας. tan(x): Υπολογίζει την εφαπτομένη μιας μεταβλητής μας. exp(x): Αντιστοιχεί στη συνάρτηση y e x . log(x): Αντιστοιχεί στη συνάρτηση y ln x . log 2(x): Αντιστοιχεί στη συνάρτηση y log 2 x . logl10(x): Αντιστοιχεί στη συνάρτηση y log 10 x . Όπως θα δούμε στη συνέχεια, οι εντολές αυτές χρησιμοποιούνται ακόμα και στην περίπτωση που οι μεταβλητές μας περιέχουν πίνακες. 1.13. Βοήθεια Εκτός από το βασικό πρόγραμμα, στο πακέτο του Matlab περιλαμβάνεται επίσης και μια πλήρης βοήθεια για όλες τις δυνατότητες του προγράμματος. Η βοήθεια αυτή περιλαμβάνει πλήρεις οδηγίες χρήσης, ευρετήρια, καθώς και βοηθητικές εφαρμογές (demos) για την καλύτερη κατανόηση των λειτουργιών του προγράμματος. Η πιο απλή βοήθεια που μας παρέχει το πρόγραμμα βρίσκεται στο ίδιο το Command Window. Αν πληκτρολογήσουμε help όνομα εντολής μπορούμε να δούμε πληροφορίες για οποιαδήποτε εντολή του Matlab. Είδαμε για παράδειγμα ότι η εντολή format επηρεάζει τον τρόπο παρουσίασης των αποτελεσμάτων μας. Αν δώσουμε στο Command Window την εντολή help format θα πάρουμε την εξής απάντηση: 16 Πέρα από την απλή βοήθεια του Command Window υπάρχει και το παράθυρο της βοήθειας. Για να το ανοίξουμε επιλέγουμε το μενού Help και στη συνέχεια την εντολή Matlab Help (Εικόνα 1.12). Το παράθυρο της βοήθειας προσφέρει τρεις βασικές λειτουργίες: Τα περιεχόμενα (Contents), το ευρετήριο (Index) και την αναζήτηση (Search). Αυτές μπορούμε να τις προσπελάσουμε από τις αντίστοιχες ετικέτες στο πάνω αριστερά μέρος του παράθυρου της βοήθειας. Γενικά το παράθυρο της βοήθειας λειτουργεί ως εξής: αναζητούμε στο αριστερό μέρος του παράθυρου με κάποια από τις λειτουργίες αυτές της βοήθειας ένα θέμα που μας ενδιαφέρει, το οποίο στη συνέχεια εμφανίζουμε στο δεξί μέρος του παράθυρου. 17 Στα περιεχόμενα (Contents) βρίσκουμε όλα τα εγχειρίδια χρήσης του προγράμματος, χωρισμένα σε κατηγορίες. Τα περιεχόμενα είναι έτσι δομημένα, ώστε να μπορούν να χρησιμοποιηθούν για την πλήρη εκμάθηση του Matlab, ακόμα και από αρχάριους. Χρησιμοποιούμε την αριστερή στήλη της οθόνης για να βρούμε το θέμα που μας ενδιαφέρει και το επιλέγουμε με ένα απλό αριστερό κλικ του ποντικιού για να δούμε τα περιεχόμενα του στο δεξί μέρος της οθόνης της βοήθειας. Αντίστοιχα, αν επιλέξουμε το ευρετήριο (Index) η αριστερή στήλη στο παράθυρο της βοήθειας θα πάρει τη μορφή που φαίνεται στην Εικόνα (1.13). Στο ευρετήριο υπάρχει μια αλφαβητική λίστα θεμάτων της βοήθειας. Το μόνο που χρειάζεται να κάνουμε είναι να εισάγουμε στο πεδίο αναζήτησης στην αριστερή πλευρά της οθόνης (Search Index for:) μία ή περισσότερες λέξεις που έχουν σχέση με την αναζήτηση μας, και μετά να επιλέξουμε κάποιο θέμα από τη λίστα που θα εμφανιστεί ακριβώς από κάτω. Στο παράδειγμα που είδαμε προηγουμένως, για να βρούμε πληροφορίες για την εντολή format αρκεί να γράψουμε τη λέξη format στο πεδίο της αναζήτησης και να επιλέξουμε στη συνέχεια την πρώτη καταχώρηση της λίστας για να δούμε το παράθυρο της Εικόνας 1.13. Τέλος, η αναζήτηση (Search) χρησιμοποιείται όταν θέλουμε να βρούμε οποιαδήποτε λέξη ή φράση μέσα στις σελίδες της βοήθειας. Μπορούμε για παράδειγμα να πληκτρολογήσουμε στο πεδίο αναζήτησης (Search for:) πάλι τη λέξη format. Σε αυτήν την περίπτωση έχουμε επιπλέον τη δυνατότητα να ζητήσουμε από το πρόγραμμα να αναζητήσει τη φράση μας σε όλο το κείμενο 18 της βοήθειας, μόνο στις επικεφαλίδες των άρθρων, στη δικτυακή βάση δεδομένων του προγράμματος ή να τη θεωρήσει όνομα μιας συνάρτησης ή εντολής. Για να το κάνουμε αυτό αρκεί να επιλέξουμε την κατάλληλη καταχώρηση στο πεδίο του τύπου αναζήτησης (Search type:). Στο παράδειγμα μας, αφού γνωρίζουμε ότι η format είναι μια εντολή του προγράμματος μπορούμε να επιλέξουμε τον τύπο αναζήτησης Function Name. Για να ξεκινήσει η αναζήτηση θα πρέπει να επιλέξουμε το πλήκτρο Go. To πρόγραμμα θα μας δείξει τις αντίστοιχες καταχωρήσεις της εντολής format. Παράλληλα με την υπόλοιπη βοήθεια, το Matlab περιέχει επίσης και μια σειρά από παραδείγματα χρήσης του σε μορφή παρουσιάσεων (demos) για την καλύτερη κατανόηση των λειτουργιών του. Για να δούμε μία από αυτές τις παρουσιάσεις πρέπει να επιλέξουμε το μενού Help και στη συνέχεια την εντολή Demos . Θα ανοίξει ένα νέο παράθυρο (Εικόνα 1.14), όπου εμείς στη συνέχεια θα επιλέξουμε ένα θέμα στην αριστερή στήλη και ένα συγκεκριμένο demo στα δεξιά. Για να τρέξει το demo τελικά θα επιλέξουμε την εντολή Run . 19 2. Πίνακες 2.1. Γενικά Οι πίνακες έχουν ιδιαίτερη σημασία στο Matlab. Το πρόγραμμα αποθηκεύει όλες τις αριθμητικές μεταβλητές που χρησιμοποιούνται σε αυτό στη μορφή πινάκων. Ακόμα και οι απλοί αριθμοί θεωρούνται για το Matlab πίνακες που αποτελούνται μόνο από μία γραμμή και μία στήλη. Για να δημιουργήσουμε έναν πίνακα θα εισάγουμε τα στοιχεία του μέσα σε αγκύλες. Τα στοιχεία που βρίσκονται στην ίδια γραμμή πρέπει να χωρίζονται μεταξύ τους με κενά ή με κόμματα, ενώ οι γραμμές πρέπει να χωρίζονται μεταξύ τους με ερωτηματικά ή με τη χρήση του Enter. Για παράδειγμα, αν θέλουμε να δημιουργήσουμε τον πίνακα: 1 7 0 A 7 6 3 2 0 4 μπορούμε να χρησιμοποιήσουμε τους εξής τρόπους: ή φυσικά οποιονδήποτε συνδυασμό τους. Η θέση οποιουδήποτε στοιχείου ενός πίνακα καθορίζεται από τη γραμμή και τη στήλη στην οποία βρίσκεται. Για παράδειγμα, το στοιχείο του πίνακα A που βρίσκεται στην πρώτη γραμμή και τρίτη στήλη θα ονομάζεται Α(1,3). Μπορούμε να χρησιμοποιήσουμε το όνομα ενός συγκεκριμένου στοιχείου για 20 να το εμφανίσουμε μόνο του στο Command Window ή για να το εισάγουμε σε κάποια πράξη. Για παράδειγμα, αν θέλουμε να εμφανίσουμε στο Command Window μόνο το στοιχείο του πίνακα Α που βρίσκεται στη δεύτερη γραμμή και πρώτη στήλη θα πληκτρολογήσουμε απλά το όνομα του, δηλαδή το Α(2,1) και θα πατήσουμε Enter (Εικόνα 2.3). Αντίστοιχα, αν θέλουμε να αθροίσουμε όλα τα στοιχεία της τρίτης γραμμής, θα το κάνουμε με την εξής εντολή: Παρατήρηση: Να σημειωθεί ότι για πολλές από τις λειτουργίες του Matlab υπάρχουν έτοιμες εντολές - συναρτήσεις (functions) που μπορούμε να εφαρμόσουμε. Έτσι, για να αθροίσουμε τα στοιχεία της τρίτης γραμμής μπορούμε να χρησιμοποιήσουμε και την εντολή sum(Α(3,:)). Στην περίπτωση που θέλουμε να εμφανίσουμε μία ολόκληρη γραμμή ενός πίνακα μας θα χρησιμοποιήσουμε την έκφραση: Ρ(m ,:), όπου Ρ το όνομα του πίνακα μας και m η γραμμή που θέλουμε να εμφανίσουμε. Η άνω κάτω τελεία σε αυτήν την περίπτωση δηλώνει ότι θέλουμε τα στοιχεία όλων των στηλών για τη γραμμή m. Στο παράδειγμα μας, αν θέλουμε να εμφανίσουμε μόνο την πρώτη γραμμή του πίνακα A θα χρησιμοποιήσουμε την έκφραση: Α(1,:). Ο υπολογιστής θα επιστρέψει την εξής απάντηση: 21 Το ίδιο μπορούμε φυσικά να κάνουμε αν θέλουμε να εμφανίσουμε μία στήλη ενός πίνακα μας. Σε αυτήν την περίπτωση θα χρησιμοποιήσουμε αντίστοιχα την έκφραση: Ρ(:,η), όπου Ρ ο πίνακας μας και n η στήλη που θέλουμε να εμφανίσουμε. Συνδυάζοντας όσα έχουμε δει μέχρι τώρα μπορούμε να εμφανίσουμε στο Command Window συγκεκριμένα κομμάτια ενός πίνακα μας. Στον πίνακα του παραδείγματός μας, πληκτρολογώντας την εντολή: Α(1,[2 3]) μπορούμε να εμφανίσουμε το δεύτερο και τρίτο στοιχείο της πρώτης γραμμής. Εναλλακτικά θα μπορούσαμε να χρησιμοποιήσουμε την εντολή: Α(1,[2:3]),καθώς στη γενική της μορφή η παράσταση [a:b] χρησιμοποιείται για να υποδείξει μια σειρά γραμμών (ή στηλών) που ξεκινάει από τη γραμμή (ή στήλη) α και καταλήγει στη γραμμή (ή στήλη) b. Τις εκφράσεις που είδαμε παραπάνω μπορούμε να τις χρησιμοποιήσουμε για να κάνουμε μεταβολές στους πίνακες μας. Στο παράδειγμα μας, αν θέλουμε να αλλάξουμε κατά σειρά τα περιεχόμενα του στοιχείου που βρίσκεται στη δεύτερη γραμμή και δεύτερη στήλη, τα περιεχόμενα της πρώτης γραμμής και τα περιεχόμενα της τρίτης στήλης, θα χρησιμοποιήσουμε αντίστοιχα τις εκφράσεις της Εικόνας 2.6. Παρατηρείστε ότι όταν δίνουμε τα στοιχεία μιας ολόκληρης γραμμής τα δίνουμε στη μορφή ενός πίνακα γραμμής, ενώ όταν δίνουμε τα στοιχεία μιας 22 στήλης τα δίνουμε αντίστοιχα στη μορφή ενός πίνακα στήλης Κατά τις μεταβολές που κάνουμε σε έναν πίνακα έχουμε τη δυνατότητα ακόμα καινά υπερβούμε τα όρια του πίνακα. Σε αυτήν την περίπτωση το Matlab θα επεκτείνει τον πίνακα όσο χρειαστεί για να συμπεριλάβει τις μεταβολές που θέλουμε να κάνουμε. Ο πίνακας Α που χρησιμοποιούμε για παράδειγμα είναι ένας πίνακας 3x3. Αν εμείς πληκτρολογήσουμε στο Command Window την εντολή Α(5,2)=4, τότε το πρόγραμμα θα προσθέσει στον πίνακα Α δύο γραμμές για να μπορέσει να εφαρμόσει την αλλαγή (Εικόνα 2.7). Για να διαγράψουμε μία γραμμή ενός πίνακα θα χρησιμοποιήσουμε την εντολή Ρ(m ,:)=[], όπου Ρ ο πίνακας μας και m η γραμμή που θέλουμε να διαγράψουμε. Στο παράδειγμα μας, αν θέλουμε να διαγράψουμε την τέταρτη γραμμή θα χρησιμοποιήσουμε την έκφραση Α(4,:)=[] (Εικόνα 2.8). Με αντίστοιχο τρόπο μπορούμε να διαγράψουμε και όποια στήλη ενός πίνακα μας θέλουμε. Προσοχή: Δεν μπορούμε να διαγράψουμε με τον ίδιο τρόπο ένα απλό στοιχείο του πίνακα, γιατί το αποτέλεσμα της πράξης δε θα είναι πια πίνακας (δεν μπορούμε σε έναν πίνακα να έχουμε μια γραμμή ή μια στήλη με λιγότερα στοιχεία από ότι οι υπόλοιπες γραμμές ή στήλες). Αν προσπαθήσουμε να κάνουμε κάτι τέτοιο το πρόγραμμα θα απαντήσει με ένα μήνυμα λάθους (Εικόνα 2.9). 23 2.2. Δημιουργία ειδικών τύπων πινάκων Στο Matlab έχουμε τη δυνατότητα να δημιουργήσουμε εύκολα κάποιους ειδικούς τύπους πινάκων. Αν θέλουμε να δημιουργήσουμε έναν πίνακα με κάποια αριθμητική ακολουθία μπορούμε να χρησιμοποιήσουμε μια εντολή της μορφής: P=[α:β:γ] όπου α ο πρώτος αριθμός της ακολουθίας, β το βήμα της και γ ο τελευταίος αριθμός της. Για παράδειγμα, για να δημιουργήσουμε τον πίνακα Β=[1 4 7 10 13 16 19 22 25] θα δώσουμε την εντολή Β=[1:3:25] (Εικόνα 2.10). Άλλες εντολές που μπορούμε να χρησιμοποιήσουμε για να δημιουργήσουμε ειδικούς τύπους πινάκων είναι οι εξής: eye(n): Δημιουργεί έναν μοναδιαίο πίνακα τάξης n. ones(n): Δημιουργεί έναν πίνακα τάξης n που αποτελείται μόνο από μονάδες. Η εντολή αυτή μπορεί να συνταχθεί και ως ones(m,n), στην οποία περίπτωση δημιουργεί έναν πίνακα τάξης mxn που αποτελείται επίσης μόνο από μονάδες. zeros(n): Δημιουργεί έναν πίνακα τάξης n που αποτελείται μόνο από μηδενικά. Η εντολή αυτή μπορεί να συνταχθεί και ως zeros(m,n), στην οποία περίπτωση δημιουργεί έναν πίνακα τάξης mxn που αποτελείται επίσης μόνο από μηδενικά. magic(n): Δημιουργεί έναν μαγικό πίνακα τάξης n. Μαγικός ονομάζεται ένας τετραγωνικός πίνακας όταν το άθροισμα των στοιχείων όλων των γραμμών και όλων των στηλών του είναι ίδιο. 24 2.3. Πράξεις με πίνακες Για τις απλές πράξεις μεταξύ πινάκων θα χρησιμοποιήσουμε τους ίδιους τελεστές, όπως και για τις πράξεις μεταξύ απλών αριθμών. Έτσι έχουμε τους εξής τελεστές: + : Πρόσθεση μεταξύ πινάκων - : Αφαίρεση μεταξύ πινάκων * : Πολλαπλασιασμός μεταξύ πινάκων / : Διαίρεση από τα αριστερά προς τα δεξιά. Αν έχουμε δύο πίνακες Α και Β, τότε η έκφραση Α/Β αντιστοιχεί στην πράξη Α* inv(Β), όπου inv(Β) ο αντίστροφος πίνακας του Β. \ : Διαίρεση από τα δεξιά προς τα αριστερά. Αν έχουμε δύο πίνακες Α και Β, τότε η έκφραση Α\Β αντιστοιχεί στην πράξη inv(Α)*Β, όπου inv(Α) ο αντίστροφος πίνακας του Α. ^ : Ύψωση πίνακα σε δύναμη. Αντιστοιχεί σε πολλαπλασιασμό του πίνακα με τον εαυτό του τόσες φορές, όσες είναι η δύναμη. Ρ' : inv(Ρ) : Αναστροφή πίνακα Ρ. Αντιστροφή πίνακα Ρ. Υπάρχουν όμως φορές που δε θέλουμε να κάνουμε πράξεις μεταξύ των ίδιων των πινάκων, αλλά μεταξύ των στοιχείων τους ένα προς ένα. Σε αυτές τις περιπτώσεις χρησιμοποιούμε τους τελεστές μας με την προσθήκη μίας τελείας στα αριστερά τους. Έτσι θα έχουμε: .* : Για πολλαπλασιασμό κάθε στοιχείου ενός πίνακα με το αντίστοιχο στοιχείο ενός άλλου. ./ : Για διαίρεση από τα αριστερά προς τα δεξιά κάθε στοιχείου ενός πίνακα με το αντίστοιχο στοιχείο ενός άλλου. .\ : Για διαίρεση από τα δεξιά προς τα αριστερά κάθε στοιχείου ενός πίνακα με το αντίστοιχο στοιχείο ενός άλλου. .^ : Για ύψωση κάθε στοιχείου ενός πίνακα σε δύναμη. Παρατήρηση: Η πρόσθεση και η αφαίρεση μεταξύ πινάκων γίνεται έτσι και αλλιώς στοιχείο με στοιχείο, οπότε δεν έχει νόημα η προσθήκη της τελείας σε αυτές τις πράξεις. Θα δούμε τα παραπάνω σε ένα παράδειγμα χρησιμοποιώντας τους πίνακες: 25 Ο πολλαπλασιασμός μεταξύ των δύο αυτών πινάκων θα δώσει: Αντίστοιχα, ο πολλαπλασιασμός κάθε στοιχείου του ενός πίνακα με το αντίστοιχο στοιχείο του άλλου πίνακα θα δώσει: Το αποτέλεσμα των αντίστοιχων πράξεων στο Matlab φαίνεται στις Εικόνα 2.11 και Εικόνα 2.12: Πολλαπλασιασμός μεταξύ των δύο πινάκων: Πολλαπλασιασμός μεταξύ των στοιχείων των δύο πινάκων. 2.4. Ειδικές λειτουργίες Στο προηγούμενο κεφάλαιο (παρ. 1.6) είδαμε ότι υπάρχουν ειδικές συναρτήσεις του Matlab που μας επιτρέπουν να εφαρμόσουμε ακόμα περισσότερες μαθηματικές πράξεις στις μεταβλητές μας. Τις ίδιες συναρτήσεις 26 μπορούμε να τις χρησιμοποιήσουμε και στους πίνακες μας. Σε αυτήν την περίπτωση οι συναρτήσεις αυτές θα λειτουργήσουν για κάθε στοιχείο του πίνακα χωριστά. Έστω για παράδειγμα ότι έχουμε τον πίνακα: Αν εφαρμόσουμε σε αυτόν τον πίνακα τη συνάρτηση B = sqrt (Α), η οποία υπολογίζει την τετραγωνική ρίζα της μεταβλητής που δηλώνουμε στις παρενθέσεις, τότε ο πίνακας Β που θα πάρουμε ως αποτέλεσμα θα περιέχει τις τετραγωνικές ρίζες των στοιχείων του Α (Εικόνα 2.13). 3. Γραφικές Παραστάσεις 3.1. Γενικά Με τη βοήθεια του Matlab μπορούμε να σχεδιάσουμε τη γραφική παράσταση μιας συνάρτησης. Ο πιο απλός τρόπος για να το κάνουμε αυτό είναι η εντολή plot(x,γ), η οποία δέχεται ως ορίσματα έναν πίνακα με το σύνολο ορισμού (x) και έναν πίνακα με το σύνολο τιμών (y) της συνάρτησης μας. Αυτό σημαίνει ότι το πρόγραμμα δεν ενδιαφέρεται ουσιαστικά για τη μορφή της συνάρτησης που θέλουμε να σχεδιάσουμε, αλλά αντιστοιχίζει απλά κάθε στοιχείο του πίνακα των x που του δίνουμε με το αντίστοιχο στοιχείο του πίνακα των y και στη συνέχεια ενώνει τα σημεία που προκύπτουν. Είναι λοιπόν δική μας ευθύνη να δίνουμε κάθε φορά τους σωστούς πίνακες για να σχεδιάσει ο υπολογιστής τις γραφικές μας παραστάσεις. 27 Έστω για παράδειγμα ότι θέλουμε να σχεδιάσουμε τη γραφική παράσταση της συνάρτησης: Όπως είπαμε, καταρχήν πρέπει να δημιουργήσουμε τους πίνακες που θα περιέχουν τα σύνολα ορισμού και τιμών της συνάρτησης μας. Αν θέλουμε να σχεδιάσουμε τη γραφική παράσταση της συνάρτησης για x από -100 μέχρι 100 τότε το σύνολο ορισμού μπορούμε να το δημιουργήσουμε με την εντολή: x=[-100:1:100] Παρατήρηση: Να θυμίσουμε ότι με μια εντολή της παραπάνω μορφής δημιουργούμε έναν πίνακα - γραμμή με μια αριθμητική ακολουθία. Όπως είπαμε, για να σχεδιάσει ο υπολογιστής τη γραφική παράσταση θα λάβει υπόψη του τα σημεία x που θα του δηλώσουμε, άρα είναι καλό να δημιουργούμε έναν πίνακα x με πολλά σημεία για να έχουμε μεγαλύτερη ακρίβεια στη γραφική μας παράσταση. Στη συνέχεια πρέπει να δημιουργήσουμε τον πίνακα των γ. Για να το κάνουμε αυτό, θα εκφράσουμε κατευθείαν τη συνάρτηση μας σε τέτοια μορφή, ώστε να μπορέσει να τη χρησιμοποιήσει το πρόγραμμα. Θα πληκτρολογήσουμε λοιπόν στο Command Window την εξής εντολή: γ=3*x.^ 2+5*x-6 Παρατηρήσεις: 1. Με την παραπάνω εντολή το Matlab θα υπολογίσει για κάθε στοιχείο του πίνακα x την τιμή της συνάρτησης μας, και θα δημιουργήσει με τα αποτελέσματα έναν αντίστοιχο πίνακα y. 2. Αν δεν εισάγουμε την τελεία πριν από τη δύναμη (^), το Matlab θα προσπαθήσει να υπολογίσει το τετράγωνο όλου του πίνακα x. Αυτό, εκτός του ότι είναι αδύνατο (δεν ορίζεται ύψωση σε δύναμη για πίνακες - γραμμές), είναι έτσι και αλλιώς κάτι που δε θέλουμε, μια που θέλουμε να εκτελέσουμε την πράξη, όχι για ολόκληρο τον πίνακα, αλλά για κάθε στοιχείο του (για κάθε x) ξεχωριστά. 3. Αν παρόλαυτά προσπαθήσουμε να γράψουμε την παραπάνω εντολή χωρίς την τελεία, τότε το πρόγραμμα θα απαντήσει με ένα μήνυμα λάθους (Εικόνα 3.1). 28 4. Αν προσπαθήσουμε να εισάγουμε την παραπάνω εντολή χωρίς να έχουμε δημιουργήσει προηγουμένως τον πίνακα των x, το Matlab θα απαντήσει προφανώς με το μήνυμα λάθους (Εικόνα 3.2), αφού ουσιαστικά θα προσπαθούμε να κάνουμε μια πράξη με έναν πίνακα που δεν υπάρχει ακόμα. Τώρα που έχουμε τους πίνακες των x και y μπορούμε να σχεδιάσουμε τη γραφική παράσταση της συνάρτησής μας πληκτρολογώντας την εντολή: plot(x,y) Η συνολική διαδικασία φαίνεται στην (Εικόνα 3.3). Με την εντολή plot το Matlab θα ανοίξει ένα νέο παράθυρο με την γραφική μας παράσταση (Εικόνα 3.4). 29 Η συνολική διαδικασία που ακολουθούμε λοιπόν όταν θέλουμε να σχεδιάσουμε τη γραφική παράσταση μιας συνάρτησης είναι η εξής: 1. Δημιουργούμε τον πίνακα που περιέχει το σύνολο ορισμού μας (τον πίνακα x στο παράδειγμα μας). 2. Δημιουργούμε τον πίνακα που περιέχει το σύνολο τιμών μας (τον πίνακα y στο παράδειγμα μας), εκφράζοντας τη συνάρτηση μας σε μια μορφή που να μπορεί να χρησιμοποιήσει το Matlab. 3. Χρησιμοποιούμε την εντολή plot(x,γ) σε συνδυασμό με τους πίνακες που έχουμε ήδη δημιουργήσει (τους x και γ στο παράδειγμα μας) για να σχεδιάσει το πρόγραμμα τη γραφική μας παράσταση. 3.2. Πολλαπλές γραφικές παραστάσεις Ένα σημείο στο οποίο πρέπει να δοθεί προσοχή είναι το εξής: το πρόγραμμα εξορισμού χρησιμοποιεί μόνο ένα παράθυρο γραφικών παραστάσεων. Αν λοιπόν εμείς στο παράδειγμα μας και αφού έχουμε σχεδιάσει τη γραφική μας παράσταση προσπαθήσουμε να σχεδιάσουμε τη γραφική παράσταση μιας δεύτερης συνάρτησης, τότε αυτή θα πάρει τη θέση της πρώτης, η οποία με τη σειρά της θα χαθεί. Αν λοιπόν θέλουμε να σχεδιάσουμε περισσότερες από μία γραφικές παραστάσεις, σε διαφορετικό παράθυρο την κάθε μία, τότε πρέπει να δίνουμε την εντολή figure μετά από κάθε εντολή plot που θα χρησιμοποιούμε. Με κάθε εντολή figure το Matlab θα ανοίγει ένα καινούριο παράθυρο γραφικών παραστάσεων. Την εντολή plot μπορούμε να τη χρησιμοποιήσουμε και στην περίπτωση που θέλουμε να σχεδιάσουμε τις γραφικές παραστάσεις από περισσότερες από μία συναρτήσεις στο ίδιο παράθυρο. Σε αυτήν την περίπτωση θα εισάγουμε την εντολή plot ως εξής: plot(x1,y1,x2,y2,x3,y3.) όπου x1, x2, x3 κλπ. οι πίνακες με τα σύνολα ορισμού των συναρτήσεων, και x2, γ2, γ3 κλπ. οι πίνακες με τα σύνολα τιμών τους. Στην παραπάνω περίπτωση, αν θέλουμε δηλαδή να σχεδιάσουμε τις γραφικές παραστάσεις από περισσότερες από μία συναρτήσεις στο ίδιο παράθυρο, μπορούμε να ακολουθήσουμε και την εξής διαδικασία: 1. Να σχεδιάσουμε την πρώτη γραφική παράσταση. 2. Να πληκτρολογήσουμε την εντολή hold on. 3. Να σχεδιάσουμε μία μία και τις υπόλοιπες γραφικές παραστάσεις. 30 Σε αυτήν την περίπτωση, η εντολή hοld οn αποτρέπει το σβήσιμο των προηγούμενων γραφικών παραστάσεων κάθε φορά που προσθέτουμε μία καινούργια. Στο τέλος όλης της διαδικασίας πρέπει να δώσουμε και την εντολή hold off για να αποδεσμεύσουμε το παράθυρο των γραφικών παραστάσεων. 3.3. Περισσότερες ρυθμίσεις Το Matlab μας παρέχει τη δυνατότητα να κάνουμε μια σειρά από ρυθμίσεις στις γραφικές μας παραστάσεις. Αρκετές από αυτές μπορούμε να τις εφαρμόσουμε τόσο στο μέσω των κατάλληλων εντολών, όσο και χρησιμοποιώντας τα μενού στα ίδια τα παράθυρα των γραφικών παραστάσεων. Μερικές από τις εντολές που μπορούμε να χρησιμοποιήσουμε είναι οι εξής: title('κείμενο’): Εισάγει ως τίτλο της γραφικής μας παράστασης το κείμενο ανάμεσα στα εισαγωγικά. Εναλλακτικά μπορούμε να επιλέξου με στο παράθυρο της γραφικής μας παράστασης το μενού Insert και την εντολή Title. xlabel('κείμενο'): Εισάγει ως τίτλο του άξονα των x το κείμενο ανάμεσα στα εισαγωγικά. Εναλλακτικά μπορούμε να επιλέξουμε στο παράθυρο της γραφικής μας παράστασης το μενού Insert και την εντολή X Label . ylabel('κείμενο'): Εισάγει ως τίτλο του άξονα των γ το κείμενο ανάμεσα στα εισαγωγικά. Εναλλακτικά μπορούμε να επιλέξουμε στο παράθυρο της γραφικής μας παράστασης το μενού Insert και την εντολή Y Label Περισσότερες ρυθμίσεις μπορούμε να εισάγουμε σε μια γραφική μας παράσταση και με διαφορετική έκφραση της εντολής plot. Μέχρι τώρα είδαμε ότι η εντολή αυτή συντάσσεται ως: plot(x,y) Υπάρχει όμως και ένας εναλλακτικός τρόπος σύνταξης της, ο οποίος είναι ο εξής: plot(x,y,'s') , όπου s οποιοσδήποτε συνδυασμός χαρακτήρων από τις τρεις στήλες που ακολουθούν (το πολύ μια επιλογή από κάθε στήλη). 31 y Κίτρινο . Σημείο - Συνεχής γραμμή m Ματζέντα o Κύκλος : Γραμμή από σημεία c Κυανό x Σύμβολο x -. Αξονική γραμμή r Κόκκινο + Συν -- Διακεκομμένη γραμμή g Πράσινο * Αστέρι b Μπλε s Τετράγωνο w Άσπρο d Ρόμβος k Μαύρο v Τρίγωνο (προς τα κάτω) ^ Τρίγωνο (προς τα πάνω) < Τρίγωνο (προς τα αριστερά) > Τρίγωνο (προς τα δεξιά) p Πεντάκτινο αστέρι h Εξάκτινο αστέρι Σε αυτήν την περίπτωση, οι χαρακτήρες της πρώτης στήλης ρυθμίζουν το χρώμα της γραφικής μας παράστασης, οι χαρακτήρες της δεύτερης τον τρόπο που εμφανίζονται τα σημεία της γραφικής μας παράστασης, και οι χαρακτήρες της τρίτης το είδος της γραμμής που ενώνει τα σημεία αυτά. 3.4. Ελληνικά στο Matlab Μέχρι και την έκδοση R.12 του προγράμματος (Matlab 6.0), το Matlab δεν υποστηρίζει την πληκτρολόγηση κειμένου στα ελληνικά. Η μόνη δυνατότητα που έχουμε είναι να εμφανίσουμε στα ελληνικά κάποιους χαρακτήρες χρησιμοποιώντας την ανάποδη κάθετο (\) και τα ονόματα που δίνει το πρόγραμμα στους χαρακτήρες αυτούς. Έστω για παράδειγμα ότι θέλουμε να σχεδιάσουμε τη γραφική παράσταση της συνάρτησης y = ημ(x), για τιμές του x από 0 μέχρι 2π και με βήμα π/100. Παρατήρηση: Δε χρειάζεται να πληκτρολογήσουμε την τιμή του π, αφού το Matlab την έχει αποθηκευμένη στη σταθερά pi . Σύμφωνα με όσα έχουμε πει ήδη, η διαδικασία που πρέπει να ακολουθήσουμε για να σχεδιάσουμε τη γραφική παράσταση εμφανίζεται στην (Εικόνα 3.5): 32 Έστω ότι θέλουμε να δώσουμε στον άξονα των x τον τίτλο: «x=0:2π». Θα πρέπει να δώσουμε την εντολή: xlabel(‘x =0:2\pi') Με την παραπάνω εντολή η γραφική μας παράσταση θα πάρει τη μορφή που φαίνεται στην (Εικόνα 3.6). Παρατηρούμε ότι όταν χρειαζόμαστε την τιμή του π (3,14159...) χρησιμοποιούμε μόνο το όνομα του (pi), ενώ όταν θέλουμε να εμφανίσουμε το π ως χαρακτήρα πρέπει να χρησιμοποιήσουμε και την ανάποδη κάθετο (\pi). Τα ονόματα που πρέπει να χρησιμοποιήσουμε για να εμφανίσουμε τα υπόλοιπα γράμματα του ελληνικού αλφαβήτου ως χαρακτήρες είναι τα εξής: α \alρha β \beta γ \gamma δ \delta ε \epsilon ζ \zeta η \eta θ \theta ι \iota κ \kappa λ \lambda ì \mu ν \na ξ \xi π \pi ρ \rho σ \sigma ς \sigma τ \tau υ \upsilon φ \phi χ \chi ψ \psi ω \omega Γ \Gammas Δ \Delta Θ \Theta 33 Λ \Lambda Ξ \Xi Π \Pi Σ \Sigma Υ \Upsilon Φ \Phi Ψ \Psi Ω \Omega 3.5. Αποθήκευση των γραφικών μας παραστάσεων Αφού δημιουργήσουμε μία γραφική παράσταση στο Matlab έχουμε δύο δυνατότητες όσον αφορά στην αποθήκευση της. Η πρώτη από αυτές είναι να επιλέξουμε στο παράθυρο της το μενού file και στη συνέχεια την εντολή Save Αs.... Με αυτόν τον τρόπο μπορούμε να αποθηκεύσουμε τη γραφική μας παράσταση ως αρχείο του Matlab. Το πλεονέκτημα σε αυτήν την περίπτωση είναι ότι μπορούμε να επεξεργαστούμε την αποθηκευμένη γραφική παράσταση στο ίδιο το Matlab όποτε θελήσουμε. Το μειονέκτημα όμως είναι ότι σε αυτήν τη μορφή δεν μπορούμε να τη χρησιμοποιήσουμε σε κάποιο άλλο πρόγραμμα (δεν μπορούμε για παράδειγμα να την προσθέσουμε ως εικόνα σε κάποιο έγγραφο μας). Η δεύτερη δυνατότητα που έχουμε είναι να επιλέξουμε στο παράθυρο της γραφικής παράστασης το μενού file και στη συνέχεια την εντολή Export ... . Το πρόγραμμα με αυτόν τον τρόπο μας επιτρέπει να την αποθηκεύσουμε σε ένα αρχείο εικόνας για να τη χρησιμοποιήσουμε σε κάποιο άλλο πρόγραμμα. Το μειονέκτημα βέβαια σε αυτήν την περίπτωση είναι ότι το Matlab δεν μπορεί να επέμβει σε ένα αρχείο εικόνας, οπότε αφού αποθηκεύσουμε τη γραφική μας παράσταση δεν μπορούμε πια να την ανοίξουμε για επεξεργασία. Παρατήρηση: Ο υπολογιστής μπορεί να αντιληφθεί μια εικόνα με διάφορους τρόπους, κάθε ένας από τους οποίους αντιστοιχεί και σε ένα διαφορετικό είδος αρχείου εικόνας. Στην περίπτωση που επιλέξουμε να αποθηκεύσουμε μια γραφική μας παράσταση σε ένα αρχείο εικόνας έχουμε επιπλέον τη δυνατότητα να διαλέξουμε και το είδος του αρχείου που θέλουμε. Συγκεκριμένα, αφού επιλέξουμε την εντολή Export... από το μενού File , θα ανοίξει το παράθυρο (Εικόνα 3.7), όπου μπορούμε στη συνέχεια να κάνουμε την παραπάνω επιλογή στο πεδίο Save as type . Κάθε τύπος αρχείου διαφέρει από τους υπόλοιπους ως προς την ποιότητα της εικόνας που δημιουργεί, αλλά αντίστοιχα και ως προς το μέγεθος του αρχείου που προκύπτει. Μια συνηθισμένη επιλογή, ιδίως όταν θέλουμε στη συνέχεια 34 να εισάγουμε τις γραφικές μας παραστάσεις ως εικόνες σε κάποιο έγγραφο μας, είναι η JPEG Images (*. jpg). 4. Πολυώνυμα / Παρεμβολή 4.1. Γενικά To Matlab προσφέρει μια σειρά από εντολές που αφορούν σε πολυώνυμα. Με αυτές μπορούμε για παράδειγμα να υπολογίσουμε τις ρίζες των πολυωνύμων μας, να υπολογίσουμε τις τιμές τους, να τα παραγωγίσουμε κλπ. Το πρώτο βήμα σε αυτές τις περιπτώσεις είναι να φέρουμε το πολυώνυμο μας σε κατάλληλη μορφή για να το χρησιμοποιήσουμε στη συνέχεια με τις παραπάνω εντολές. To Matlab παριστάνει τα πολυώνυμα ως πίνακες - γραμμές που περιέχουν τους συντελεστές των όρων τους κατά φθίνουσα σειρά των δυνάμεων της μεταβλητής τους. Το πολυώνυμο y 2 x 3 5 x 2 x 7 για παράδειγμα στο Matlab θα παριστάνεται από έναν πίνακα της μορφής: p=[2 5 -1 7] Αν κάποιος από τους όρους του πολυωνύμου δεν υπάρχει, τότε θα τον δηλώνουμε με συντελεστή το μηδέν. Έτσι, το πολυώνυμο y 6 x 3 3 x 7 , 35 στο οποίο λείπει ο όρος δεύτερης τάξης, θα παριστάνεται από έναν πίνακα της μορφής: p=[6 0 -3 7] ενώ αντίστοιχα το πολυώνυμο y x 3 θα παριστάνεται από έναν πίνακα της μορφής: p=[1 0 0 0] 4.2. Ρίζες πολυωνύμων Τις ρίζες ενός πολυωνύμου μπορούμε να τις υπολογίσουμε με την εντολή roots(p), όπου p ο πίνακας που περιέχει τους συντελεστές του πολυωνύμου. Έστω για παράδειγμα ότι θέλουμε να υπολογίσουμε τις ρίζες του πολυωνύμου y 2 x 2 7 x 3 (οι οποίες είναι οι x= -3 και x = -0.5). Καταρχήν θα δημιουργήσουμε τον πίνακα με τους συντελεστές του πολυωνύμου. Αυτός θα είναι προφανώς: p = [2 7 3] Στη συνέχεια απλά θα πληκτρολογήσουμε την εντολή: r = roots(p) Η παραπάνω διαδικασία και το αποτέλεσμα της φαίνονται στην (Εικόνα 4.1). Μπορούμε όμως να κάνουμε και την αντίστροφη διαδικασία, δηλαδή να υπολογίσουμε τους συντελεστές ενός πολυωνύμου, του οποίου γνωρίζουμε μόνο τις ρίζες. Σε αυτήν την περίπτωση θα χρησιμοποιήσουμε την εντολή poly(r), όπου r ένας πίνακας που περιέχει τις ρίζες του πολυωνύμου που ψάχνουμε. Έστω για παράδειγμα ότι θέλουμε να βρούμε το πολυώνυμο που έχει για ρίζες 36 τα x = 3 και x = 4 . Θα δημιουργήσουμε πρώτα τον πίνακα με τις ρίζες αυτές, ο οποίος θα είναι ο: r = [3 4] ενώ στη συνέχεια θα δώσουμε την εντολή: p = poly(r) Η παραπάνω διαδικασία, καθώς και το αποτέλεσμα της φαίνονται στην (Εικόνα 4.2). 4.3. Υπολογισμός τιμών πολυωνύμου Για να υπολογίσουμε τις τιμές ενός πολυωνύμου μπορούμε στο Matlab να χρησιμοποιήσουμε την εντολή polyval(p,x) , όπου ρ ο πίνακας που περιέχει τους συντελεστές του πολυωνύμου που μας ενδιαφέρει, και x το σημείο ή τα σημεία για τα οποία θέλουμε να υπολογίσουμε την τιμή του πολυωνύμου. Έστω για παράδειγμα ότι θέλουμε να υπολογίσουμε την τιμή του πολυωνύμου y 3 x 3 5 x για x = 5. Καταρχήν θα πρέπει να δημιουργήσουμε τον πίνακα με τους συντελεστές του πολυωνύμου, ο οποίος θα είναι της μορφής: p = [3 0 -5 0] αφού λείπουν οι όροι δεύτερης και μηδενικής τάξης. Για να υπολογίσουμε τελικά την τιμή που ζητάμε θα πρέπει να δώσουμε την εντολή: y = polyval(p,5) Η διαδικασία που ακολουθήσαμε, καθώς και το αποτέλεσμα της φαίνονται στην (Εικόνα 4.3): 37 Την εντολή polyval μπορούμε να τη χρησιμοποιήσουμε και στην περίπτωση που θέλουμε να υπολογίσουμε ταυτόχρονα τις τιμές ενός πολυωνύμου σε διάφορα σημεία. Έστω για παράδειγμα ότι θέλουμε να υπολογίσουμε τις τιμές του παραπάνω πολυωνύμου στα στοιχεία x=1, x=3, x=7 και x=15. Καταρχήν μπορούμε να εισάγουμε όλες τις τιμές που μας ενδιαφέρουν κατευθείαν στην εντολή (Εικόνα 4.4): , όπου τις τιμές που μας ενδιαφέρουν θα τις εισάγουμε μέσα σε αγκύλες όπως βλέπουμε στην εικόνα. Εναλλακτικά μπορούμε να δημιουργήσουμε έναν πίνακα με τις τιμές που μας ενδιαφέρουν καινά εισάγουμε αυτόν στην εντολή polyval (Εικόνα 4.5): Η τελευταία αυτή εναλλακτική μας δυνατότητα μας βοηθάει προφανώς στην περίπτωση όπου θέλουμε να σχεδιάσουμε τη γραφική παράσταση ενός πολυωνύμου. 38 Έστω για παράδειγμα ότι θέλουμε να σχεδιάσουμε τη γραφική παράσταση του παραπάνω πολυωνύμου, για τιμές του x από -50 μέχρι 50. Όπως έχουμε δει ήδη, για να σχεδιάσουμε τη γραφική παράσταση μιας συνάρτησης πρέπει να δώσουμε στο πρόγραμμα δυο πίνακες που να περιέχουν το πεδίο ορισμού (x) και το πεδίο τιμών (y) της. Καταρχήν λοιπόν πρέπει να δημιουργήσουμε έναν πίνακα που να περιέχει το πεδίο ορισμού που μας ενδιαφέρει. Αυτό θα είναι ένας πίνακας της μορφής: x =[-50:1:50] αν υποθέσουμε ότι επιλέγουμε για βήμα το 1. Για να δημιουργήσουμε τον πίνακα με το σύνολο τιμών μπορούμε να χρησιμοποιήσουμε την εντολή pοlyναl: y = polyval(p,x) Τέλος, για να σχεδιάσουμε τη γραφική μας παράσταση θα χρησιμοποιήσουμε την εντολή plot: plot(x,y) Η παραπάνω διαδικασία, καθώς και η γραφική παράσταση που θα προκύψει φαίνονται στις (Εικόνα 4.6) και (Εικόνα 4.7) αντίστοιχα. 39 4.4. Πολλαπλασιασμός / Διαίρεση μεταξύ πολυωνύμων Με τη βοήθεια του Matlab μπορούμε να πολλαπλασιάσουμε ή να διαιρέσουμε πολυώνυμα μεταξύ τους. Για τον πολλαπλασιασμό μεταξύ πολυωνύμων θα χρησιμοποιήσουμε την εντολή conv(p1,p2), όπου p1 και p2 τα πολυώνυμα που θέλουμε να πολλαπλασιάσουμε, ενώ για τη διαίρεση μεταξύ πολυωνύμων θα χρησιμοποιήσουμε την εντολή deconv(p1,p2), όπου p1 το πολυώνυμο διαιρετέος και p2 το πολυώνυμο - διαιρέτης. Τα ονόματα των παραπάνω εντολών προέρχονται από τις αγγλικές λέξεις convolution (συνέλιξη) και deconvolution (αποσυνέλιξη). Έστω για παράδειγμα ότι θέλουμε να πολλαπλασιάσουμε μεταξύ τους τα πολυώνυμα y 2 x 2 5 x και y 3 x 3 6 . Καταρχήν θα πρέπει να δημιουργήσουμε τους πίνακες με τους συντελεστές τους. Αυτοί θα είναι της μορφής: p1 = [2 5 0] και p2 = [3 0 0 6] Για τον πολλαπλασιασμό των δύο πολυωνύμων θα χρησιμοποιήσουμε τελικά την εντολή: w = conv(p1,p2) Η διαδικασία αυτή καθώς και το αποτέλεσμα που θα μας επιστρέψει το πρόγραμμα φαίνονται στην (Εικόνα 4.8): 40 Το αποτέλεσμα που μας επιστρέφει ο υπολογιστής αντιστοιχεί στο πολυώνυμο y 6 x 5 15 x 4 12 x 2 30 x , το οποίο είναι και το γινόμενο των παραπάνω πολυωνύμων. Σε ένα άλλο παράδειγμα, έστω ότι θέλουμε να διαιρέσουμε το πολυώνυμο y 3 x 2 5 x 1 με το πολυώνυμο y 4 x 7 . Καταρχήν θα δημιουργήσουμε κατά τα γνωστά τους πίνακες με τους συντελεστές τους, οι οποίοι θα είναι δύο πίνακες της μορφής: p1 = [3 5 1] και p2= [4 7] Για τη διαίρεση μεταξύ των δύο πολυωνύμων θα χρησιμοποιήσουμε την εντολή: [q,r] = deconv(p1,p2) Προσοχή: Στην περίπτωση της διαίρεσης πρέπει να χρησιμοποιήσουμε δύο πίνακες για να αποθηκεύσουμε το αποτέλεσμα, έναν για το πηλίκο της διαίρεσης και έναν για το υπόλοιπο αυτής. Η παραπάνω διαδικασία, καθώς και το αποτέλεσμα που θα πάρουμε εμφανίζονται στην (Εικόνα 4.9): Όπως βλέπουμε, ο υπολογιστής μας επιστρέφει ως πηλίκο της διαίρεσης το πολυώνυμο y 0.75 x 0.0625 , και ως υπόλοιπο της το y = 1.4375. 41 4.5. Παραγώγιση πολυωνύμων To Matlab μας δίνει τη δυνατότητα να παραγωγίσουμε ένα πολυώνυμο χρησιμοποιώντας την εντολή polyder. Η εντολή αυτή χρησιμοποιείται στις εξής της μορφές: p = polyder(a): Επιστρέφει την παράγωγο του πολυωνύμου α. p = polyder(a ,b): Επιστρέφει την παράγωγο του γινομένου των πολυωνύμων α και b. [q ,d]= polyder(a ,b): Επιστρέφει στον πίνακα q τον αριθμητή και στον πίνακα d τον παρονομαστή της παραγώγου του πηλίκου της διαίρεσης του πολυωνύμου α με το πολυώνυμο b(a/b). Έστω για παράδειγμα ότι θέλουμε να υπολογίσουμε την παράγωγο του πολυωνύμου y 3 x 2 5 x 3 . Ο πίνακας με τους συντελεστές του θα είναι της μορφής: α=[3 -5 3] Για να υπολογίσουμε τη ζητούμενη παράγωγο θα δώσουμε την εντολή: p = polyder(a) Η διαδικασία αυτή, καθώς και το αποτέλεσμα που θα μας επιστρέψει το πρόγραμμα φαίνονται στην (Εικόνα 4.10): Το αποτέλεσμα που πήραμε αντιστοιχεί προφανώς στο πολυώνυμο y = 6x -5. Σε ένα άλλο παράδειγμα, έστω ότι θέλουμε να υπολογίσουμε την παράγωγο του γινομένου των πολυωνύμων y 3 x 2 6 x 9 και y x 2 2 x . Οι πίνακες με τους συντελεστές των πολυωνύμων αυτών θα είναι της μορφής: α=[3 6 9] και b =[1 2 0] Για να υπολογίσουμε τη ζητούμενη παράγωγο θα πρέπει να χρησιμοποιήσουμε την εντολή: 42 p = polyder(a,b) Η παραπάνω διαδικασία, καθώς και το αποτέλεσμα της εμφανίζονται στην (Εικόνα 4.11). To αποτέλεσμα που παίρνουμε από το πρόγραμμα σε αυτήν την περίπτωση αντιστοιχεί στο πολυώνυμο y 12 x 3 36 x 2 42 x 18 . Τέλος, έστω ότι θέλουμε να υπολογίσουμε την παράγωγο του πηλίκου της διαίρεσης μεταξύ των πολυωνύμων y 16 x 2 8 x και y 2 x . Οι πίνακες με τους συντελεστές αυτών θα είναι της μορφής: α=[16 8 0] και b=[2 0] Για να υπολογίσουμε τη ζητούμενη παράγωγο θα χρησιμοποιήσουμε την εντολή: [q,d] =polyder(a,b) Η υλοποίηση των παραπάνω στο Matlab φαίνεται στην (Εικόνα 4.12): 43 Σύμφωνα με όσα είπαμε παραπάνω το αποτέλεσμα του υπολογιστή αντιστοιχεί στο πολυώνυμο: , που είναι και η παράγωγος του πηλίκου της διαίρεσης των πολυωνύμων μας. 4.6. Πολυωνυμική προσέγγιση Έστω ότι θέλουμε να βρούμε ένα πολυώνυμο δεύτερης τάξης που να ικανοποιεί τα ζεύγη τιμών του πίνακα 4.1. Αυτό στο Matlab μπορούμε να το κάνουμε χρησιμοποιώντας την εντολή polyfit. Η εντολή αυτή συντάσσεται ως εξής: p = polyfit(x,y,n) , όπου x και y οι πίνακες με τα σύνολα ορισμού και τιμών αντίστοιχα που θέλουμε να ικανοποιούνται από το πολυώνυμο, n η τάξη του πολυωνύμου που θέλουμε να υπολογίσουμε και ρ ο πίνακας στον οποίο θα αποθηκεύσει ο υπολογιστής τους συντελεστές του. Καταρχήν θα πρέπει προφανώς να ορίσουμε τους πίνακες x και y. Αυτό μπορούμε να το κάνουμε με τις εντολές: x = [1:1:10] y = [ 1 11 25 43 65 91 121 155 193 235] Στη συνέχεια μπορούμε να υπολογίσουμε το ζητούμενο πολυώνυμο με την εντολή: p = polyfit(x, y, 2) Όλη η παραπάνω διαδικασία, καθώς και το αποτέλεσμα της φαίνονται στην (Εικόνα 4.13): 44 Το πολυώνυμο που μας επιστρέφει ο υπολογιστής είναι το y 2 x 2 4 x 5 . Αν είναι σωστό θα πρέπει να δίνει τα στοιχεία του πίνακας κάθε φορά που του δίνουμε τα στοιχεία του πίνακα x. Αυτό μπορούμε να το επαληθεύσουμε χρησιμοποιώντας την εντολή polyval που είδαμε προηγουμένως. Συγκεκριμένα, αν εισάγουμε σε μια εντολή polyval το πολυώνυμο που μας έδωσε ο υπολογιστής και τον πίνακα των x θα πρέπει να πάρουμε ως αποτέλεσμα των πίνακα των y (Εικόνα 4.14). Όπως παρατηρούμε, ο πίνακας y1 που υπολογίζουμε με την polyval είναι ακριβώς ίδιος με τον αρχικό πίνακας, άρα το πολυώνυμο που πήραμε ικανοποιεί τους αρχικούς πίνακες. 4.7. Παρεμβολή To Matlab μας προσφέρει μια σειρά από εργαλεία για παρεμβολή σε μία, δύο ακόμα και τρεις διαστάσεις. Στα πλαίσια του παρόντος μαθήματος θα εξετάσουμε τις δυνατότητες που έχουμε όσον αφορά στην παρεμβολή σε μονοδιάστατους πίνακες. Έστω ότι έχουμε τα ζεύγη τιμών του πίνακα 4.2 και θέλουμε να υπολογίσουμε 45 την τιμή του y για x= 6.5 (η οποία πρέπει να προκύψει ίση με 42.25, αφού τα ζεύγη τιμών του πίνακα αντιστοιχούν στη συνάρτηση y x 2 ). Η εντολή που θα χρησιμοποιήσουμε για την παρεμβολή είναι η interp1. Η εντολή αυτή συντάσσεται ως εξής: yi = interp1(x,y,xi,' μέθοδος') , όπου x, y οι δεδομένοι πίνακες τιμών μας, xi το σημείο στο οποίο θέλουμε να εφαρμόσουμε την παρεμβολή και μέθοδος μια συγκεκριμένη λέξη που θα αντιστοιχεί στη μέθοδο που θέλουμε να ακολουθήσουμε. Οι μέθοδοι παρεμβολής που μας προσφέρει το πρόγραμμα είναι οι εξής: Παρεμβολή πλησιέστερου γειτονικού αριθμού (Nearest neighbor interpolation): Η μέθοδος αυτή μας επιστρέφει την τιμή του σημείου εκείνου των δεδομένων μας που βρίσκεται πιο κοντά στο xi. Πρόκειται για τη γρηγορότερη μέθοδο, εξάγει όμως και τα χειρότερα αποτελέσματα. Η κωδική της λέξη είναι 'nearest'. Γραμμική παρεμβολή (Linear interpolation): Υπολογίζει μια γραμμική συνάρτηση για κάθε ζεύγος τιμών των δεδομένων μας, και στη συνέχεια υπολογίζει τη ζητούμενη τιμή χρησιμοποιώντας τη συνάρτηση που αντιστοιχεί στο xi. Προσφέρει προφανώς καλύτερα αποτελέσματα από την προηγούμενη μέθοδο. Η κωδική της λέξη είναι 'linear'. Παρεμβολή με splines τρίτης τάξης (Cubic spline interpolation): Η μέθοδος αυτή είναι και η πιο αργή, εξάγει όμως και τα καλύτερα αποτελέσματα, όσο η απόσταση μεταξύ των σημείων x των δεδομένων μας είναι σταθερή. Η κωδική της λέξη είναι 'spline'. Παρεμβολή τρίτης τάξης (Cubic interpolation): Πρόκειται για μια μέθοδο, η οποία μπορεί να απαιτεί περισσότερη μνήμη και χρόνο από ότι οι δύο πρώτες μέθοδοι, τα αποτελέσματα της όμως είναι καλύτερα. Η κωδική της λέξη είναι 'cubic'. Στο παράδειγμα μας, θα πρέπει καταρχήν να δημιουργήσουμε τους πίνακες με τα δεδομένα μας (Εικόνα 4.15). 46 Για να υπολογίσουμε τη ζητούμενη τιμή του παραδείγματος μας εφαρμόζοντας τις μεθόδους παρεμβολής που είδαμε παραπάνω πρέπει να χρησιμοποιήσουμε αντίστοιχα τις εντολές που εμφανίζονται στην (Εικόνα 4.16): Παρατηρούμε ότι τα καλύτερα αποτελέσματα τα εξάγει η παρεμβολή με splines τρίτης τάξης. 5. ΣΥΜΒΟΛΙΚΑ ΜΑΘΗΜΑΤΙΚΑ (Symbolic Math) 5.1. Γενικά Το περιβάλλον του Μatlab είναι όπως έχουμε δει μέχρι τώρα ένα καθαρά αριθμητικό περιβάλλον. Οι μεταβλητές που έχουμε χρησιμοποιήσει μέχρι τώρα 47 δεν υπάρχουν ως ανεξάρτητα σύμβολα, αλλά περιέχουν απλά τις αριθμητικές τιμές που τους δίνουμε εμείς. Έτσι, για το πρόγραμμα η έκφραση y 3 x 2 2 έχει νόημα μόνο στην περίπτωση που έχουμε δώσει ήδη μια τιμή στη μεταβλητή x. Σε αυτήν την περίπτωση το Μatlab θα πάρει αυτήν την τιμή, θα εκτελέσει τις απαιτούμενες πράξεις και θα αποθηκεύσει το αποτέλεσμα στη μεταβλητή y. Υπάρχουν όμως οι φορές που οι μεταβλητές μας ενδιαφέρουν ως σύμβολα και όχι ως αριθμητικές τιμές. Αν για παράδειγμα θέλουμε να υπολογίσουμε την παράγωγο της συνάρτησης y 3 x 2 2 , τότε θέλουμε ως αποτέλεσμα τη συνάρτηση y = 6x και όχι κάποια αριθμητική τιμή της. Χρειαζόμαστε συνεπώς κάποια εργαλεία, με τη βοήθεια των οποίων το πρόγραμμα να μπορεί να αντιληφθεί τα σύμβολα μιας συνάρτησης. Τα εργαλεία αυτά θα τα βρούμε σε ένα από τα βοηθητικά μέρη του Matlab, το Symbolic Math Toolbox . 5.2. Συμβολική απεικόνιση μεταβλητών Για να δηλώσουμε ότι μια μεταβλητή θα χρησιμοποιηθεί ως σύμβολο και όχι ως αριθμητική τιμή θα χρησιμοποιήσουμε την εντολή sym. Η εντολή αυτή συντάσσεται ως εξής: όνομα μεταβλητής = sym('σύμβολο') Αν για παράδειγμα θέλουμε να χρησιμοποιήσουμε τη μεταβλητή x ως σύμβολο θα χρησιμοποιήσουμε την έκφραση: x= sym('x') Την παραπάνω εντολή μπορούμε να τη χρησιμοποιήσουμε για να αποθηκεύσουμε σε μια μεταβλητή οποιαδήποτε λέξη ή έκφραση ως σύμβολο . Μπορούμε για παράδειγμα να χρησιμοποιήσουμε την εξής έκφραση: α= sym('alpha') Σε αυτήν την περίπτωση το πρόγραμμα θα χρησιμοποιεί τη λέξη alpha κάθε φορά που θα βρίσκει τη μεταβλητή α στις σχέσεις μας. Αν λοιπόν εμείς στη συνέχεια εισάγουμε την εντολή: b =5*α το πρόγραμμα θα δημιουργήσει μια νέα μεταβλητή b, η οποία θα περιέχει την έκφραση 5*αΙρhα. Πιο απλά, αν θέλουμε μια μεταβλητή να αντιπροσωπεύει τον εαυτό της (η μεταβλητή x να αντιπροσωπεύει το γράμμα x), μπορούμε να 48 χρησιμοποιήσουμε και την εντολή syms όνομα μεταβλητής . Στο πρώτο παράδειγμα μας θα αρκούσε λοιπόν να χρησιμοποιήσουμε την έκφραση: syms x Την εντολή syms μπορούμε να τη χρησιμοποιήσουμε επίσης για να δημιουργήσουμε περισσότερες συμβολικές μεταβλητές ταυτόχρονα. Για παράδειγμα, η εντολή syms α b c (όπου οι μεταβλητές χωρίζονται μεταξύ τους με κενά) θα αποθηκεύσει τα γράμματα α, b,c στις μεταβλητές α, b και c αντίστοιχα. Σύμφωνα λοιπόν με τα παραπάνω, στην περίπτωση που θέλουμε να απεικονίσουμε μια συνάρτηση στη συμβολική της μορφή πρέπει να ορίσουμε τις μεταβλητές της στη συμβολική τους μορφή, και στη συνέχεια να εκφράσουμε την ίδια τη συνάρτηση. Έστω για παράδειγμα ότι θέλουμε να δημιουργήσουμε τη συνάρτηση y 3 x 2 2 . Το πρώτο που θα κάνουμε είναι να ορίσουμε το x ως σύμβολο. Αυτό θα το κάνουμε όπως είδαμε με την εντολή syms x. Στη συνέχεια, το μόνο που μένει είναι να εκφράσουμε την ίδια τη συνάρτηση (Εικόνα 5.1). Σε ένα άλλο παράδειγμα, αν θέλουμε να εκφράσουμε τη συνάρτηση z 2 x 2 5 y 2 7 x 3 y 2 στη συμβολική της μορφή θα πρέπει να ακολουθήσουμε η διαδικασία της (Εικόνα 5.2). 49 5.3. Όρια Με τη βοήθεια του Symbolic Math Toolbox και της εντολής του limit μπορούμε να υπολογίσουμε το όριο μιας συνάρτησης. Η εντολή αυτή συντάσσεται ως εξής: limit(έκφραση, μεταβλητή, όριο) Έστω για παράδειγμα ότι θέλουμε να υπολογίσουμε το όριο: το οποίο είναι ίσο με 1. Καταρχήν θα πρέπει προφανώς να ορίσουμε τη συμβολική μεταβλητή που θα χρησιμοποιήσουμε, δηλαδή το x, χρησιμοποιώντας την εντολή: syms x Στη συνέχεια, και στην περίπτωση που θέλουμε επιπλέον να αποθηκεύσουμε το αποτέλεσμα στη μεταβλητή οriο, θα χρησιμοποιήσουμε την έκφραση: orio=limit(1+1/x, x ,inf) όπου το inf χρησιμοποιείται στο Μatlab για να αποδώσει το άπειρο (Εικόνα 5.3). Ειδικά σε περιπτώσεις όπως η παραπάνω, όπου στην έκφραση μας υπάρχει μόνο μία μεταβλητή (το x), μπορούμε να παραλείψουμε να τη δηλώσουμε στην εντολή μας. Θα μπορούσαμε δηλαδή αντί της παραπάνω εντολής να χρησιμοποιήσουμε την: orio=limit(1+1/x, inf) , αφού είναι προφανές το ότι η μεταβλητή στην οποία αναφέρεται το όριο είναι το x. Σε ένα άλλο παράδειγμα, έστω ότι θέλουμε να υπολογίσουμε το όριο: 50 , το οποίο και θα αποθηκεύσουμε στη μεταβλητή orio2. Όπως και στο προηγούμενο παράδειγμα, θα ξεκινήσουμε ορίζοντας τη συμβολική μας μεταβλητή x. Στη συνέχεια θα υπολογίσουμε το ζητούμενο όριο με την εντολή: orio2=limit(sin(x)/x, inf) Τα παραπάνω εμφανίζονται στην (Εικόνα 5.4). 5.4. Παράγωγοι / Ολοκληρώματα Το Symbolic Math Toolbox μας παρέχει τη δυνατότητα να παραγωγίσουμε ή να ολοκληρώσουμε μια συνάρτηση, εφόσον προηγουμένως την έχουμε εκφράσει στη συμβολική της μορφή. Συγκεκριμένα, για την παραγώγιση μιας συνάρτησης θα χρησιμοποιήσουμε την εντολή diff(differentiation, παραγώγιση), ενώ για την ολοκλήρωση της θα χρησιμοποιήσουμε την εντολή int(integration, ολοκλήρωση). Η εντολή diff συντάσσεται ως εξής: diff(f,x,n) , όπου f η συνάρτηση που θέλουμε να παραγωγίσουμε, x η μεταβλητή ως προς την οποία θέλουμε να παραγωγίσουμε και n η τάξη της παραγώγου. Σε αυτήν την έκφραση μπορούμε να παραλείψουμε τη μεταβλητή, στην οποία περίπτωση το Matlab θα παραγωγίσει τη συνάρτηση μας ως προς x, όπως επίσης και την τάξη, οπότε το πρόγραμμα θα υπολογίσει την πρώτη παράγωγο της συνάρτησης μας. Έστω για παράδειγμα ότι θέλουμε να υπολογίσουμε την πρώτη παράγωγο της συνάρτησης y 3 x 2 5 x 8 και να την αποθηκεύσουμε στη μεταβλητή parag. Καταρχήν θα πρέπει να ορίσουμε τη συνάρτηση στη συμβολική της μορφή. Αυτό θα το κάνουμε με τις εντολές: syms x y=3*x^2+5*x-8 51 Για να παραγωγίσουμε στη συνέχεια θα χρησιμοποιήσουμε την έκφραση: parag=diff(y) , αφού θέλουμε να υπολογίσουμε την πρώτη παράγωγο ως προς x (Εικόνα 5.5). Σε ένα άλλο παράδειγμα, έστω ότι θέλουμε να υπολογίσουμε τη δεύτερη παράγωγο ως προς y της συνάρτησης y 4 xy 3 12 x 2 5 y 1 , και να την αποθηκεύσουμε στη μεταβλητή parag2. Καταρχήν θα εκφράσουμε τη συνάρτηση στη συμβολική της μορφή χρησιμοποιώντας τις εντολές: syms x γ z =4*x*y^3+12*x^2-5*y+1 Στη συνέχεια θα υπολογίσουμε τη ζητούμενη παράγωγο με τη βοήθεια της εντολής: parag2= diff(z,y,2) Η παραπάνω διαδικασία καθώς και το αποτέλεσμα της εμφανίζονται στην (Εικόνα 5.6): 52 Όπως είπαμε παραπάνω, για την ολοκλήρωση μιας συνάρτησης στη συμβολική της μορφή θα χρησιμοποιήσουμε την εντολή int. Η εντολή αυτή συντάσσεται γενικά ως εξής: int(f,α,α1,α2) , όπου f η συνάρτηση που θέλουμε να ολοκληρώσουμε, α η μεταβλητή ολοκλήρωσης (μπορεί να παραλειφθεί αν είναι η x), και α1 και α2 τα όρια ολοκλήρωσης (μπορούν να παραλειφθούν αν θέλουμε να υπολογίσουμε αόριστο ολοκλήρωμα. Έστω για παράδειγμα ότι θέλουμε να υπολογίσουμε το αόριστο ολοκλήρωμα η λύση του οποίου είναι η συνάρτηση I = lnx. Καταρχήν θα πρέπει κατά τα γνωστά να εκφράσουμε στη συμβολική της μορφή τη συνάρτηση, της οποίας το ολοκλήρωμα θέλουμε να υπολογίσουμε. Αυτό θα το κάνουμε με τις εξής εντολές: syms x f =1/x Στη συνέχεια, για να υπολογίσουμε το ζητούμενο ολοκλήρωμα θα χρησιμοποιήσουμε την εντολή: Ι= int(f) , αφού η μεταβλητή ολοκλήρωσης είναι το x και το ολοκλήρωμα είναι αόριστο. Τα παραπάνω εμφανίζονται στην (Εικόνα 5.7): Παρατήρηση : Όπως είδαμε στο κεφάλαιο 1, για να υπολογίσουμε τη συνάρτηση y = lnx στο Matlab θα χρησιμοποιήσουμε την εντολή y = lοg(x). 53 Σε ένα άλλο παράδειγμα, έστω ότι θέλουμε να υπολογίσουμε το ορισμένο ολοκλήρωμα, η λύση του οποίου είναι η I2 = 1. Για να υπολογίσουμε το ζητούμενο ολοκλήρωμα θα πρέπει να χρησιμοποιήσουμε τις εξής εντολές: syms n f=sin(2*n) I2=int(f,n,o,pi/2) Η διαδικασία αυτή, καθώς και το αποτέλεσμα της εμφανίζονται στην (Εικόνα 5.8): 5.5. Γραφικές παραστάσεις συμβολικών συναρτήσεων Στο τρίτο κεφάλαιο είδαμε μία διαδικασία για να σχεδιάζουμε γραφικές παραστάσεις των συναρτήσεων μας στο Matlab. Το Symbolic Math Toolbox μας προσφέρει μία εναλλακτική λύση, επιτρέποντας μας να σχεδιάσουμε τη γραφική παράσταση μιας συνάρτησης που έχουμε ορίσει σε συμβολική μορφή. Για να το κάνουμε αυτό θα χρησιμοποιήσουμε την εντολή ezplot. Η εντολή αυτή συντάσσεται στη γενική της μορφή ως εξής: ezplot(f ,[a b]) , όπου f η συνάρτηση μας, και α, b το αριστερό και δεξί αντίστοιχα όριο του διαστήματος, για το οποίο θέλουμε να σχεδιάσουμε τη γραφική παράσταση. Τα όρια αυτά μπορούν και να παραλειφθούν στην παραπάνω έκφραση, οπότε 54 το πρόγραμμα θα σχεδιάσει τη γραφική παράσταση για 2 x 2 . Έστω για παράδειγμα ότι θέλουμε να σχεδιάσουμε τη γραφική παράσταση της συνάρτησης y 2 ( x ) 2x Για να εκφράσουμε τη συνάρτηση αυτή στη συμβολική της μορφή θα χρησιμοποιήσουμε τις εξής εντολές: syms x y=sin(x)^2/(2*x) Στη συνέχεια, για να σχεδιάσουμε τη ζητούμενη γραφική παράσταση θα χρησιμοποιήσουμε την εντολή: ezplot (y) Το αποτέλεσμα της παραπάνω διαδικασίας θα είναι η γραφική παράσταση της (Εικόνα 5.9): Αν θέλουμε την γραφική παράσταση της παραπάνω συνάρτησης, αλλά για 0<x<4π, τότε θα χρησιμοποιήσουμε την εντολή: ezplot (y,[0 4* pi]) Η γραφική παράσταση που θα προκύψει σε αυτήν την περίπτωση θα είναι η παρακάτω εικόνα. 55 Βιβλιογραφία [1] Ανδρέου Γεώργιος, Πουλιάκα Μαρία, Γιαννακοπούλου Μαρία, Πανταζόπουλος Αθανάσιος, Εισαγωγή στο MATLAB, Εκδόσεις Γκιούρδας, Αθήνα, 2004. [2] Μούρα Ελευθερία, Εισαγωγή στο MATLAB, Τμήμα Μαθηματικών, Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης, Θεσσαλονίκη, 2009. 56
© Copyright 2024 Paperzz