Οδηγός στη Χρήση του Υπολογιστή

Σχετικά έγγραφα
ΤΟΜΟΣ Α : Συμβολικός Προγραμματισμός

ΠΡΑΚΤΙΚΟΣ Ο ΗΓΟΣ MATLAB

Εισαγωγή στη Matlab Βασικές Συναρτήσεις

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

Εργαστήριο Μαθηματικής Ανάλυσης Ι. Εισαγωγή στη Matlab Βασικές Συναρτήσεις-Γραφικές παραστάσεις. Πανεπιστήμιο Θεσσαλίας. Σχολή Θετικών Επιστημών

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

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΠΡΑΞΕΙΣ. Παράδειγμα #1. Πράξεις μεταξύ ακεραίων αριθμών

Χρονικές σειρές 1 ο μάθημα: Εισαγωγή στη MATLAB

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Εισαγωγή στο MATLAB. Κολοβού Αθανασία, ΕΔΙΠ,

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

MATLAB Desktop (Επιφάνεια Εργασίας MATLAB) [1.]

Πρώτη επαφή με το μαθηματικό πακέτο Mathematica

Υπολογιστές Ι. Άδειες Χρήσης. Τύποι δεδομένων. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ. Ακέραιοι αριθμοί (int) Πράξεις μεταξύ ακεραίων αριθμών

Συστήματα Αναμονής (Queuing Systems)

Έναρξη Τερματισμός του MatLab

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

1 η Εργαστηριακή Άσκηση MATLAB Εισαγωγή

επιµέλεια Θοδωρής Πιερράτος

Ηλεκτρονικοί Υπολογιστές

ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 1

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Τύποι δεδομένων, μεταβλητές, πράξεις. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ

Εισαγωγή στο Πρόγραμμα Maxima

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ )

Εισαγωγή στην Tcl. Τί είναι η Tcl;

Ρητή μετατροπή αριθμητικής τιμής σε άλλο τύπο. Τι θα τυπωθεί στον παρακάτω κώδικα;

Γνωρίστε το Excel 2007

1. Εισαγωγή στο Sage.

Ομάδα Γ. Ο υπολογιστής ως επιστημονικό εργαλείο

Πληροφορική. Ενότητα 1: Α. Οργάνωση μαθήματος. Β. Στοιχεία Προγραμματισμού -Προγραμματιστικές Δομές, Πρόγραμμα, Γλώσσες.

Εισαγωγή στο Περιβάλλον Επιστημονικού Προγραμματισμού MATLAB-Simulink. Δημήτριος Τζεράνης Λεωνίδας Αλεξόπουλος

Σκοπός. Αλγεβρικοί και Λογικοί Υπολογισμοί στη PASCAL

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Σημαντικές δυνατότητες των σύγχρονων υπολογιστικών μηχανών: Αξιόπιστη καταγραφή πολύ μεγάλου όγκου δεδομένων

Περιεχόμενα. Κεφάλαιο 1 Γνωριμία με το Excel... 9


ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

Διαχείριση Βάσης Δεδομένων (dbadmin)

Πρόβλημα 29 / σελίδα 28

Χρονικές σειρές 3 o μάθημα: Εισαγωγή στη MATLAB

Εισαγωγή στους Υπολογιστές

4.1 Πράξεις με Πολυωνυμικές Εκφράσεις... 66

Περιεχόμενα. Κεφάλαιο 1 Γνωριμία με το Excel...9

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

1. ΕΙΣΑΓΩΓΗ ΣΤΟ MATLAB... 13

ΣΥΝΑΡΤΗΣΕΙΣ. Η σύνταξη μιας συνάρτησης σ ένα κελί έχει την γενική μορφή: =όνομα_συνάρτησης(όρισμα1; όρισμα2;.)

Εργαστήρια Αριθμητικής Ανάλυσης Ι. 1 ο Εργαστήριο. Εισαγωγή στο Matlab

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ. Δρ. Π. Νικολαΐδου

Περιεχόμενα. Μέρος 1: Βασικές έννοιες Πληροφορικής και επικοινωνιών Μέρος 2: Χρήση υπολογιστή και διαχείριση αρχείων Πρόλογος...

Περιεχόμενα. 1.1 Εισαγωγή Τυπογραφικές συμβάσεις Τι νέο υπάρχει στο MATLAB Τι περιέχει το βιβλίο...17

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

ΠΛΗΡΟΦΟΡΙΚΗ Ι Εργαστήριο 1 MATLAB ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στο MATLAB και στο Octave

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 1: Εισαγωγή

Διαδικασιακός Προγραμματισμός

Ο ΗΓΙΕΣ ΧΡΗΣΗΣ ΤΟΥ MATLAB

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βασικές Έννοιες Προγραμματισμού. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Ανάπτυξη και Σχεδίαση Λογισμικού

Διαγραφή Επιλέγετε Διαγραφή για να διαγράψετε μία ήδη υπάρχουσα διαδικασία εισαγωγής ASCII

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

Λογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

Εισαγωγή στη Matlab Εισαγωγή στην Αριθμητική Ανάλυση Διδάσκων: Γεώργιος Ακρίβης Βοηθός: Δημήτριος Ζαβαντής

Αλγόριθμοι Αναπαράσταση αλγορίθμων Η αναπαράσταση των αλγορίθμων μπορεί να πραγματοποιηθεί με:

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Προγραμματισμός με FORTRAN Συνοπτικός Οδηγός Α. Σπυρόπουλος Α. Μπουντουβής

SPSS Statistical Package for the Social Sciences

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

1 η ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ (Προγραμματισμός & MATLAB)

8 FORTRAN 77/90/95/2003

Σ η μ ε ι ώ σ ε ι ς γ ι α τ ο υ π ο λ ο γ ι σ τ ι κ ό φ ύ λ λ ο

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Εισαγωγή στην γλώσσα προγραμματισμού C

ΔΕΙΓΜΑ ΠΡΙΝ ΤΙΣ ΔΙΟΡΘΩΣΕΙΣ - ΕΚΔΟΣΕΙΣ ΚΡΙΤΙΚΗ

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ηλεκτρονική Υγεία. Εργαστήριο 4 ο : MATLAB

7.5 ΑΡΑΙΕΣ ΜΗΤΡΕΣ Κατασκευή αραιών µητρών Πράξεις και συναρτήσεις αραιών µητρών Συναρτήσεις για γραφήµατα...

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Περιεχόμενα. Λίγα λόγια από το συγγραφέα... 7

Διαδικασιακός Προγραμματισμός

Εργαστήριο Γραμμικής Άλγεβρας. H Matlab ως γλώσσα προγραμματισμού

Πρόλογος... xiii ΜΕΡΟΣ 1 1 Εισαγωγή στο Excel Βασικές λειτουργίες του Excel... 21

Συμβολικές Γλώσσες Προγραμματισμού με το MATHEMATICA.

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

Βασικές έννοιες προγραμματισμού

Περιεχόμενα ΜΕΡΟΣ 1. Πρόλογος... xiii. 1 Εισαγωγή στο Excel Βασικές λειτουργίες του Excel... 23

Ενδεικτικές Ερωτήσεις Θεωρίας

ΣΧΗΜΑΤΑ-ΕΙΚΟΝΕΣ-ΕΞΙΣΩΣΕΙΣ

Εντολές της LOGO (MicroWorlds Pro)

Εισαγωγικές σημειώσεις στο Matlab

Δομημένος Προγραμματισμός (ΤΛ1006)

3) το παράθυρο Πίνακας τιμών όπου εμφανίζονται οι τιμές που παίρνουν οι παράμετροι

Kεφάλαιο 11 Λίστες και Ανάλυση Δεδομένων Kεφάλαιο 12 Εργαλεία ανάλυσης πιθανοτήτων Kεφάλαιο 13 Ανάλυση δεδομένων...

Transcript:

2 Οδηγός στη Χρήση του Υπολογιστή

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 3 ΟΔΗΓΟΣ στη ΧΡΗΣΗ του ΥΠΟΛΟΓΙΣΤΗ

4 Οδηγός στη Χρήση του Υπολογιστή

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 5 ΓΕΩΡΓΙΟΣ ΘΕΟΔΩΡΟΥ Καθηγητής Α.Π.Θ. ΝΙΚΗ ΘΕΟΔΩΡΟΥ Πληροφορικός ΟΔΗΓΟΣ στη ΧΡΗΣΗ του ΥΠΟΛΟΓΙΣΤΗ Τόμος Β Αριθμητικός & Οπτικός Προγραμματισμός Θεσσαλονίκη 2012 Εκδόσεις Α.Π.Θ.

6 Οδηγός στη Χρήση του Υπολογιστή Κάθε γνήσιο αντίτυπο φέρει την υπογραφή των συγγραφέων 2012, Εκδόσεις Α.Π.Θ. και Γ. Θεοδώρου, Ν. Θεοδώρου, Κεντρική Βιβλιοθήκη, Πανεπιστημιούπολη, Θεσσαλονίκη, Τ.Κ.: 54124, τηλ.: 2310995301 Επιμέλεια κειμένου: Σοφία Μακρή Εξώφυλλο: Θεόδωρος Παπαϊωάννου Εκτύπωση: «Graphica» ISBN: 978-960-9717-10-6Οδηγός στη Χρήση Υπολογιστών

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 7 Περιεχόμενα Πρόλογος... 15 ΜΕΡΟΣ Α... 19 ΑΡΙΘΜΗΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ... 19 ΚΕΦΑΛΑΙΟ 1... 21 Εισαγωγικές Έννοιες... 21 1.1 Εισαγωγή... 21 1.2 Βασικές πράξεις... 24 1.2.1 Αριθμητικές πράξεις... 25 1.2.2 Πράξεις σύγκρισης Εντολές λογικής... 28 1.2.3 Εντολή απόκρυψης... 29 1.3 Μαθηματικές σταθερές και παράμετροι... 29 1.3.1 Εισαγωγή νέων παραμέτρων Εντολή ανάθεσης... 31 1.4 Εσωτερικές συναρτήσεις... 32 1.4.1 Γενικές παρατηρήσεις... 36 1.5 Διαγραφή παραμέτρων... 37 1.6 Σύνθετες εντολές... 37 1.7 Μ-Αρχεία Εντολών... 39 1.7.1 Χρήση κειμενογράφου... 41 1.7.2 Κυψελωτή δομή Μ-αρχείου... 41 1.8 Προσέγγιση αριθμητικών τιμών... 42 1.9 Εντολές διαχείρισης... 43

8 Οδηγός στη Χρήση του Υπολογιστή ΚΕΦΑΛΑΙΟ 2... 47 Συμβολοσειρές... 47 2.1 Δημιουργία συμβολοσειράς... 47 2.2 Διαχείριση συμβολοσειράς... 48 ΚΕΦΑΛΑΙΟ 3... 51 Λίστες... 51 3.1 Ορισμός λίστας... 51 3.1.1 Τροποποίηση στοιχείων λίστας... 52 3.1.2 Χαρακτηριστικά λίστας... 53 3.2 Ειδικές εντολές δημιουργίας λίστας... 54 3.2.1 Εντολή a_initial:a_step:a_final... 55 3.2.2 Εντολή linspace(a1, a2, a3)... 55 3.2.3 Εντολές zeros(n, m) και zeros(n)... 56 3.2.4 Εντολές ones(n, m) και ones(n)... 56 3.2.5 Εντολή eye(n)... 57 3.2.6 Εντολή diag(a)... 57 3.2.7 Εντολή magic(n)... 58 3.2.8 Εντολές rand(n, m) και rand(n)... 59 3.2.9 Εντολές randn(n, m) και randn(n)... 59 3.3 Διαχείριση λίστας... 60 3.3.1 Πολλαπλή αναφορά σε στοιχεία λίστας... 60 3.3.2 Αναγωγή σε μονοδιάστατη λίστα-στήλη... 62 3.3.3 Αναφορά σε στοιχεία λίστας με λογική εντολή... 63 3.3.4 Πολλαπλή τροποποίηση στοιχείων λίστας... 64 3.4 Συνενώνοντας λίστες... 66 3.5 Πράξεις με λίστες, όπως στα λογιστικά φύλλα... 68 3.6 Επίδραση συνάρτησης σε λίστα... 74 3.6.1 Ειδικές συναρτήσεις... 75 ΚΕΦΑΛΑΙΟ 4... 81 Προγραμματισμός... 81

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 9 4.1 Εντολές ελέγχου ροής: if και switch... 81 4.1.1 Εντολή if... 82 4.1.2 Εντολή switch... 84 4.2 Επαναληπτικές διαδικασίες Βρόχοι... 86 4.2.1 Εντολή for... 86 4.2.2 Εντολή While... 90 4.3 Συμπληρωματικές εντολές ελέγχου... 94 4.3.1 Εντολή continue... 94 4.3.2 Εντολή break... 95 4.4 Τελεστές λογικής... 97 4.4.1 Τελεστής λογικής «και»... 97 4.4.2 Τελεστής λογικής «ή»... 98 4.4.3 Τελεστής λογικής «όχι»... 99 4.5 Ασκήσεις... 99 ΚΕΦΑΛΑΙΟ 5... 103 Συναρτήσεις... 103 5.1 Μ-Συναρτήσεις... 103 5.1.1 Επικοινωνία συνάρτησης με τον χώρο λειτουργίας... 104 5.1.2 Τερματισμός συνάρτησης... 108 5.2 Οδηγός (Handler) συνάρτησης... 111 5.2.1 Οδηγός εσωτερικής συνάρτησης... 112 5.2.2 Οδηγός Μ-συνάρτησης... 113 5.2.3 Οδηγός ανώνυμης έκφρασης... 114 5.2.4 Ανώνυμος oδηγός... 115 5.3 Εφαρμογές... 115 5.3.1 Αριθμητικός υπολογισμός ολοκληρώματος... 116 5.3.2 Στατιστική περιγραφή δεδομένων... 118 5.3.3 Εσωτερικές συναρτήσεις για στατιστικά μεγέθη... 119 5.4 Ασκήσεις... 121

10 Οδηγός στη Χρήση του Υπολογιστή ΚΕΦΑΛΑΙΟ 6... 123 Γραφικά στο Επίπεδο... 123 6.1 Γραφική παράσταση δεδομένων Εντολή plot... 123 6.1.1 Διαμόρφωση γραφικής παράστασης... 125 6.2 Οδηγοί γραφικών παραστάσεων... 131 6.2.1 Ορισμός οδηγού γραφικής παράστασης... 132 6.2.2 Διαμόρφωση γραφικών παραστάσεων... 133 6.2.3 Ορισμός οδηγών για επιμέρους στοιχεία... 135 6.3 Συμπληρωματικές εντολές... 137 6.3.1 Εντολή scatter... 137 6.3.2 Εντολή stem... 138 6.4 Πολλαπλές καμπύλες... 139 6.4.1 Εντολές hold on και hold off... 142 6.5 Πλέγμα γραφικών παραστάσεων... 143 6.6 Γραφικές παραστάσεις συναρτήσεων Εντολή ezplot... 145 6.7 Αποτύπωση πειραματικών σφαλμάτων... 149 6.8 Ιστογράμματα... 150 6.9 Ημιλογαριθμικές και λογαριθμικές κλίμακες... 152 6.10 Πολικά διαγράμματα... 155 6.10.1 Πολικό διάγραμμα δεδομένων εντολή polar... 155 6.10.2 Πολικό διάγραμμα συνάρτησης εντολή ezpolar... 156 6.11 Παραμετρικές καμπύλες Πεπλεγμένες συναρτήσεις... 157 6.11.1 Γραφική παράσταση παραμετρικής καμπύλης... 157 6.11.2 Γραφική παράσταση πεπλεγμένης συνάρτησης... 159 ΚΕΦΑΛΑΙΟ 7... 161 Διαχείριση του Προγράμματος... 161 7.1 Βασικά μέρη του προγράμματος... 161 7.1.1 Παράθυρο διαχείρισης (Command Window)... 161 7.1.2 Βασικός χώρος λειτουργίας (Workspace)... 162 7.1.3 Ενεργός διεύθυνση αποθήκευσης (Current directory)... 162 7.1.4 Αρχείο καταχώρισης εντολών (Command History)... 163

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 11 7.2 Διαμόρφωση της εμφάνισης των αποτελεσμάτων... 164 7.3 Διαχείριση χώρου λειτουργίας (workspace)... 165 7.4 Αποθήκευση παραμέτρων σε αρχεία ASCII... 167 7.5 Εντολές input και pause... 168 7.6 Ημερολόγιο κίνησης... 170 7.7 Εντολές ελέγχου του προγράμματος... 171 ΚΕΦΑΛΑΙΟ 8... 173 Γραφικά στον Χώρο... 173 8.1 Γραφικές παραστάσεις δεδομένων... 173 8.1.1 Πολλαπλές καμπύλες... 175 8.2 Γραφικές παραστάσεις επιφανειών... 176 8.3 Γραφικές παραστάσεις με την εντολή mesh... 177 8.3.1 Εντολή meshc... 179 8.4 Γραφικές παραστάσεις με την εντολή surf... 180 8.4.1 Εντολή surfc... 181 8.4.2 Εντολή surfl... 182 8.5 Γραφήματα με ισοϋψείς... 183 8.5.1 Γράφημα με ισοϋψείς στο επίπεδο... 183 8.5.2 Τρισδιάστατο γράφημα με ισοϋψείς... 185 8.6 Γραφική αναπαράσταση λίστας... 186 8.6.1 Χρωματική αναπαράσταση... 186 8.6.2 Αναπαράσταση λίστας στις τρεις διαστάσεις... 187 8.7 Γραφική αναπαράσταση ανυσματικών πεδίων... 189 8.8 Γραφικές παραστάσεις συναρτήσεων... 190 8.8.1 Εντολή ezplot3... 190 8.8.2 Εντολή ezmesh... 192 8.8.3 Εντολή ezsurf... 193 8.8.4 Εντολή ezcontour... 194 ΚΕΦΑΛΑΙΟ 9... 197 Αριθμητική Γραμμική Άλγεβρα... 197

12 Οδηγός στη Χρήση του Υπολογιστή 9.1 Πράξεις με ανύσματα στο καρτεσιανό σύστημα... 198 9.2 Πράξεις με μήτρες... 200 9.3 Λύση γραμμικών συστημάτων... 211 9.4 Ιδιοτιμές και Ιδιοανύσματα... 214 ΚΕΦΑΛΑΙΟ 10... 217 Αριθμητική Ανάλυση... 217 10.1 Πολυώνυμα... 217 10.1.1 Συμβολισμός πολυωνύμων... 217 10.1.2 Άθροισμα πολυωνύμων... 218 10.1.3 Γινόμενο πολυωνύμων... 219 10.1.4 Ρίζες πολυωνύμου... 219 10.1.5 Υπολογισμός τιμών πολυωνύμου... 221 10.1.6 Παράγωγοι και ολοκληρώματα πολυωνύμων... 221 10.1.7 Προσαρμογή (Fitting) δεδομένων με πολυώνυμο... 222 10.2 Εντοπισμός ρίζας συνάρτησης... 224 10.3 Τοπικά ακρότατα συναρτήσεων... 226 10.3.2 Τοπικό μέγιστο... 227 10.4 Αριθμητική ολοκλήρωση... 228 10.4.1 Υπολογισμός ολοκληρώματος από δεδομένα... 228 10.4.2 Υπολογισμός ολοκληρώματος συνάρτησης... 229 10.5 Παρεμβολή (Interpolation) σε μια διάσταση... 230 10.5.1 Τμηματικά πολυώνυμα παρεμβολής... 234 10.5.2 Υπολογισμός παραγώγων και ολοκληρωμάτων... 235 10.6 Διακριτός μετασχηματισμός Fourier... 238 10.6.1 Διεκπεραίωση του μετασχηματισμού... 239 10.6.2 Εφαρμογή... 240 10.7 Αριθμητικές λύσεις διαφορικών εξισώσεων... 242 ΜΕΡΟΣ Β... 243 ΟΠΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ... 243

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 13 ΚΕΦΑΛΑΙΟ 11... 245 Προσομοίωση Συστημάτων με το SIMULINK... 245 11.1 Εισαγωγικές έννοιες... 246 11.1.1 Ολοκλήρωση ημιτονοειδούς σήματος... 247 11.2 Συστήματα με συνεχή χρόνο... 254 11.2.1 Προσομοίωση εκφόρτισης πυκνωτή... 256 11.2.2 Προσομοίωση αρμονικού ταλαντωτή με τριβές... 259 11.2.3 Προσομοίωση εκκρεμούς-υπεραγώγιμων επαφών Josephson... 261 11.3 Γραμμικά συστήματα με συνεχή χρόνο... 266 11.3.1 Προσομοίωση αρμονικού ταλαντωτή με τριβές... 269 11.4 Συστήματα με διακριτό χρόνο... 273 11.4.1 Προσομοίωση αποπληρωμής δανείου... 274 11.4.2 Προσομοίωση λογιστικής απεικόνισης... 276 11.5 Γραμμικά συστήματα με διακριτό χρόνο... 278 11.5.1 Προσομοίωση γραμμικών εξισώσεων διαφορών... 279 ΚΕΦΑΛΑΙΟ 12... 283 Διαχείριση του SIMULINK... 283 12.1 Αποσφαλμάτωση (debugging) προγραμμάτων... 283 12.2 Συμπληρωματικά δομικά στοιχεία του SIMULINK... 286 12.2.1 Δομικά στοιχεία Goto και From... 286 12.2.2 Δομικά στοιχεία σχεσιακών τελεστών... 289 12.2.3 Δομικά στοιχεία λογικών τελεστών... 291 12.3 Διαχείριση του SIMULINK μέσα από το MATLAB... 292 12.3.1 Προσδιορισμός παραμέτρων ενός μοντέλου... 292 12.3.2 Προσδιορισμός παραμέτρων προσομοίωσης... 294 12.3.3 Τροποποίηση παραμέτρων προσομοίωσης... 296 12.3.4 Εκτέλεση προσομοίωσης μέσα από το MATLAB... 296 12.4 Εργαλεία ανάλυσης συστήματος... 298 12.4.1 Προσδιορισμός γραμμικής συνιστώσας συστήματος... 298 12.4.2 Προσδιορισμός σημείων ισορροπίας συστήματος... 301

14 Οδηγός στη Χρήση του Υπολογιστή ΚΕΦΑΛΑΙΟ 13... 307 Πρόσθετα εργαλεία του SIMULINK... 307 13.1 Κλήσεις εντολών του MATLAB... 307 13.2 Ενσωματώνοντας κώδικα του MATLAB... 310 13.3 Δημιουργία νέων δομικών στοιχείων... 314 13.3.1 Με την τεχνική της ενθυλάκωσης (encapsulating)... 314 13.3.2 Με τη χρήση δομικού στοιχείου-πλαισίου... 318 13.4 Δημιουργία μάσκας... 321 13.4.1 Πληροφορίες για το στοιχείο... 321 13.4.2 Παράμετροι του στοιχείου... 323 13.4.3 Προκαθορισμός της τιμής των παραμέτρων... 325 13.4.4 Βλέποντας κάτω από ή αφαιρώντας τη μάσκα... 326 13.5 Δημιουργία βιβλιοθήκης... 326 13.6 Εφαρμογές... 327 13.6.1 Παράδειγμα 1... 328 13.6.2 Παράδειγμα 2... 330 Ευρετήριο... 333

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 15 Οδηγός στη Χρήση του Υπολογιστή Πρόλογος Η ανάπτυξη των τεχνολογιών της Πληροφορικής έχει επιφέρει δραματικές αλλαγές στην εκπαίδευση, και ο τρόπος διδασκαλίας των μαθημάτων έχει επηρεαστεί σημαντικά από αυτές. Ο παραδοσιακός π.χ. τρόπος διδασκαλίας της Φυσικής, στον οποίο αντιμετωπίζονται προβλήματα που μπορούν να επιλυθούν με αυστηρά μαθηματικό τρόπο, έχει συμπληρωθεί έτσι, ώστε να αντιμετωπίζονται και προβλήματα, η λύση των οποίων μπορεί να προσεγγιστεί μόνο αριθμητικά με τη χρήση ηλεκτρονικών υπολογιστών. Επίσης, με τα υπάρχοντα προγράμματα υπάρχει η δυνατότητα γραφικής αναπαράστασης των αποτελεσμάτων, και έτσι παρέχεται μια εποπτική εικόνα που βοηθά στη σύνδεση της λύσης με τη φυσική πραγματικότητα. Κατά συνέπεια, η εξοικείωση του σύγχρονου εκπαιδευτικού με τεχνολογίες χρήσης της Πληροφορικής στην εκπαιδευτική διαδικασία αποτελεί απαίτηση μιας ήδη διαμορφωμένης πραγματικότητας. Βασικό συστατικό των απαιτούμενων δεξιοτήτων Πληροφορικής είναι η γνώση σύγχρονων γλωσσών προγραμματισμού. Σε γενικές γραμμές, η σύγχρονη προσέγγιση στο θέμα αυτό είναι να επιλέγονται προγράμματα που να είναι φιλικά στον χρήστη, ώστε να γίνονται ελκυστικά στο σύνολο σχεδόν των φοιτητών του κλάδου και όχι μόνο σε μια μικρή μειονότητα από αυτούς, που τυχαίνει να έχουν ιδιαίτερο ενδιαφέρον για υπολογιστές. Τα προγράμματα που ικανοποιούν το παραπάνω κριτήριο μπορούν σε γενικές γραμμές να χωριστούν σε δύο κατηγορίες: σε αυτά που κατά βάση είναι προγράμματα αριθμητικού προγραμματισμού και σε αυτά που είναι συμβολικού (αλγεβρικού). Ο στόχος των δύο αυτών κατηγοριών είναι διαφορετικός, γεγονός που καθιστά αναγκαία την εκμάθηση τουλάχιστον ενός προγράμματος από κάθε κατηγορία. Στόχος των προγραμμάτων

16 Οδηγός στη Χρήση του Υπολογιστή συμβολικού προγραμματισμού είναι οι αναλυτικές πράξεις, ενώ των αριθμητικών οι δεκαδικές. Από τα πιο διαδεδομένα προγράμματα αριθμητικού κατά βάση προγραμματισμού είναι το πρόγραμμα MATLAB, ενώ συμβολικού η Mathematica. Στο παρόντα τόμο, γίνεται εισαγωγή στα βασικά στοιχεία του προγράμματος MATLAB. Στο πρώτο κεφάλαιο του τόμου, παρουσιάζονται τα εισαγωγικά βήματα για τη λειτουργία του προγράμματος. Επίσης, παρατίθενται οι τρόποι εκτέλεσης των βασικών αριθμητικών πράξεων, ο τρόπος χρήσης των εσωτερικών συναρτήσεων του προγράμματος και ο τρόπος δημιουργίας και χρήσης των Μ-αρχείων εντολών, που είναι ένας από τους βασικούς τρόπους σύνταξης προγραμμάτων στο προγράμμα. Στο δεύτερο κεφάλαιο, γίνεται εισαγωγή στις συμβολοσειρές και στον τρόπο διαχείρισής τους. Στο τρίτο κεφάλαιο, εισάγεται η έννοια της λίστας, που είναι ένα από τα βασικότερα εργαλεία του προγράμματος. Εκτίθεται ο τρόπος σύνταξης και διαχείρισης μιας λίστας, καθώς και μερικές εντολές για τη δημιουργία ειδικών λιστών. Τέλος, παρουσιάζονται οι πράξεις, που εκτελούνται με τους κανόνες των λογιστικών φύλλων. Στο τέταρτο κεφάλαιο, παρουσιάζονται τα βασικά σημεία των μεθόδων προγραμματισμού με το πρόγραμμα, που αφορούν τόσο στη σύνταξη διαδικαστικών εντολών όσο και στη σύνταξη και στη χρήση λογικών εντολών. Στο πέμπτο κεφάλαιο, προβάλλονται οι κανόνες σύνταξης εξωτερικών συναρτήσεων και η τεχνική χρήσης οδηγών για τη διαχείριση συναρτήσεων. Αυτή αποτελεί γενική τεχνική που χρησιμοποιεί το πρόγραμμα και εφαρμόζεται σε πολλές περιπτώσεις, όπως π.χ. είναι η διαχείριση μιας συνάρτησης, μιας γραφικής παράστασης, μιας εικόνας κλπ.. Στο έκτο κεφάλαιο, επιχειρείται εισαγωγή στις δισδιάστατες γραφικές παραστάσεις δεδομένων και συναρτήσεων, και παρουσιάζονται οι βασικές εντολές διαμόρφωσής τους. Ειδικά αξιοποιείται η τεχνική χρήσης οδηγών για τη διαμόρφωση γραφικών παραστάσεων. Στο έβδομο κεφάλαιο, πραγματοποιείται ανασκόπηση της διαχείρισης του MATLAB. Παρουσιάζονται, επίσης, τρόποι εισαγωγής και εξαγωγής

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 17 δεδομένων, και, τέλος, προβάλλονται εντολές ελέγχου της λειτουργίας και της απόδοσης του προγράμματος. Στο όγδοο κεφάλαιο, γίνεται εισαγωγή στις τρισδιάστατες γραφικές παραστάσεις και στις βασικές εντολές διαμόρφωσής τους. Στο ένατο κεφάλαιο, γίνεται εισαγωγή στην εκτέλεση πράξεων της γραμμικής Άλγεβρας με το πρόγραμμα, δηλαδή πράξεων με ανύσματα και μήτρες, λύση γραμμικών συστημάτων και υπολογισμό ιδοτιμών και ιδιοσυναρτήσεων τετραγωνικών πινάκων. Στο δέκατο κεφάλαιο, παρουσιάζονται εφαρμογές του προγράμματος στην αριθμητική ανάλυση συναρτήσεων μιας μεταβλητής, δηλαδή την εκτέλεση πράξεων με πολυώνυμα, τον υπολογισμό ριζών τους και τη χρήση τους σε διαδικασίες προσαρμογής, καθώς και τον υπολογισμό ριζών και ακρότατων συναρτήσεων οποιασδήποτε μορφής. Παρατίθενται, επίσης, εφαρμογές που αφορούν στον υπολογισμό ολοκληρωμάτων, στην παρεμβολή δεδομένων και στον υπολογισμό του διακριτού μετασχηματισμού Fourier. Στο ενδέκατο κεφάλαιο, πραγματοποιείται εισαγωγή στο SIMULINK, που είναι ένα συνοδευτικό πρόγραμμα του MATLAB και αξιοποιείται για την προσομοίωση δυναμικών συστημάτων. Στο γραφικό αυτό περιβάλλον για τον προγραμματισμό χρησιμοποιούνται έτοιμα δομικά στοιχεία, που αντιστοιχούν σε υποπρογράμματα των συνηθισμένων γλωσσών προγραμματισμού. Δίνονται εφαρμογές του προγραμματισμού αυτού σε απλά δυναμικά συστήματα. Στο δωδέκατο κεφάλαιο, γίνεται εισαγωγή στη διαχείριση προγραμμάτων προσομοίωσης του SIMULINK, όπως π.χ. η αποσφαλμάτωσή τους και η διαχείρισή τους μέσα από το παράθυρο διαχείρισης του MATLAB. Τέλος, στο δέκατο τρίτο κεφάλαιο παρουσιάζονται μερικά πρόσθετα εργαλεία του SIMULINK, όπως η κατασκευή νέων δομικών στοιχείων, η δημιουργία μάσκας των στοιχείων αυτών για την εύκολη διαχείρισή τους κλπ.. Τονίζεται δε ότι στόχος του αριθμητικού προγραμματισμού είναι οι δεκαδικές-προσεγγιστικές πράξεις. Επίσης αναφέρεται ότι, εξαιτίας της γρήγορης ανάπτυξης των υπολογιστών, όλες οι γλώσσες προγραμματισμού

18 Οδηγός στη Χρήση του Υπολογιστή εξελίσσονται υποχρεωτικά με την εισαγωγή νέων δυνατοτήτων στις νεότερες εκδόσεις τους. Επειδή χρησιμοποιείται κυρίως το MATLAB για την εισαγωγή στον αριθμητικό προγραμματισμό, οι εντολές συντάσσονται όπως γίνεται σε αυτό. Θα πρέπει όμως να τονιστεί ότι οι εντολές δεν συντάσσονται με τον ίδιο τρόπο σε όλα τα προγράμματα αριθμητικού προγραμματισμού. Θεσσαλονίκη, 2012 Γεώργιος Θεοδώρου Νίκη Θεοδώρου

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 19 ΜΕΡΟΣ Α ΑΡΙΘΜΗΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

20 ΑΡΙΘΜΗΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 21 ΚΕΦΑΛΑΙΟ 1 Εισαγωγικές Έννοιες 1.1 Εισαγωγή Μετά την αλματώδη ανάπτυξη των ηλεκτρονικών υπολογιστών και την ευρεία χρήση τους σε όλα σχεδόν τα πεδία, καθίσταται πλέον επιτακτική η γνώση γλωσσών προγραμματισμού. Η επιλογή τους αποτελεί διαδικασία για την οποία υπάρχουν πολλές και αντικρουόμενες απόψεις η απάντηση στο ερώτημα αυτό εξαρτάται σε μεγάλο βαθμό και από το επιστημονικό πεδίο στο οποίο αυτές θα χρησιμοποιηθούν. Σε γενικές γραμμές, η σύγχρονη προσέγγιση στο θέμα είναι να επιλέγονται προγράμματα που είναι φιλικά στον χρήστη, έτσι ώστε να γίνονται ελκυστικά στο σύνολο σχεδόν των φοιτητών του κλάδου και όχι μόνο σε μια μικρή μειονότητα από αυτούς, που τυχαίνει να έχουν ιδιαίτερο ενδιαφέρον για τους υπολογιστές. Τα προγράμματα που ικανοποιούν το παραπάνω κριτήριο μπορούν να χωριστούν γενικά σε δύο κατηγορίες: σε αυτά που στη βάση τους είναι προγράμματα αριθμητικού προγραμματισμού και σε αυτά που είναι συμβολικού. Ο στόχος των δύο αυτών κατηγοριών είναι διαφορετικός, πράγμα που καθιστά αναγκαία την εκμάθηση τουλάχιστον ενός προγράμματος από την καθεμιά κατηγορία. Κύριος στόχος των προγραμμάτων συμβολικού προγραμματισμού είναι οι αλγεβρικές και οι αναλυτικές πράξεις, για την εκτέλεση των οποίων χρησιμοποιούνται ρητοί αριθμοί, δηλαδή αριθμοί της μορφής p/q με p και q ακέραιους αριθμούς. Όταν όμως ένας αριθμός δεν μπορεί να παρασταθεί ως ρητός, εύρημα των Πυθαγορίων, τότε η αναπαράστασή του γίνεται με σύμβολο, π.χ. 2.

22 Εισαγωγικές Έννοιες Σε αντίθεση, τα προγράμματα αριθμητικού προγραμματισμού χρησιμοποιούν δεκαδικούς αριθμούς. Ένα βασικό στοιχείο που διαφοροποιεί τις γλώσσες αριθμητικού προγραμματισμού είναι ότι δεν αποδέχονται παραμέτρους χωρίς αρηθμητική τιμή, όπως συμβαίνει στην Άλγεβρα. Ένα αριθμητικό πρόγραμμα είναι γενικά ταχύτερο, αλλά, για να εκτελέσουμε συμβολικές πράξεις, πρέπει να χρησιμοποιήσουμε μια συμβολική γλώσσα. Τελικά ο αριθμητικός προγραμματισμός υποστηρίζει την Αριθμητική Ανάλυση, και ο συμβολικός προγραμματισμός την Ανάλυση. Από τα πιο διαδεδομένα προγράμματα αριθμητικού προγραμματισμού είναι τα προγράμματα MATLAB και Octave, ενώ του συμβολικού η Mathematica. Τέλος, πρέπει να αναφερθεί ότι στα προγράμματα αυτά υπάρχει πολύ μεγάλη ποικιλία εσωτερικών συναρτήσεων που προσφέρονται για άμεση χρήση προς εκτέλεση συγκεκριμένων υπολογισμών. Πρέπει, όμως, να τονιστεί ότι τα προγράμματα αυτά δεν αποτελούν απλώς συλλογές έτοιμων συναρτήσεων, αλλά πλήρεις γλώσσες προγραμματισμού, στις οποίες υπάρχει η δυνατότητα ανάπτυξης νέων συναρτήσεων και προγραμμάτων, που δεν έχουν εκ των προτέρων προβλεφθεί, για την εκτέλεση υπολογισμών της επιλογής του χρήστη. Σκοπός του παρόντος τόμου είναι να ενημερώσει τον αναγνώστη για τις δυνατότητες και τη χρησιμότητα αριθμητικών γλωσσών προγραμματισμού. Παρακάτω, όπου αναφέρεται «το πρόγραμμα», εννοείται ότι μπορεί κανείς να χρησιμοποιήσει το πρόγραμμα που τον ενδιαφέρει, π.χ. MATLAB ή Octave. Η έκδοση που θα χρησιμοποιηθεί είναι αυτή που εγκαθίσταται στο λειτουργικό σύστημα των WINDOWS. Οι εκδόσεις που εγκαθίστανται πάνω σε άλλα λειτουργικά συστήματα ανταποκρίνονται σε γενικές γραμμές με παρόμοιο τρόπο. Περί συμβατότητας μεταξύ των δύο προγραμμάτων. Στην αριθμητική γλώσσα MATLAB, υπάρχει η δυνατότητα να γίνεται η διαχείρισή της και με την αξιοποίηση του «ποντικιού», αλλά μπορεί επίσης να πραγματοποιείται με εντολές που δίνονται μόνο με τη χρήση του πληκτρολογίου. Από την άλλη

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 23 μεριά, για τη γλώσσα Octave η διαχείριση επιτυγχάνεται γενικά με τη χρήση του πληκτρολογίου και με εντολές που δίνονται με αυτό, δηλαδή χωρίς τη χρήση του «ποντικιού». Όσον αφορά στην τελευταία αυτή διαδικασία, οι δύο γλώσσες προγραμματισμού είναι γενικά συμβατές μεταξύ τους, δηλαδή προγραμματίζονται με τον ίδιο τρόπο και με τις ίδιες εντολές, τα δε αρχεία που δημιουργούνται μπορούν να χρησιμοποιηθούν και από τις δύο αυτές γλώσσες. Επισημαίνεται, όμως, ότι υπάρχουν και μερικές περιπτώσεις, στις οποίες τα δύο αυτά προγράμματα δεν είναι συμβατά. Αυτές δεν θα τις παρουσιάσουμε στο παρόν βιβλίο. Πληροφορίες για τις συγκεκριμένες περιπτώσεις μπορούν να βρεθούν στο αντίστοιχο Help. Εξάλλου, αυτές γίνονται σπανιότερες με τις νεότερες εκδόσεις των προγραμμάτων. Τίθεται, γενικά, το ερώτημα τι γίνεται με περιπτώσεις, όπου θέλουμε να χρησιμοποιήσουμε το «clipboard» και το «ποντίκι», όπως π.χ. συμβαίνει στην περίπτωση ενός κειμενογράφου. Οι περιπτώσεις αυτές συνήθως αντιμετωπίζονται στο Octave, με το να καλείται ένα βοηθητικό πρόγραμμα, το οποίο να ανοίγει ένα παράθυρο, μέσα στο οποίο να μπορεί να χρησιμοποιηθεί το «clipboard» και το «ποντίκι», όπως π.χ. γίνεται με έναν απλό κειμενογράφο. Εκκίνηση του προγράμματος. Η εκκίνηση του προγράμματος πραγματοποιείται με πάτημα του αριστερού πλήκτρου του «ποντικιού» πάνω στο αντίστοιχο εικονίδιο. Παράθυρο διαχείρισης (Command Window) του προγράμματος. Με την εκκίνηση του προγράμματος, εμφανίζεται το παράθυρο διαχείρισης του (Command Window). Μέσα στο παράθυρο αυτό, γράφονται οι εντολές, δίνεται η εντολή εκτέλεσής τους, και εμφανίζονται τα αποτελέσματα των πράξεων, δηλαδή λαμβάνουν χώρα όλες οι αλληλεπιδράσεις του χρήστη με το πρόγραμμα. Βοήθεια. Ο στόχος της βοήθειας είναι η παροχή πληροφοριών για τη λειτουργία του κάθε προγράμματος. Ο τρόπος αξιοποίησής του, μέσα από το παράθυρο λειτουργίας του προγράμματος, συνίσταται στη χρήση της εντολής: help <εντολή> Enter

24 Εισαγωγικές Έννοιες Με τον τρόπο αυτόν, παίρνουμε πληροφορίες για οποιαδήποτε εντολή. Σε περίπτωση όπου η αποδιδόμενη πληροφορία δεν μπορεί να χωρέσει σε μια μόνο σελίδα, παρουσιάζεται σε περισσότερες. Στο κάτω μέρος της σελίδας, δίνεται η πληροφορία (για την περίπτωση του Octave), για τη μεταφορά μας στις επόμενες σελίδες. Βασικός χώρος λειτουργίας (Workspace) του προγράμματος. Ο χώρος διεκπεραίωσης των πράξεων είναι ο βασικός χώρος λειτουργίας του προγράμματος (Workspace). Ο χώρος αυτός βρίσκεται στη μνήμη του υπολογιστή μέσα σε αυτόν εκτελούνται οι πράξεις και σε αυτόν διατηρούνται όλα τα αποτελέσματά τους, με σκοπό να μπορούν να χρησιμοποιηθούν σε επόμενες πράξεις. Τρέχουσα διεύθυνση εργασίας: Κάθε πρόγραμμα χρησιμοποιεί μια διεύθυνση, η οποία είναι άμεσα προσβάσιμη από αυτό και χαρακτηρίζεται επίσης ως η «τρέχουσα διεύθυνση». Η αρχική διεύθυνση εργασίας προσδιορίζεται από το εικονίδιο εκκίνησης, στο οποίο με δεξιό κλικ του «ποντικιού» ανοίγει ένα παράθυρο, μέσα στο οποίο καθορίζεται η διεύθυνση αυτή. Μετά την εκκίνηση του προγράμματος, η διεύθυνση εργασίας μπορεί να αλλάξει με τη χρήση της εντολής cd. Λεπτομέρειες της διαδικασίας αυτής μπορούν να βρεθούν με τη χρήση της εντολής Help του προγράμματος. Έξοδος από το πρόγραμμα: Η έξοδος από το πρόγραμμα πραγματοποιείται με την επιλογή μιας από τις εντολές exit ή quit, που δίνεται με το πληκτρολόγιο, μέσα στο παράθυρο λειτουργίας του. 1.2 Βασικές πράξεις Οι βασικές πράξεις στα προγράμματα και στα σύμβολα (τελεστές) που χρησιμοποιούνται για την εκτέλεσή τους είναι οι γνωστές πράξεις από την αριθμητική, οι οποίες δηλώνονται παρακάτω: Αριθμητικοί τελεστές Πράξη Τελεστές σύκρισης Πράξη + συν == ίσον σύγκρισης - πλην < μικρότερο * επί <= μικρότερο ή ίσο

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 25 / ή \ διά > μεγαλύτερο ^ δύναμη >= μεγαλύτερο ή ίσο = ίσον ανάθεσης ~= όχι ίσο Με τους αριθμητικούς τελεστές, εκτελούνται οι γνωστές από την αριθμητική πράξεις, ενώ με τους τελεστές σύγκρισης γίνεται σύγκριση μεταξύ δύο ποσοτήτων. (Προσοχή, ο τελεστής σύκρισης της ισότητας δηλώνεται με διπλό ίσον, ==). Η σημασία των τελεστών αυτών και ο τρόπος χρήσης τους, με αντίστοιχα παραδείγματα εφαρμογής τους, δίνεται στις επόμενες παραγράφους. 1.2.1 Αριθμητικές πράξεις Με την έναρξη του προγράμματος, όπως και μετά τη διεκπεραίωση κάθε μιας εντολής, εμφανίζεται στην οθόνη το σύμβολο, (διπλό ή απλό), >>, που δηλώνει ότι το πρόγραμμα είναι έτοιμο να δεχτεί για εκτέλεση την επόμενη εντολή. Αφού γράψουμε την εντολή, χρησιμοποιώντας πάντοτε αριθμητικούς τελεστές, για να δηλωθούν οι πράξεις μεταξύ των αριθμών, από αυτούς που αναφέραμε στην παράγραφο 1.2, εκτελούμε την πράξη με το πάτημα του πλήκτρου Enter, π.χ. >> 2+7 Enter Μετά την εκτέλεση της εντολής, εμφανίζεται στην οθόνη το παρακάτω μήνυμα: 9 που δηλώνει την απάντηση (answer) του προγράμματος στην εντολή που δόθηκε. Σχόλιο: Οι αριθμοί νοούνται ως δεκαδικοί, ακόμη και όταν η υποδιαστολή δεν εμφανίζεται στην οθόνη.

26 Εισαγωγικές Έννοιες Παραδείγματα >> 8-4 4 >> 3*62 186 >> 24/7 3.4286 >> 2^3.1 8.5742 >> 231/27.5 8.4000 >> (2+3.7/6.5)/(3^3.6+1/3) 0.0489 Στα προγράμματα αυτά, μπορούμε να εκτελέσουμε τη διαίρεση και με το σύμβολο \, γράφοντας δηλαδή πρώτα τον διαιρέτη και μετά τον διαιρετέο, όπως φαίνεται στο επόμενο παράδειγμα: >> (3^3+1/3)\(2+3/6) 0.0915 Σχόλιο: Για αριθμητικές πράξεις, το αποτέλεσμα της διαίρεσης είναι το ίδιο, είτε γίνει με τη χρήση του συμβόλου / είτε του \. Δεν συμβαίνει, όμως, το ίδιο και στις πράξεις με πίνακες, όπως θα δούμε σε άλλο κεφάλαιο.

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 27 Προτεραιότητα πράξεων Το πρόγραμμα εκτελεί τις αριθμητικές πράξεις με τη χρήση δεκαδικών αριθμών και δίνει τα αποτελέσματα επίσης σε μορφή δεκαδικού αριθμού. Για τη διατύπωση της εντολής, μπορούμε να χρησιμοποιούμε παρενθέσεις, οι οποίες ομαδοποιούν τις πράξεις, όπως ακριβώς συμβαίνει και στα Μαθηματικά. Όταν δεν υπάρχουν παρενθέσεις, οι πράξεις που περιέχονται σε μια εντολή εκτελούνται με προτεραιότητα, από αριστερά προς τα δεξιά προηγείται η εκτέλεση των δυνάμεων, μετά και σε ίση προτεραιότητα ακολουθούν οι πολλαπλασιασμοί και οι διαιρέσεις και, τέλος, γίνονται τα αθροίσματα και οι διαφορές. Μιγαδικοί αριθμοί Με το πρόγραμμα μπορούμε, επίσης, να εκτελέσουμε πράξεις με μιγαδικούς αριθμούς. Για το σύμβολο της μιγαδικής μονάδας, 1, χρησιμοποιείται είτε το γράμμα του αγγλικού αλφαβήτου i είτε το j, π.χ. >> (2.8+5.9*i)/(37+71.2i) 0.0813 + 0.0029i >> (2.8+5.9*j)/(37+71.2j) 0.0813 + 0.0029i >> (2+5*i)^5/(3+11*i)^3-1.3757 + 2.7283i Σχόλια: (1) Ας σημειωθεί ότι το σύμβολο της υποδιαστολής είναι, σύμφωνα με τον διεθνή συμβολισμό, η τελεία και όχι το κόμμα.

28 Εισαγωγικές Έννοιες (2) Όταν μια εντολή έχει συνταχθεί με λάθος τρόπο, τότε το πρόγραμμα απαντά με διαγνωστικό μήνυμα που σκοπό έχει να μας βοηθήσει στη διόρθωσή της, π.χ. >> (2+3.7/6.5)/(3^3.6+1/3??? (2+3.7/6.5)/(3^3.6+1/3 Error: Expression or statement is incorrect--possibly unbalanced (, {, or [. (3) Οι εντολές που εκτελούνται, κρατούνται στη μνήμη στο αρχείο καταχώρισης εντολών (Command History) του προγράμματος, και έτσι έχουμε την ευχέρεια να επαναφέρουμε για εκτέλεση μια εντολή που προγενέστερα έχει εκτελεστεί, με τη χρήση των πλήκτρων και. Μετά την επαναφορά μιας εντολής μέσα στο παράθυρο διαχείρισης, έχουμε τη δυνατότητα πρώτα να την τροποποιήσουμε και μετά να την εκτελέσουμε. (4) Οι δεκαδικοί αριθμοί καταχωρίζονται στη μνήμη του προγράμματος με το πρόσημό τους, δηλαδή με δεκαέξι κύρια ψηφία και τη δύναμη του εκθέτη, και εκτελούνται με την ακρίβεια αυτή. 1.2.2 Πράξεις σύγκρισης Εντολές λογικής Οι πράξεις Λογικής εκτελούνται με τη χρήση τελεστών σύγκρισης. Στην περίπτωση αυτή, γίνεται σύγκριση μεταξύ δύο αριθμητικών ποσοτήτων, και το αποτέλεσμα της πράξης είναι είτε το ένα (όταν η σχέση είναι αληθής) είτε το μηδέν (όταν η σχέση δεν είναι αληθής). Οι εντολές που δημιουργούνται με αυτόν τον τρόπο καλούνται και εντολές Λογικής. Παραδείγματα εντολών Λογικής είναι οι παρακάτω: >> 7>3 1 >> 7<=4 0

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 29 >> 2^3==8 1 >> 3^2~=9 0 1.2.3 Εντολή απόκρυψης Όταν δοθεί προς εκτέλεση μια εντολή που τελειώνει με το σύμβολο του αγγλικού αλφαβήτου ;, που είναι ο τελεστής απόκρυψης του αποτελέσματος, τότε η εντολή εκτελείται και το αποτέλεσμα αποθηκεύεται στη μνήμη του συστήματος, αλλά δεν εμφανίζεται στην οθόνη, π.χ. >> (2.6+1/3.3)*(37+i*82.6)/(23/47+7.3*i/73.9); Η επιλογή αυτή είναι πολύ χρήσιμη σε περιπτώσεις, όπου το αποτέλεσμα είναι εκτεταμένο και δεν θέλουμε να εμφανιστεί στην οθόνη, όπως π.χ. στην περίπτωση ενός πίνακα μεγάλων διαστάσεων. Σχόλιο: Στα επόμενα παραδείγματα, παραλείπεται χάριν συντομίας το σύμβολο προτροπής, >>, που εμφανίζεται στην αρχή κάθε εντολής. 1.3 Μαθηματικές σταθερές και παράμετροι Στο πρόγραμμα, υπάρχει ένας περιορισμένος αριθμός αριθμητικών τιμών που αφορούν σε μαθηματικές σταθερές, καταχωρισμένων ήδη στο πρόγραμμα, και με προκαθορισμένη την αριθμητική τους τιμή. Θα αναφέρουμε τις πιο χρήσιμες από αυτές: (1) Η μαθηματική σταθερά π, 3.14159.... Η ποσότητα αυτή έχει καταχωριστεί στην παράμετρο pi και εισάγεται στις αντίστοιχες πράξεις με τη χρήση της παραμέτρου αυτής. Δηλαδή, πράξεις στις οποίες περιέχεται η σταθερή pi εκτελούνται με την απόδοση σε αυτήν της αριθμητικής της τιμής, π.χ. pi^2

30 Εισαγωγικές Έννοιες 9.8696 pi*2.5^2 19.6350 (2) Μια άλλη πολύ χρήσιμη μαθηματική σταθερά είναι η ποσότητα, η οποία είναι καταχωρισμένη στην παράμετρο inf: 1/inf 0 1/0 Warning: Divide by zero. Inf (3) Τέλος, αναφέρουμε την παράμετρο NaN (Not a Number), που χρησιμοποιείται, για να δηλώσει ότι το αποτέλεσμα μιας πράξης δεν είναι αριθμός, όπως π.χ. είναι το αποτέλεσμα σε πράξεις της μορφής 0/0, / : 0/0 Warning: Divide by zero. NaN inf/inf NaN Εκτός από τις παραπάνω μαθηματικές σταθερές, έχουν εισαχθεί στο πρόγραμμα και μερικές παράμετροι που σχετίζονται με τον τρόπο δόμησής του. Οι ποσότητες αυτές μπορούν να χρησιμοποιηθούν, όπως και οι μαθηματικές σταθερές, με τη δήλωση του ονόματός τους. Οι πιο χρήσιμες από αυτές είναι:

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 31 (1) Η παράμετρος realmax, η οποία δηλώνει τον μεγαλύτερο θετικό αριθμό που μπορεί να χρησιμοποιηθεί στο πρόγραμμα για πράξεις: realmax 1.7977e+308 Ο συμβολισμός e+308 δηλώνει τον εκθέτη (exponent) με βάση το δέκα, δηλαδή 308 e 308 10 για την παραπάνω περίπτωση. (2) Η παράμετρος realmin, η οποία δηλώνει τον μικρότερο θετικό αριθμό που μπορεί να χρησιμοποιηθεί στο πρόγραμμα για πράξεις: realmin 2.2251e-308 1.3.1 Εισαγωγή νέων παραμέτρων Εντολή ανάθεσης Στο πρόγραμμα, όπως και στα περισσότερα προγράμματα, μπορεί ο χρήστης να ορίσει τις παραμέτρους της αρεσκείας του. Η εισαγωγή τους γίνεται με τον καθορισμό του ονόματός τους και την ταυτόχρονη απόδοση σε αυτούς συγκεκριμένης αριθμητικής τιμής, που πραγματοποιείται με την εντολή της ανάθεσης, αφού χρησιμοποιηθεί το σύμβολο της ισότητας, =, name = value Το όνομα, name, μιας παραμέτρου μπορεί να περιέχει ένα ή περισσότερα γράμματα ή αριθμούς, αλλά το πρώτο στοιχείο πρέπει απαραίτητα να είναι γράμμα. Επίσης, μέσα στο όνομα δεν επιτρέπεται να περιλαμβάνονται κενά. Τέλος, η ποσότητα, value, μπορεί να είναι είτε αριθμός είτε συμβολοσειρά (δηλαδή κείμενο). Στην περίπτωση της συμβολοσειράς, το κείμενο, που αποδίδεται σε αυτήν τοποθετείται μέσα σε εισαγωγικά του αγγλικού αλφαβήτου. Περισσότερες πληροφορίες για συμβολοσειρές δίνονται στο κεφάλαιο 2.

32 Εισαγωγικές Έννοιες Οι πρόσθετες παράμετροι, που εισάγονται με τον παραπάνω τρόπο, ισχύουν μόνο για την τρέχουσα λειτουργία του προγράμματος και χάνονται με τον τερματισμό της. Σε επόμενη εκτέλεση, θα πρέπει να οριστούν ξανά, σε αντίθεση με τις μόνιμες παραμέτρους που συναντήσαμε στην προηγούμενη παράγραφο. Παραδείγματα x=2.1, y=7/3 x = 2.1000 y = 2.3333 z=x*y z = 4.9000 x*y*sin(z) -4.8140 Στο παραπάνω παράδειγμα ορίστηκαν οι παράμετροι x και y, κατόπιν η παράμετρος z, και, τέλος, αξιοποιήθηκαν όλες για την εκτέλεση ενός υπολογισμού. 1.4 Εσωτερικές συναρτήσεις Εκτός από τις αριθμητικές σταθερές, στο πρόγραμμα υπάρχει μια πολύ μεγάλη συλλογή εσωτερικών συναρτήσεων, που μπορούν να χρησιμοποιηθούν για εκτέλεση πράξεων. Ο γενικός τρόπος εκτέλεσης μιας συνάρτησης συνίσταται στην εντολή κλήσης της, με τη δήλωση του ονόματός της και την τοποθέτηση του ορίσματός της μέσα σε παρενθέσεις function(argument) που συνεπάγεται τον υπολογισμό της συνάρτησης function, με το όρισμά της ίσο με το argument.

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 33 Από τις εσωτερικές συναρτήσεις του προγράμματος, οι πιο χρήσιμες είναι οι παρακάτω: sqrt(x) Τετραγωνική ρίζα, x log(x) exp(x) cos(x), sin(x), tan(x) cosd(x), sind(x), tand(x) acos(x), asin(x), atan(x) acosd(x), asind(x), atand(x) cosh(x), sinh(x), tanh(x) αcosh(x), asinh(x), atanh(x) real(z), imag(z) angle(z) abs(z) conj(z) max([x, y, ]) min([x, y, ]) mod(x, y) rand, randn eps(x) Λογαριθμική συνάρτηση (Νεπέριος Λογάριθμος) x Εκθετική συνάρτηση, x e Τριγωνομετρικές συναρτήσεις (όρισμα σε ακτίνια) Τριγωνομετρικές συναρτήσεις (όρισμα σε μοίρες) Αντίστροφες τριγωνομετρικές συναρτήσεις (σε ακτίνα) Αντίστροφες τριγωνομετρικές συναρτήσεις (σε μοίρες) Υπερβολικές συναρτήσεις Αντίστροφες υπερβολικές συναρτήσεις Πραγματικό και φανταστικό μέρος ενός μιγαδικού αριθμού, z Γωνία φάσεως μιγαδικού αριθμού Απόλυτη τιμή (μέτρο) ενός αριθμού Συζυγής μιγαδικού αριθμού Το μεγαλύτερο στοιχείο της λίστας [x, y, ] Το μικρότερο στοιχείο της λίστας [x, y, ] Υπολογίζει το υπόλοιπο της ακέραιας διαίρεσης του x διά του y. Δημιουργία τυχαίων αριθμών. Αποδίδει την ακρίβεια με την οποία αποθηκεύεται ο αριθμός x.

34 Εισαγωγικές Έννοιες Παραδείγματα Μερικές εφαρμογές των παραπάνω συναρτήσεων δίνονται παρακάτω: sqrt(2) 1.4142 sin(3.1) 0.0416 acos(0.71) 0.7813 tan(pi/4) 1.0000 exp(1) 2.7183 mod(23,5) 3 Συνάρτηση rand Η συνάρτηση rand καλείται, συνήθως χωρίς όρισμα, και χρησιμοποιείται για τη δημιουργία τυχαίων πραγματικών αριθμών ομοιόμορφα κατανεμημένων στο διάστημα [0, 1]. Κάθε φορά που καλείται, παράγει και ένα διαφορετικό αριθμό, όπως και το ζάρι δίνει διαφορετικό αποτέλεσμα, κάθε φορά που ρίχνεται, π.χ. rand 0.9501

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 35 rand 0.2311 rand 0.6068 Συνάρτηση randn Η συνάρτηση randn μπορεί να κληθεί και χωρίς όρισμα και χρησιμοποιείται για τη δημιουργία τυχαίων πραγματικών αριθμών που ακολουθούν την κανονική κατανομή Ν(0, 1), δηλαδή με μέση τιμή της κατανομής ίση με το μηδέν και διασπορά τη μονάδα. Κάθε φορά που καλείται, παράγει και διαφορετικό αριθμό, όπως π.χ. randn -1.6656 randn 0.1253 randn 0.2877 Συνάρτηση eps(x) Η παράμετρος eps(x) προσδιορίζει την ακρίβεια με την οποία αποθηκεύεται ο αριθμός x στη μνήμη του υπολογιστή, όπως π.χ. eps(1) 2.2204e-016 eps(realmax)

36 Εισαγωγικές Έννοιες 1.9958e+292 eps(realmin) 4.9407e-324 eps(0) 4.9407e-324 1.4.1 Γενικές παρατηρήσεις Α) Όρισμα τριγωνομετρικών συναρτήσεων Ας σημειωθεί ότι στο πρόγραμμα ορίζονται τριγωνομετρικές συναρτήσεις με όρισμα τόσο σε ακτίνια όσο και σε μοίρες. Τα ονόματα, όμως, των τριγωνομετρικών αυτών συναρτήσεων είναι διαφορετικά. Στο όνομα της συνάρτησης προστίθεται το γράμμα d (degree), όταν το όρισμά της είναι σε μοίρες: sin(pi/7) 0.4339 cos(2*pi/7) 0.6235 tand(45) 1.0000 sind(135) 0.7071

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 37 Β) Πεζά και κεφαλαία γράμματα Τέλος, το πρόγραμμα ξεχωρίζει τα πεζά από τα κεφαλαία γράμματα, γεγονός που συνεπάγεται ότι, όταν πεζά γράμματα μιας εντολής γίνουν κεφαλαία (και αντίστροφα), τότε η εντολή αυτή είναι διαφορετική, π.χ. η εντολή Log(12.5) είναι διαφορετική από τη log(12.5) και δεν υπάρχει ως εσωτερική συνάρτηση: Log(2.2)??? Undefined function or method 'Log' for input arguments of type 'double'. log(2.2) 0.7885 1.5 Διαγραφή παραμέτρων Όλες οι παράμετροι που εισάγονται στο πρόγραμμα καταχωρίζονται στον χώρο λειτουργίας του προγράμματος (workspace) και μπορούν να χρησιμοποιηθούν στους επόμενους υπολογισμούς με τρόπο αντίστοιχο με αυτόν με τον οποίο χρησιμοποιούνται και οι συναρτήσεις. Έχουμε, επίσης, τη δυνατότητα να διαγράψουμε από τη μνήμη του υπολογιστή τόσο μεταβλητές όσο και συναρτήσεις, με τη χρήση της κατάλληλης εντολής. Οι εντολές που υπάρχουν για τον σκοπό αυτόν είναι οι ακόλουθες: clear Διαγράφει όλες τις μεταβλητές από το workspace clear variable_name Διαγράφει τη μεταβλητή variable_name clear global Διαγράφει όλες τις global μεταβλητές clear function Διαγράφει όλες τις συναρτήσεις clear all Διαγράφει όλες τις μεταβλητές και όλες τις μορφοποιημένες συναρτήσεις 1.6 Σύνθετες εντολές Μέχρι τώρα, αντιμετωπίσαμε απλές εντολές, με καθεμιά από αυτές να γράφεται σε μια μόνο γραμμή. Έχουμε, όμως, τη δυνατότητα να συντάξουμε

38 Εισαγωγικές Έννοιες εντολές που δεν μπορούν να αποδοθούν με μια μόνο γραμμή ή να δώσουμε ταυτόχρονα για εκτέλεση περισσότερες από μια εντολές. Στην πρώτη περίπτωση, η εντολή συνεχίζεται στην επόμενη γραμμή, ενώ στη δεύτερη συντάσσουμε μια σύνθετη εντολή. 1) Συνέχιση μιας εντολής Όταν μια εντολή δεν μπορεί να αποδοθεί σε μια μόνο γραμμή, τότε μπορεί να συνεχιστεί στην επόμενη γραμμή, αφού τοποθετήσουμε τρεις τελείες στο σημείο όπου γίνεται η διακοπή της εντολής, π.χ. (2+sqrt(11+3/7))... /(3+sin(21/85)) 1.6584 η οποία δίνει το ίδιο αποτέλεσμα με την: (2+sqrt(11+3/7))/(3+sin(21/85)) 1.6584 2) Σύνθετη εντολή Στη σύνθετη εντολή, δίνουμε για εκτέλεση περισσότερες από μια εντολές, που συντάσσονται σε μια μόνο γραμμή. Οι επιμέρους εντολές διαχωρίζονται μεταξύ τους με ένα από τα αγγλικά σύμβολα, ή ;. Στη δεύτερη περίπτωση, τo αποτέλεσμα της πράξης δεν εμφανίζεται στην οθόνη, διότι το σύμβολο ; είναι και τελεστής απόκρυψης, π.χ. 2/3,4^2,1/6 0.6667 16 0.1667

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 39 2/3;4^2;1/6; 1.7 Μ-Αρχεία Εντολών Για την εκτέλεση των υπολογισμών που παρουσιάστηκαν στις προηγούμενες παραγράφους, έγινε η σύνταξη και η εκτέλεση της αντίστοιχης εντολής, μέσα από το παράθυρο διαχείρισης του προγράμματος. Σε μια τέτοια διαδικασία, όμως, η επανέναρξη του προγράμματος θα απαιτούσε την επανασύνταξη των εντολών για την εκτέλεση των πράξεων, πράγμα που αποτελεί χρονοβόρα διαδικασία. Εμφανίζεται, επίσης, σε μερικές περιπτώσεις η αναγκαιότητα επανάληψης της εκτέλεσης μιας ομάδας εντολών, μετά την ενδεχόμενη τροποποίηση των αριθμητικών τιμών μερικών παραμέτρων. Για να διευκολυνθούν οι παραπάνω διαδικασίες, θα πρέπει να γίνεται αποθήκευση των εντολών αυτών σε ένα αρχείο, το οποίο να μπορεί να καλείται από το παράθυρο διαχείρισης, για να εκτελεστούν οι υπολογισμοί που είναι αποθηκευμένοι σε αυτό. Τα αρχεία αυτά καλούνται αρχεία εντολών (script files) και, επειδή πρέπει υποχρεωτικά να τους αποδοθεί ένα όνομα που να έχει την κατάληξη.m, ονομάζονται επίσης και Μ-αρχεία εντολών. Η βασικότερη ιδιότητα των Μ-αρχείων εντολών συνίσταται στο ότι η κλήση τους ισοδυναμεί με εκτέλεση των εντολών που περιέχουν και απόδοση των αποτελεσμάτων τους μέσα στο παράθυρο διαχείρισης. Η συνέπεια μιας τέτοιας λειτουργίας είναι ότι οι εντολές των Μ-αρχείων εκτελούνται μέσα στον βασικό χώρο λειτουργίας του προγράμματος, όπως και οι εντολές που δίνονται από το παράθυρο διαχείρισης. Επομένως, μπορούν να αξιοποιθούν όλα τα αποτελέσματα που βρίσκονται ήδη αποθηκευμένα μέσα στον χώρο αυτόν, και, αντιστρόφως, τα αποτελέσματα που παράγουν με την εκτέλεσή τους αποθηκεύονται στον βασικό χώρο λειτουργίας του προγράμματος και έτσι μπορούν να αξιοποιηθούν από μετέπειτα υπολογισμούς. Ένα βασικό σημείο αποτελεί ο τρόπος σύνταξης των αρχείων αυτών. Για τη σύνταξη ενός Μ-αρχείου πρέπει να χρησιμοποιηθεί ένας κειμενογράφος

40 Εισαγωγικές Έννοιες ASCII (editor), όπως π.χ. ο κειμενογράφος που διατίθεται από το πρόγραμμα. Η εντολή για την εκκίνηση του κειμενογράφου αυτού είναι edit <ονομα_αρχείου> Όταν δίνεται το όνομα (μαζί με την επέκτασή του), ανοίγει το αρχείο που βρίσκεται στη διεύθυνση λειτουργίας του με το δοσμένο όνομα όταν όμως παραλείπεται, ο κειμενογράφος ξεκινά νέο αρχείο, χωρίς να καθορίζεται το όνομά του, το οποίο μπορεί να δοθεί και με την έξοδο από τον κειμενογράφο. Τα αρχεία αυτά αποθηκεύονται μέσα στη διεύθυνση λειτουργίας του προγράμματος, εκτός εάν ορίζεται διαφορετικά. Τέλος, επισημαίνεται ότι γενικά, μέσα στον κειμενογράφο αυτόν, μπορεί να αξιοποιηθεί και το «ποντίκι». Παράδειγμα Στο παρακάτω παράδειγμα, δίνεται ένα Μ-αρχείο εντολών, το οποίο είναι αποθηκευμένο στη διεύθυνση λειτουργίας του προγράμματος με το όνομα example1.m, για τον υπολογισμό του μήκους της διαδρομής, που διανύει ένα κινητό με σταθερή ταχύτητα, σε δοσμένο χρόνο: velocity=50; travelingtime=60; distance=velocity*travelingtime; distance Η κλήση του αρχείου με τη χρήση του ονόματός του συνεπάγεται την εκτέλεση των εντολών που είναι αποθηκευμένες σε αυτό, όπως φαίνεται παρακάτω: example1 distance= 3000

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 41 1.7.1 Χρήση κειμενογράφου Όπως αναφέραμε παραπάνω, ένα Μ-αρχείο εντολών δημιουργείται με τη χρήση ενός κειμενογράφου. Είναι τυπικό, μέσα σε αυτούς τους κειμενογράφους, να μπορεί να αξιοποιηθεί και το «ποντίκι». Καθένας από αυτούς έχει και τις δικές του δυνατότητες, οι οποίες μπορούν συνήθως να αξιοποιηθούν και από εικονίδια της μπάρας τους. Επίσης, οι εντολές που γράφονται μπορούν συνήθως να εκτελεστούν μέσα από τον κειμενογράφο αυτόν, διαδικασία που μας επιτρέπει να ελέγξουμε την ορθότητά τους. Επισημαίνεται, όμως, ότι κάθε κειμενογράφος έχει και τις δικές του δυνατότητες, και πρέπει αυτός να μελετηθεί ξεχωριστά. Μια ιδιότητα του κειμενογράφου του MATLAB, που είναι πολύ χρήσιμη για παρουσιάσεις και διδασκαλία, αναφέρεται στην κυψελωτή δομή αρχείου. Την ιδιότητα αυτή θα παρουσιάσουμε παρακάτω. 1.7.2 Κυψελωτή δομή Μ-αρχείου Στον κειμενογράφο του MATLAB, μπορούμε να δημιουργήσουμε ένα Μ- αρχείο εντολών που μπορεί να χωριστεί σε κυψέλες (cells) με τη χρήση του διπλού συμβόλου %%, το οποίο τοποθετείται στην αρχή και στο τέλος μιας ομάδας εντολών που θέλουμε να δηλώσουμε ότι αποτελούν μια κυψέλη. Το αρχείο αυτό εκτελείται από το MATLAB τμηματικά. Μέσα από τον κειμενογράφο του προγράμματος, μπορεί να εκτελεστεί με τη χρήση του αντίστοιχου εικονιδίου η περιοχή. Τα εικονίδια που υπάρχουν στην μπάρα του κειμενογράφου μας επιτρέπουν τις επιλογές: 1) να εκτελεστεί η περιοχή, αφού αφεθεί ο δείκτης στην ίδια περιοχή, 2) να εκτελεστεί η περιοχή, αφού μεταφερθεί ο δείκτης στην επόμενη περιοχή, και 3) να εκτελεστούν όλες μαζί οι περιοχές. Η χρησιμότητα μιας κυψέλης έγκειται στο γεγονός ότι μπορεί αυτή να εκτελεστεί ξεχωριστά, μέσα από τον editor του MATLAB, αν χρησιμοποιηθεί το αντίστοιχο εικονίδιο της μπάρας. Με τον τρόπο αυτόν, μπορούμε να εκτελέσουμε, με κατάλληλο εικονίδιο, ένα μόνο κομμάτι του προγράμματος και έτσι να το ελέγχουμε σταδιακά, αλλά και να το παρουσιάζουμε ξεχωριστά. Μια περίπτωση διαχωρισμού σε δύο κυψέλες, του προγράμματος που αναφέρεται στο παράδειγμα της παραγράφου 1.7, δίνεται παρακάτω:

42 Εισαγωγικές Έννοιες %% echo on velocity=50; travelingtime=60; %% distance=velocity*travelingtime; disp('distance= '),disp(distance) echo off %% 1.8 Προσέγγιση αριθμητικών τιμών Αρκετές φορές, τα δεκαδικά αποτελέσματα που προκύπτουν από τους υπολογισμούς χρειάζεται να προσεγγιστούν από ένα γειτονικό ακέραιο αριθμό ή να προσεγγιστούν από ένα γειτονικό δεκαδικό αριθμό με λιγότερα ψηφία. Για τις διαδικασίες αυτές υπάρχουν εσωτερικές εντολές, εκ των οποίων οι πιο χρήσιμες δίνονται παρακάτω. Εφαρμογή των εντολών γίνεται με τη χρήση της ποσότητας 2 : a=sqrt(2) a = 1.4142 [1] ceil(a), υπολογίζει για την παράμετρο a τον πλησιέστερο προς τα πάνω ακέραιο αριθμό: ceil(a) 2 [2] floor(a), υπολογίζει για την παράμετρο a τον πλησιέστερο προς τα κάτω ακέραιο αριθμό: floor(a) 1

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 43 [3] fix(a), υπολογίζει για την παράμετρο a τον πλησιέστερο ακέραιο προς την κατεύθυνση του μηδενός: fix(a) 1 [4] round(a), υπολογίζει τον πλησιέστερο στον α ακέραιο αριθμό: round(a) 1 1.9 Εντολές διαχείρισης Βοήθεια: Ήδη είδαμε ότι, μέσα από το παράθυρο διαχείρισης, μπορούμε να ζητήσουμε βοήθεια για τον τρόπο εκτέλεσης μιας συνάρτησης ή μιας εντολής, δίνοντας την εντολή help name όπου name το όνομα της συνάρτησης ή της εντολής για την οποία ζητάμε βοήθεια, π.χ. help log LOG Natural logarithm. LOG(X) is the natural logarithm of the elements of X. Complex results are produced if X is not positive. Εισαγωγή σχολίων: Σε ένα αρχείο εντολών μπορούμε να εισαγάγουμε σχόλια, που θα υπενθυμίζουν στον χρήστη τη σκοπιμότητα και δομή του προγράμματος. Οι εντολές αυτές δεν είναι εκτελέσιμες από το πρόγραμμα. Ένας τρόπος, για να επιτευχθεί αυτό, είναι με την εισαγωγή του συμβόλου % στο σημείο από όπου αρχίζει το σχόλιο (στην αρχή ή στο μέσο μιας γραμμής) και με την επανάληψή του στην αρχή κάθε επόμενης γραμμής που περιέχει σχόλια, όπως γίνεται στο επόμενο παράδειγμα:

44 Εισαγωγικές Έννοιες % This is an M-file, with the name example1.m, % for the calculation of the traveled distance. % velocity=50; travelingtime=60; distance=velocity*travelingtime; disp('distance= '),disp(distance) Όταν όμως ένα σχόλιο εκτείνεται σε περισσότερες από μια γραμμές, μπορούμε μεν να το εισαγάγουμε με τον τρόπο που ορίσαμε παραπάνω, αλλά η διαδικασία να τοποθετούμε το σύμβολο % στην αρχή καθεμιάς γραμμής δεν είναι η πιο εύχρηστη. Ένας δεύτερος τρόπος εισαγωγής συνίσταται στην τοποθέτηση του διπλού συμβόλου %{ στην πρώτη γραμμή του σχολίου, ως μοναδικού περιεχομένου της γραμμής αυτής, και του %} στην τελευταία γραμμή, πάλι ως μοναδικού περιεχομένου της γραμμής αυτής, όπως π.χ. γίνεται στο επόμενο παράδειγμα: %{ This is an M-file, with the name example1.m, for the calculation of the traveled distance. %} velocity=50; travelingtime=60; distance=velocity*travelingtime; disp('distance= '),disp(distance) Διακοπή εκτέλεσης: Μπορούμε να διακόψουμε την εκτέλεση μιας εντολής, πατώντας ταυτόχρονα Ctrlt C. Εκτύπωση αποτελεσμάτων: Μπορούμε να εκτυπώσουμε στην οθόνη την τιμή μιας παραμέτρου x, χρησιμοποιώντας την εντολή disp(x) Παράδειγμα a =

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 45 3.2400 disp(a) 3.2400 Διαγραφή οθόνης: Μπορούμε να διαγράψουμε το περιεχόμενο του παραθύρου διαχείρισης με την εντολή clc

46 Εισαγωγικές Έννοιες

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 47 ΚΕΦΑΛΑΙΟ 2 Συμβολοσειρές Εκτός από αριθμούς, το πρόγραμμα έχει επίσης τη δυνατότητα να διαχειρίζεται και κείμενο. Ένα κομμάτι από κείμενο αντιμετωπίζεται στο πρόγραμμα, όπως και σε άλλες γλώσσες, ως σειρά από χαρακτήρες (σύμβολα), και ονομάζεται συμβολοσειρά. Μια συμβολοσειρά, εξάλλου, αντιμετωπίζεται ως μονοδιάστατη λίστα (μονοδιάστατος πίνακας) και αποτελείται από ένα σύνολο στοιχείων που είναι τοποθετημένα σε καθορισμένη σειρά. Επιπλέον, κάθε στοιχείο της χαρακτηρίζεται από έναν δείκτη που δηλώνει τη θέση του. Λεπτομέρειες για τη διαχείριση λίστας δίνονται στο επόμενο κεφάλαιο. Μερικούς μόνο τρόπους διαχείρισης μιας συμβολοσειράς θα παρουσιάσουμε στο παρόν κεφάλαιο. 2.1 Δημιουργία συμβολοσειράς Μπορούμε να δημιουργήσουμε μια συμβολοσειρά, δηλώνοντας το κείμενο που περιλαμβάνει και τοποθετώντας το μέσα σε απλά εισαγωγικά του αγγλικού πληκτρολογίου. Η συμβολοσειρά μπορεί να αποδίδει το όνομα μιας παραμέτρου, όπως συμβαίνει π.χ. στις εντολές: s1='introduction to strings' s1 = Introduction to strings s2='character string' s2 =

48 Συμβολοσειρές Character string οι οποίες δημιουργούν δύο συμβολοσειρές, που αποθηκεύονται στις παραμέτρους s1 και s2, αντίστοιχα. Οι συμβολοσειρές αυτές χρησιμοποιούνται στα επόμενα παραδείγματα του κεφαλαίου. 2.2 Διαχείριση συμβολοσειράς Η συμβολοσειρά είναι ένα είδος λίστας, και τα σύμβολα μιας συμβολοσειράς αποθηκεύονται στην παράμετρο, με τρόπο ανάλογο εκείνου των στοιχείων μιας λίστας. Διαχειριζόμαστε δε μια συμβολοσειρά με τρόπο παρόμοιο με αυτόν της λίστας, χρησιμοποιώντας δείκτες, για να αναφερθούμε στα στοιχεία της. Μερικές εντολές διαχείρισης μιας συμβολοσειράς δίνονται παρακάτω και εφαρμόζονται στις συμβολοσειρές που ορίστηκαν στην παράγραφο 2.1. 1. Υπολογισμός του μήκους μιας μονοδιάστατης συμβολοσειράς, με την εντολή length, π.χ. length(s1) 23 2. Επιλογή τμήματος μιας συμβολοσειράς, με επιλογή των αντίστοιχων θέσεων της λίστας, που χωρίζονται με το σύμβολο :, π.χ. s2(1) C s2(1:9) Character s2(11:16)

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 49 string 3. Τροποποίηση τμήματος μιας συμβολοσειράς, όπως γίνεται και στη λίστα, με επιλογή και αντικατάσταση στοιχείων της, όπως π.χ. συμβαίνει στη παρακάτω διόρθωση μιας συμβολοσειράς: a='numperr' a = numperr a(7)=[] a = numper a(4)='b' a = number 4. Η αντικατάσταση των χαρακτήρων μιας συμβολοσειράς με τους αντίστοιχους κωδικούς αριθμούς ASCII γίνεται αυτόματα, όταν εκτελέσουμε μια αριθμητική πράξη με τη συμβολοσειρά. Οπότε, όταν πολλαπλασιάσουμε μια συμβολοσειρά με τη μονάδα, παίρνουμε τους αντίστοιχους αριθμούς ASCII, όπως π.χ. γίνεται παρακάτω: s3=s2*1 s3 = Columns 1 through 15 67 104 97 114 97 99 116 101 114 32 115 116 114 105 110 Column 16 103 5. Επαναφορά, από την αναπαράσταση με κωδικούς αριθμούς ASCII, σε κανονική αναπαράσταση συμβόλων, που πραγματοποιείται με την εντολή char, όπως π.χ. στο παράδειγμα:

50 Συμβολοσειρές char(s3) Character string 6. Μετατροπή μιας συμβολοσειράς με δομή γραμμής, σε δομή στήλης, και αντίστροφα, με την εντολή της αναστροφής,, όπως π.χ. γίνεται παρακάτω: s2(11:16)' s t r i n g 7. Συνένωση συμβολοσειρών, όπως συμβαίνει και στις λίστες. Στο επόμενο παράδειγμα, π.χ., γίνεται η συνένωση δύο συμβολοσειρών σε μια, με το να χρησιμοποιήσουμε τετραγωνική αγκύλη, για να δηλώσουμε τη λίστα, και με το να εισαγάγουμε ενδιάμεσα ένα κενό, που αντιστοιχεί στην κενή συμβολοσειρά: s4=['part', ' ', 'one'] s4 = part one

ΤΟΜΟΣ Β : Αριθμητικός & Οπτικός Προγραμματισμός 51 ΚΕΦΑΛΑΙΟ 3 Λίστες Η λίστα (πίνακας) είναι ένα από τα βασικά εργαλεία, και μπορεί να χρησιμοποιηθεί για την αποθήκευση δεδομένων υπό μορφή λογιστικού πίνακα, την αναπαράσταση αλγεβρικών μητρών, και την εκτέλεση μαθηματικών πράξεων. Οι πράξεις που μπορούν να γίνουν με τη χρήση μιας λίστας είναι είτε απλές αριθμητικές πράξεις είτε πράξεις της Γραμμικής Άλγεβρας. Στην πρώτη περίπτωση, η λίστα χρησιμοποιείται με τρόπο παρόμοιο με αυτόν ενός λογιστικού φύλλου με κελιά (spreadsheet), όπως αυτά που χρησιμοποιούν τα περισσότερα προγράμματα διαχείρισης δεδομένων (π.χ. το Excel), ενώ στη δεύτερη ως αλγεβρική μήτρα. Στο παρόν κεφάλαιο, θα επιχειρήσουμε αφενός μια εισαγωγή στις λίστες και αφετέρου θα παρουσιάσουμε τη χρήση τους για την εκτέλεση απλών αριθμητικών πράξεων, όπως στα λογιστικά φύλλα, αφήνοντας για το κεφάλαιο 9 τη χρήση τους ως μητρών για εκτέλεση πράξεων της Γραμμικής Άλγεβρας. 3.1 Ορισμός λίστας Μια λίστα (πίνακας) αποτελείται από ένα σύνολο στοιχείων που είναι τοποθετημένα σε καθορισμένη σειρά, και κάθε στοιχείο της χαρακτηρίζεται από έναν ή περισσότερους δείκτες που δηλώνουν τη θέση τους στη λίστα. Ειδικά, μια μονοδιάστατη λίστα αποτελείται από στοιχεία που είναι τοποθετημένα σε μια γραμμή και χαρακτηρίζονται από ένα δείκτη που

52 Λίστες δηλώνει τη θέση του στοιχείου στη γραμμή αυτή. Μια δισδιάστατη λίστα αποτελείται από ένα σύνολο στοιχείων που είναι τοποθετημένα σε γραμμές και στήλες, και κάθε στοιχείο χαρακτηρίζεται από δύο δείκτες που δηλώνουν τη γραμμή και τη στήλη στην οποία ανήκει, αντίστοιχα. Η διαδικασία αυτή μπορεί εύκολα να γενικευτεί για λίστες περισσότερων διαστάσεων. Για να ορίσουμε μια λίστα, χρησιμοποιούμε τετραγωνικές αγκύλες, [ ], μέσα στις οποίες τοποθετούμε τα στοιχεία της. Τα στοιχεία μιας γραμμής χωρίζονται μεταξύ τους με κόμματα ή κενά. Διαφορετικές γραμμές της λίστας χωρίζονται με το σύμβολο ; ή εισάγονται σε διαφορετικές γραμμές, όπως συμβαίνει, π.χ., στα παρακάτω παραδείγματα: a1=[2, 7, 71, 8, 9] a1 = 2 7 71 8 9 a2=[3 8; 4 5] a2 = 3 8 4 5 a2=[3 8 4 5] a2 = 3 8 4 5 με ονόματα a1 και a2 και αντιπροσωπεύουν μια μονοδιάστατη και μια δισδιάστατη λίστα, αντίστοιχα. 3.1.1 Τροποποίηση στοιχείων λίστας Όπως αναφέραμε, τα στοιχεία μιας λίστας χαρακτηρίζονται με δείκτες, που δηλώνουν τη θέση του στοιχείου, π.χ. τη γραμμή και τη στήλη στην οποία αυτό ανήκει για μια δισδιάστατη λίστα. Οι δείκτες της λίστας τοποθετούνται μέσα σε παρενθέσεις, π.χ. το a(i, j) δηλώνει το στοιχείο (i, j) της δισδιάστατης λίστας a. Για μονοδιάστατες λίστες έχουμε ένα μόνο δείκτη,