Programming και Scripts

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

ΕΙΣΑΓΩΓΗ ΣΤΟ MATHLAB Α ΜΕΡΟΣ

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

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

Εισαγωγή στον επιστημονικό προγραμματισμό 2 o Μάθημα

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

Εισαγωγή στο Matlab Μέρος Α. Κυριακίδης Ιωάννης 2011

Έξοδος Matlab: Έξοδος Matlab:

Διεθυνσιοδότηση (Indexing)

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

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

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

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

Συνοπτικός οδηγός MATLAB & OCTAVE. (έως και συναρτήσεις) Ιωάννης Καλατζής 2018d

Εργαστήρια Αριθμητικής Ανάλυσης Ι. 4 ο Εργαστήριο. Διανύσματα-Πίνακες 1 ο Μέρος

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

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

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

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

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

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

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

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

1 ο ΕΡΓΑΣΤΗΡΙΟ ΣΗΜΑΤΑ & ΣΥΣΤΗΜΑΤΑ

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

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

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

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

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

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

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

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

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

Αλληλεπίδραση με το Matlab

3 ο Εργαστήριο Μεταβλητές, Τελεστές

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

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

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

8 FORTRAN 77/90/95/2003

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Χρονικές σειρές 4 o μάθημα: ΠΙΝΑΚΕΣ ΚΑΙ ΔΙΑΝΥΣΜΑΤΑ

! Εάν ο αριθμός διαθέτει περισσότερα bits, χρησιμοποιούμε μεγαλύτερες δυνάμεις του 2. ! Προσοχή στη θέση του περισσότερο σημαντικού bit!

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

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

Πράξεις με δυαδικούς αριθμούς

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

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

Εισαγωγή στη Fortran. Μάθημα 1 ο. Ελευθερία Λιούκα

Σύστημα Πλεονάσματος και Αναπαράσταση Αριθμών Κινητής Υποδιαστολής

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

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

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Αναπαράσταση αριθμών στο δυαδικό σύστημα. Δρ.

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

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

Εισαγωγή στην επιστήμη των υπολογιστών

ΠΑΡΑΡΤΗΜΑ Α Εισαγωγή στο MATLAB

Λογικά Διανύσματα. >>x = -3/2*pi : pi/100 : 3/2*pi; >>y = tan(x); >>plot(x, y)

Στοιχειώδης προγραμματισμός σε C++

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

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

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

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

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

11. Ποιες είναι οι άμεσες συνέπειες της διαίρεσης;

Εισαγωγή στο GNU Octave/MATLAB

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

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

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

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

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

Φυσικές και τεχνητές γλώσσες. Το αλφάβητο της ΓΛΩΣΣΑΣ, Τύποι Δεδομένων. Σταθερές, Μεταβλητές, Τελεστές, Συναρτήσεις, Δομή Προγράμματος

ΚΕΦΑΛΑΙΟ 3. Εκφράσεις, τελεστές, σχόλια. 3.1 Εισαγωγή

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

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

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

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

ΕΙΣΑΓΩΓΗ ΣΤΟ MATLAB. Κολοβού Αθανασία Ε.Τ.Ε.Π.

Transcript:

Programming και Scripts Ο πιο απλός τύπος προγράμματος του MATLAB λέγεται script *. Το script είναι ένα αρχείο με επέκταση.m που περιέχει περισσότερες διαδοχικές γραμμές εντολών και επίκλησης συναρτήσεων MATLAB. Μπορούμε να τρέξουμε ένα script γράφοντας απλά το όνομά του στην γραμμή εντολών. * script: δεν υπάρχει όρος που να αποδίδει στα ελληνικά την λέξη

Programming και Scripts Παράδειγμα Script Για να δημιουργήσουμε ένα script, χρησιμοποιούμε την εντολή edit, edit plotrand Αυτό ανοίγει ένα άδειο αρχείο που ονομάζεται plotrand.m Εισάγουμε κάποιες εντολές που δημιουργούν ένα άνυσμα τυχαίων δεδομένων: n = 50; r = rand(n,1); plot(r)

Programming και Scripts Στην συνέχεια προσθέτουμε εντολές για την χάραξη μιας οριζόντιας γραμμής με την μέση τιμή των τιμών των δεδομένων: m = mean(r); hold on plot([0,n],[m,m]) hold off title('mean of Random Uniform Data') Εάν τρέξουμε όλο το script μαζί, θα πάρουμε το εξής αποτέλεσμα:

Programming και Scripts 1 Mean of Random Uniform Data 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 5 10 15 20 25 30 35 40 45 50

Programming και Scripts Όταν γράφουμε έναν κώδικα, είναι μια καλή πρακτική, να προσθέτουμε σχόλια και επεξηγήσεις, ώστε να τον καταλαβαίνουν αυτοί που τον διαβάζουν, αλλά και εμείς για να φρεσκάρουμε την μνήμη μας, όταν τον ανακαλούμε μετά από καιρό. Για να προσθέσουμε σχόλια, βάζουμε πριν το σύμβολο (%).

Programming και Scripts % Generate random data from a uniform distribution % and calculate the mean. Plot the data and the mean. n = 50; % 50 data points r = rand(n,1); plot(r) % Draw a line from (0,m) to (n,m) m = mean(r); hold on plot([0,n],[m,m]) hold off title('mean of Random Uniform Data')

Programming και Scripts Σώστε το αρχείο στο current folder. Για να τρέξουμε το script, γράφουμε το όνομά του στην γραμμή εντολών: plotrand Μπορούμε επίσης να το τρέξουμε από τον Editor με το κουμπί Run,.

Programming και Scripts Loops και Conditional Statements Μέσα σ ένα script, μπορούμε να κάνουμε βρόχους (loop) με εντολές καθώς και τμήματα προγράμματος που θα εκτελούνται υπό συνθήκη, χρησιμοποιώντας τις εντολές : for, while, if, και switch.

Programming και Scripts Loops και Conditional Statements Η εντολή for Η δομή της εντολής αυτής είναι η ακόλουθη: for end δείκτης = λίστα = ορισμός περιοχής δείκτη σύνολο εντολών προς εκτέλεση

Programming και Scripts Loops και Conditional Statements Η εντολή for Η εκτέλεση των πράξεων επαναλαμβάνεται, με το δείκτη να παίρνει όλες τις τιμές που καθορίζονται από τα στοιχεία της λίστας. Στη θέση της λίστας μπορεί επίσης να τοποθετηθεί μια εντολή που να δημιουργεί τη λίστα αυτή, όπως π.χ. 1:10. Συνήθως η λίστα είναι μονοδιάστατη. Σε περίπτωση δισδιάστατης, ο δείκτης ακολουθεί τις στήλες της λίστας, τη μία μετά την άλλη.

Programming και Scripts Loops και Conditional Statements Η εντολή for Παράδειγμα: Να δημιουργηθεί μια μήτρα που να περιέχει τα τετράγωνα των ακεραίων αριθμών από 1 έως 10: x=[]; for i=1:10 x=[x,i^2]; end

Programming και Scripts Loops και Conditional Statements Η εντολή for Η δομή του αλγορίθμου έχει ως εξής: Αρχικά δημιουργείται μια κενή Μήτρα, η x. Μετά δημιουργείται ένας βρόχος, σε κάθε κύκλο i του οποίου προστίθεται στην υπάρχουσα λίστα (Μήτρα) ο επόμενος αριθμός, ίσος με i^2. x x = 1 4 9 16 25 36 49 64 81 100

Programming και Scripts Loops και Conditional Statements Η εντολή for Παράδειγμα: Να υπολογιστεί το άθροισμα των πρώτων εκατό ακεραίων αριθμών (1-100): s=0; for i=1:100 s=s+i; end; s

Programming και Scripts Loops και Conditional Statements Η εντολή for Παράδειγμα: Η δομή του αλγορίθμου έχει ως εξής: Χρησιμοποιείται η μεταβλητή s στην οποία αποδίδεται η τιμή του αθροίσματος και η οποία αρχικά ξεκινάει με την τιμή μηδέν. Δημιουργείται ένας βρόχος (i=1:100), σε κάθε κύκλο i του οποίου προστίθεται στην υπάρχουσα τιμή ο επόμενος αριθμός, ίσος με i.

Programming και Scripts Loops και Conditional Statements Εντολή While Μερικές φορές, δεν είναι γνωστός, εκ των προτέρων, ο αριθμός των κύκλων εκτέλεσης ενός βρόχου, ο οποίος ενδέχεται να διαμορφώνεται κατά την διάρκεια των κύκλων, όπως ενδέχεται και η τιμή του δείκτη για τον επόμενο κύκλο να υπολογίζεται μέσα στον ίδιο το βρόχο, ως μια συνάρτηση των ενδιάμεσων αποτελεσμάτων.

Programming και Scripts Loops και Conditional Statements Εντολή While Για ν αντιμετωπιστούν οι περιπτώσεις αυτές υπάρχει η εντολή while, η οποία έχει την ακόλουθη δομή: αρχική_τιμή_δείκτη while εντολη_ελέγχου_δείκτη εντολές προς εκτέλεση προσδιορισμός_νέας_τιμής_δείκτη end

Programming και Scripts Loops και Conditional Statements Εντολή While Όπως και στο βρόχο for, έτσι και στο βρόχο while, γίνεται επαναληπτική εκτέλεση των πράξεων, μέχρι να παραβιαστεί ο έλεγχος. Ο έλεγχος γίνεται με τη χρήση του δείκτη, του οποίου η αρχική τιμή καθορίζεται πριν από την έναρξη του βρόχου, και η τιμή για τον επόμενο κύκλο υπολογίζεται μέσα στον τρέχοντα κύκλο.

Programming και Scripts Loops και Conditional Statements Εντολή While Για να μπορέσει όμως να τερματιστεί ο βρόχος, θα πρέπει η τιμή του δείκτη να μεταβάλλεται, με την επανάληψη των πράξεων, κατά τρόπο ώστε να παραβιαστεί κάποτε η εντολή ελέγχου.

Programming και Scripts Loops και Conditional Statements Εντολή While Παράδειγμα Να ευρεθεί ο μεγαλύτερος, μεταξύ 100 αριθμών, που είναι αποθηκευμένοι σε μια μήτρα άνυσμαστήλη, και να προσδιοριστεί ταυτόχρονα και η θέση του στη λίστα αυτή.

Programming και Scripts Loops και Conditional Statements Εντολή While Παράδειγμα n=100; a=10*rand(1,n); amax=a(1);imax=1; ni=1; while ni<n+0.5 if a(ni)>amax amax=a(ni); imax=ni; end ni=ni+1; end disp('maximum number= '),disp(amax) disp('position= '),disp(imax)

Programming και Scripts Loops και Conditional Statements Την εμβάθυνση για την λειτουργία των βρόχων και των εντολών for, while, if, και switch, θα την συναντήσουμε στα παραδείγματα που θα ακολουθήσουν, με δημιουργία σύνθετων προγραμμάτων στο MATLAB, όπου θα χρησιμοποιούνται πολλές εντολές μαζί.

Script Locations Programming και Scripts Το MATLAB ψάχνει για scripts και άλλα αρχεία σε συγκεκριμένες θέσεις. Για να τρέξει ένα script, το αρχείο του πρέπει να βρίσκεται στο current folder ή σε ένα folder στο search path. Εξ ορισμού, το folder του MATLAB που δημιουργείται με την εγκατάστασή του, βρίσκεται στο search path. Εάν θέλουμε να αποθηκεύσουμε και να τρέχουμε το πρόγραμμα από άλλο folder, πρέπει να το προσθέσουμε στο search path. Επιλέγουμε το folder στο Current Folder browser, δεξί-κλικ, και μετά Add to Path.

Help και Documentation Όλες οι εντολές του MATLAB έχουν υποστηρικτική τεκμηρίωση που εμπεριέχει παραδείγματα και εξηγεί την σύνταξη της εντολής, τις εισόδους, τις εξόδους της και γενικά ότι χρειάζεται για την σωστή χρήση της. Υπάρχουν διάφοροι τρόποι να έχουμε αυτές τις πληροφορίες από την γραμμή εντολών: Ανοίγουμε την πληροφορία για την εντολή σε ξεχωριστό παράθυρο χρησιμοποιώντας την εντολή doc. Π.χ. doc mean

Help και Documentation Εμφανίζει τις επεξηγήσεις για την εντολή (το τμήμα της τεκμηρίωσης για την σύνταξη της εντολής) στο Command Window αφού σταματήσουμε μετά την αριστερή παρένθεση (. mean( Εμφανίζει μια σύντομη εκδοχή της τεκμηρίωσης για την εντολή στο Command Window χρησιμοποιώντας την εντολή help. help mean

Help και Documentation Οδηγεί στο αρχείο για όλη την τεκμηρίωση χτυπώντας την εικόνα για την βοήθεια (help icon).

Βασικό Γλωσσάρι (Language Fundamentals)

Μήτρες και Μαγικά Τετράγωνα

Οι Μήτρες (Πίνακες).και λίγη ιστορία Στο περιβάλλον του MATLAB, η Μήτρα είναι μία τετραγωνική σειρά αριθμών. Όταν η Μήτρα είναι 1x1 έχουμε έναν αριθμό και όταν η Μήτρα έχει μόνο μία σειρά ή μόνο μία στήλη, τότε έχουμε ένα άνυσμα. Το MATLAB έχει κι άλλους τρόπους να αποθηκεύει αριθμητικά (ή όχι) δεδομένα, αλλά αρχικά είναι χρήσιμο να τα δούμε όλα σαν Μήτρες.

Οι Μήτρες (Πίνακες).και λίγη ιστορία Οι ενέργειες στο MATLAB έχουν σχεδιαστεί να είναι όσο γίνεται πιο απλές και φυσικές. Ενώ σε άλλες γλώσσες προγραμματισμού δουλεύουμε με αριθμούς (έναν κάθε φορά), το MATLAB μας επιτρέπει να δουλεύουμε με Μήτρες πιο γρήγορα και πιο εύκολα. Ένα παράδειγμα Μήτρας εμφανίζεται στην εποχή της Αναγέννησης, στην γκραβούρα Melencolia I του Γερμανού ζωγράφου που αγαπούσε και τα μαθηματικά, του Albrecht Dürer.

Η Μήτρα αυτή είναι γνωστή ως Μαγικό Τετράγωνο και στην εποχή του Dürer, πολλοί πίστευαν πως είχε μαγικές ιδιότητες. Έχει κάποια συναρπαστικά χαρακτηριστικά που αξίζει να ερευνηθούν.

Εισαγωγή Μητρών Καθώς το MATLAB δουλεύει με Μήτρες, καλό είναι να αρχίσουμε απ αυτές. Μπορούμε να εισάγουμε Μήτρες στο MATLAB με διάφορους τρόπους: Να εισάγουμε μία αναλυτική λίστα με στοιχεία. Να εισάγουμε Μήτρες από εξωτερικά αρχεία δεδομένων. Να δημιουργήσουμε Μήτρες με τις εντολές built-in. Να δημιουργήσουμε Μήτρες με δικές μας συναρτήσεις και να τις αποθηκεύσουμε σε αρχεία.

Εισαγωγή Μητρών Για να εισάγουμε την Μήτρα του Dürer, σαν λίστα στοιχείων, πρέπει να ακολουθήσουμε κάποιους βασικούς κανόνες: Να χωρίζουμε τα στοιχεία μιας γραμμής με κενό διάστημα ή με (,). Να Χρησιμοποιούμε το (;) για να ορίσουμε το τέλος της κάθε γραμμής. Η όλη λίστα των στοιχείων πρέπει να περικλείεται από τετραγωνικές παρενθέσεις [ ]. Δηλαδή, για να εισάγουμε την Μήτρα του Dürer, γράφουμε στο Command Window: A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]

Εισαγωγή Μητρών Το MATLAB θα εμφανίσει την Μήτρα: A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1 Είναι η Μήτρα της γκραβούρας. Εισάγοντάς την, αυτόματα απομνημονεύεται στην επιφάνεια εργασίας του MATLAB. Μπορούμε να αναφερόμαστε σ αυτήν απλά με το όνομά της Α. Δείτε τώρα τι είναι αυτό που την κάνει τόσο ενδιαφέρουσα; Γιατί είναι μαγική;

sum, transpose, και diag Έχουμε βέβαια ήδη κάνει μνεία για τις ιδιότητες της μαγικής Μήτρας που έχουν να κάνουν με τους διαφορετικούς τρόπους αθροίσματος των στοιχείων της: Αν πάρτε το άθροισμα των στοιχείων κάθε σειράς ή κάθε στήλης, ή κάθε διαγωνίου της Μήτρας θα δείτε πως είναι όλα ίδια. Ας το διαπιστώσουμε με το MATLAB.

sum, transpose, και diag Κάνουμε την 1 η πρόσθεση: sum(a) ans = 34 34 34 34 Με την εντολή sum(a) το MATLAB έκανε ένα άνυσμα-σειρά που έχει για στοιχεία του τα αθροίσματα των στοιχείων κάθε στήλης της Α, δηλαδή το μαγικό άθροισμα, 34.

sum, transpose, και diag Τι γίνεται όμως με το άθροισμα των γραμμών; Το MATLAB «προτιμά» να δουλεύει με τις στήλες των μητρών. Έτσι, ένας τρόπος για να πάρουμε το άθροισμα των γραμμών, είναι να βρούμε την Μήτρα Α Τ και μετά να κάνουμε την ίδια δουλειά, βρίσκοντας αυτή την φορά τα αθροίσματα των σειρών (αφού θα έχουν γίνει οι σειρές στήλες). Με μία εκ νέου Τ, θα έχουμε το άνυσμα-στήλη των αθροισμάτων των γραμμών της Μήτρας Α.

sum, transpose, και diag Το MATLAB έχει δύο τρόπους για το (transpose Τ ). Η απόστροφος ( ) που κάνει την σύνθετη μιγαδική αντιμετάθεση γύρω από την κύρια διαγώνιο της μήτρας και αλλάζει συγχρόνως το πρόσημο του φανταστικού μέρους κάθε μιγαδικού στοιχείου της μήτρας (δηλαδή βάζει το συζυγές του). Η τελεία-απόστροφος (.'), που κάνει μόνο την αντιμετάθεση χωρίς να αλλάζει τα πρόσημα των μιγαδικών στοιχείων. Για τις μήτρες που έχουν μόνο πραγματικούς αριθμούς, το αποτέλεσμα είναι το ίδιο.

sum, transpose, και diag Έτσι το: A' Μας δίνει: ans = 16 5 9 4 3 10 6 15 2 11 7 14 13 8 12 1

sum, transpose, και diag Και το: sum(a')' Μας δίνει ένα άνυσμα-στήλη με τα αθροίσματα της κάθε σειράς: ans = 34 34 34 34

sum, transpose, και diag Ένας άλλος τρόπος για να βρούμε το άθροισμα των γραμμών, που αποφεύγει το διπλό Τ, χρησιμοποιεί την είσοδο της διάστασης στην συνάρτηση της πρόσθεσης sum: sum(a,2) ans = 34 34 34 34 Βοήθεια: doc sum B = sum(a,dim) sums along the dimension of A specified by scalar dim. The dim input is an integer value from 1 to N, where N is the number of dimensions in A. Set dim to 1 to compute the sum of each column, 2 to sum rows, etc.

sum, transpose, και diag Το άθροισμα των στοιχείων της κύριας διαγωνίου βρίσκεται με τις εντολές: sum και diag: diag(a) Μας δίνει: ans = 16 10 7 1

sum, transpose, και diag και sum(diag(a)) Μας δίνει: ans = 34

sum, transpose, και diag Η άλλη διαγώνιος λέγεται αντιδιαγώνιος (antidiagonal) και καθώς δεν είναι τόσο σημαντική (μαθηματικώς), το MATLAB δεν έχει έτοιμες συναρτήσεις γι αυτήν. Υπάρχει όμως μια εντολή που χρησιμοποιείται αρχικά στα γραφικά, η fliplr, η οποία αντιστρέφει την Μήτρα από αριστερά δεξιά: sum(diag(fliplr(a))) ans = 34

sum, transpose, και diag Κατά την εξέταση της Μήτρας στην γκραβούρα του Dürer και για να ανακαλύψουμε τις «μαγικές» της ιδιότητες, είδαμε μερικές από τις συναρτήσεις του MATLAB για τις μήτρες. Στην συνέχεια, πάλι με την ίδια μήτρα του Dürer, θα ανακαλύψουμε κι άλλες δυνατότητες του MATLAB.

Η εντολή magic Όπως είδαμε, το MATLAB έχει μια εντολή δημιουργίας μαγικών τετραγώνων, σχεδόν κάθε διάστασης, η οποία δικαιωματικά λέγεται εντολή magic: B = magic(4) B = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1

Η Μήτρα αυτή είναι σχεδόν ίδια με την Μήτρα του Dürer στην γκραβούρα και έχει τις ίδιες μαγικές ιδιότητες. Η μόνη διαφορά τους είναι πως οι δύο μεσαίες στήλες τους, είναι αντιμετατεθειμένες. Για να τις κάνουμε ακριβώς ίδιες, πρέπει να αντιμεταθέσουμε τις δύο στήλες:

A = B(:,[1 3 2 4]) Αυτοί οι δείκτες δείχνουν πως για κάθε γραμμή της Μήτρας Β- αλλάζουμε την σειρά των στοιχείων τους σε 1, 3, 2, 4, πράγμα που δίνει: A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1

Δημιουργώντας Μήτρες Το MATLAB μας δίνει την δυνατότητα να δημιουργούμε τις βασικές Μήτρες με 4 (τέσσερις) εντολές. zeros ones rand randn Όλα μηδενικά Όλοι άσσοι Ομοιόμορφα κατανεμημένα τυχαία στοιχεία Κανονικά κατανεμημένα τυχαία στοιχεία

Δημιουργώντας Μήτρες Ιδού κάποια παραδείγματα: Z = zeros(2,4) Z = 0 0 0 0 0 0 0 0 F = 5*ones(3,3) F = 5 5 5 5 5 5 5 5 5

Δημιουργώντας Μήτρες N = fix(10*rand(1,10)) N = 9 2 6 4 8 7 4 0 8 4 R = randn(4,4) R = 0.6353 0.0860-0.3210-1.2316-0.6014-2.0046 1.2366 1.0556 0.5512-0.4931-0.6313-0.1132-1.0998 0.4620-2.3252 0.3792

Δημιουργώντας Μήτρες (τρόποι δημιουργίας) v = [1 2 3 4] v = 1 2 3 4 vec = 1:5 vec = 1 2 3 4 5 nv = 1:2:9 nv = 1 3 5 7 9

Δημιουργώντας Μήτρες (τρόποι δημιουργίας) ls = linspace(3,15,5) ls = 3 6 9 12 15 Διάστημα από το 3 μέχρι το 15 γραμμικά, με 5 τιμές logspace(1,5,3) ans = 10 1000 100000 Διάστημα από το 10 1 μέχρι το 10 5 γραμμικά, με 3 τιμές

Εκφράσεις (Expressions)

Μεταβλητές (Variables) Όπως οι περισσότερες γλώσσες προγραμματισμού, έτσι και το MATLAB έχει μαθηματικές εκφράσεις, οι οποίες όμως εδώ σε αντίθεση με τις άλλες γλώσσες- αφορούν ολόκληρες Μήτρες. Το MATLAB δεν απαιτεί κανενός είδους δήλωση ή τον ορισμό των διαστάσεων της Μεταβλητής.

Μεταβλητές (Variables) Όταν βρίσκει το όνομα μιας καινούργιας Μεταβλητής, την δημιουργεί αυτόματα και της παραχωρεί τον απαραίτητο χώρο για την αποθήκευσή της. Εάν η Μεταβλητή ήδη υπάρχει, αλλάζει το περιεχόμενό της, και αν χρειάζεται της παραχωρεί νέο χώρο αποθήκευσης.

Μεταβλητές (Variables) Για παράδειγμα: num_students = 25 Δημιουργεί μία Μήτρα (1x1) με το όνομα num_students και αποθηκεύει την τιμή 25, στο μοναδικό της στοιχείο. Για να δούμε την Μήτρα που αντιστοιχείται σε κάθε Μεταβλητή, απλά γράφουμε το όνομα της Μεταβλητής.

Μεταβλητές (Variables) Τα ονόματα των Μεταβλητών αρχίζουν από ένα γράμμα που μπορεί να ακολουθείται από γράμματα, αριθμούς, ψηφία, ή ακόμα και παύλες. Το MATLAB ξεχωρίζει τα μικρά από τα κεφαλαία γράμματα. Το Α και το a δεν είναι η ίδια Μεταβλητή.

Μεταβλητές (Variables) Αν και τα ονόματα των μεταβλητών μπορούν να έχουν οποιοδήποτε μέγεθος, το MATLAB χρησιμοποιεί μόνο τους πρώτους N χαρακτήρες του ονόματος, (όπου N είναι ο αριθμός που δίνει η συνάρτηση namelengthmax), και αγνοεί τους υπόλοιπους. Έτσι, είναι σημαντικό να κάνουμε τα ονόματα των μεταβλητών μοναδικά, στα πρώτα Ν γράμματα του ονόματός των, για να βοηθούμε το MATLAB να ξεχωρίζει τις μεταβλητές.

Μεταβλητές (Variables) N = namelengthmax N = 63

Αριθμοί (Numbers) To MATLAB χρησιμοποιεί την συμβατική δεκαδική γραφή, με επιλογή του δεκαδικού σημείου και πρόσημο στην αρχή των αριθμών. Η επιστημονική γραφή χρησιμοποιεί το γράμμα e για να ορίσει την δύναμη στην οποία υψώνεται το 10. Οι φανταστικοί αριθμοί χρησιμοποιούν ή το i ή το j σαν κατάληξη.

Αριθμοί (Numbers) Παραδείγματα αριθμών: 3-99 0.0001 9.6397238 1.60210e-20 6.02252e23 1i -3.14159j 3e5i

Αριθμοί (Numbers) Το MATLAB αποθηκεύει όλους τους αριθμούς, χρησιμοποιώντας εσωτερικά το long format, όπως αυτό ορίζεται από το πρότυπο κινητής υποδιαστολής της IEEE. Οι αριθμοί κινητής υποδιαστολής έχουν ακρίβεια 16 δεκαδικών ψηφίων και πεπερασμένη περιοχή από 10-308 μέχρι 10 +308.

Αριθμοί (Numbers) Οι αριθμοί που έχουν double format έχουν μέγιστη ακρίβεια 52 ψηφίων. Για παράδειγμα ο ακόλουθος κώδικας (πρόγραμμα) δείχνει δύο άνισους αριθμούς, σαν ίσους, γιατί είναι αμφότεροι κομμένοι στο τέλος: x = 36028797018963968; y = 36028797018963972; x == y ans = 1

Αριθμοί (Numbers) Οι ακέραιοι μπορούν να έχουν ακρίβεια 8-bit, 16- bit, 32-bit, και 64-bit. Αποθηκεύοντας τους αριθμούς -του προηγούμενου παραδείγματοςσαν ακέραιους, με ακρίβεια 64-bit, αυτό βελτιώνει την ακρίβεια: x = uint64(36028797018963968); y = uint64(36028797018963972); x == y ans = 0

Αριθμοί (Numbers) Το MATLAB αποθηκεύει το πραγματικό και το φανταστικό μέρος ενός μιγαδικού αριθμού. Κρατάει το μέτρο των δύο μερών με διαφορετικό τρόπο, ανάλογα με την περίπτωση (context). Για παράδειγμα, η συνάρτηση sort (που βάζει τους αριθμούς στην σειρά σύμφωνα με το μέγεθος, να αυξάνεται) δίνει αποτέλεσμα με βάση το μέτρο και ορίζει την σειρά, με βάση την γωνία της φάσης.

Αριθμοί (Numbers) sort([3+4i, 4+3i]) ans = 4.0000 + 3.0000i 3.0000 + 4.0000i Κι αυτό διότι η γωνία της φάσης: angle(3+4i) ans = 0.9273 angle(4+3i) ans = 0.6435

Αριθμοί (Numbers) Ο συγκριτικός τελεστής == ίσο με απαιτεί και το πραγματικό και το φανταστικό μέρος να είναι ίσα. Οι άλλοι δυαδικοί συγκριτικοί τελεστές: > <, >=, και <= αγνοούν το φανταστικό μέρος του αριθμού και λαμβάνουν υπόψη μόνο το πραγματικό μέρος.

Πράξεις με Μήτρες (Matrix Operators) Οι εκφράσεις χρησιμοποιούν τους γνωστούς αριθμητικούς τελεστές αλλά και κανόνες προτεραιότητας. + Addition - Subtraction * Multiplication / Division \ Left division ^ Power ' Complex conjugate transpose ( ) Specify evaluation order

Τελεστές Σειρών (Array Operators) Όταν οι Μήτρες απομακρύνονται από τον κόσμο της γραμμικής άλγεβρας, τότε γίνονται δισδιάστατες αριθμητικές Σειρές. Οι αριθμητικές πράξεις στις Σειρές γίνονται στοιχείο με στοιχείο. Αυτό σημαίνει πως η πρόσθεση και η αφαίρεση ναι μεν είναι ίδιες και για τις Σειρές και για τις Μήτρες, αλλά ο πολ/σμός είναι διαφορετικός. Το MATLAB χρησιμοποιεί μία τελεία (.) ή ένα κώμα (,), επιπλέον για τις πολλαπλασιαστικές πράξεις στις Σειρές.

Τελεστές Σειρών (Array Operators) Οι πράξεις αυτές γίνονται: + Addition - Subtraction.* Element-by-element multiplication./ Element-by-element division.\ Element-by-element left division.^ Element-by-element power.' Unconjugated array transpose

Τελεστές Σειρών (Array Operators) Εάν η μαγική τετραγωνική Μήτρα του Dürer πολ/σθεί με τον εαυτό της, με πολ/σμό σειρών: A.*A Το αποτέλεσμα θα είναι μια Σειρά που θα έχει τα τετράγωνα των αριθμών από 1 μέχρι 16, σε μια ασυνήθιστη σειρά:

Τελεστές Σειρών (Array Operators) ans = 256 9 4 169 25 100 121 64 81 36 49 144 16 225 196 1

Κατασκευάζοντας Πίνακες (Building Tables) Οι πράξεις με Σειρές είναι χρήσιμες για την κατασκευή πινάκων. Υποθέστε πως n είναι ένα άνυσμα στήλη: n = (0:9)'; Κατόπιν με pows = [n n.^2 2.^n] Δημιουργείται ένας πίνακας με αριθμούς, δυνάμεις του 2:

Κατασκευάζοντας Πίνακες (Building Tables) pows = 0 0 1 1 1 2 2 4 4 3 9 8 4 16 16 5 25 32 6 36 64 7 49 128 8 64 256 9 81 512

Κατασκευάζοντας Πίνακες (Building Tables) Οι βασικές μαθηματικές συναρτήσεις δουλεύουν στις Σειρές στοιχείο με στοιχείο. Έτσι οι εντολές: format short g x = (1:0.1:2)'; logs = [x log10(x)] Δημιουργούν ένα πίνακα με αριθμούς στην 1 η στήλη και τους λογαρίθμους τους στην 2 η στήλη.

Κατασκευάζοντας Πίνακες (Building Tables) logs = 1.0 0 1.1 0.04139 1.2 0.07918 1.3 0.11394 1.4 0.14613 1.5 0.17609 1.6 0.20412 1.7 0.23045 1.8 0.25527 1.9 0.27875 2.0 0.30103

Συναρτήσεις (Functions) Το MATLAB προσφέρει ένα πολύ μεγάλο αριθμό βασικών μαθηματικών συναρτήσεων, των abs, sqrt, exp, και sin, συμπεριλαμβανομένων. Όταν ζητάμε την τετραγωνική ρίζα ή τον λογάριθμο ενός αρνητικού αριθμού, δεν δίνει λάθος, αλλά υπολογίζει το αντίστοιχο μιγαδικό αποτέλεσμα. Το MATLAB επίσης υπολογίζει ένα πλήθος προχωρημένων μαθηματικών συναρτήσεων, όπως οι συναρτήσεις Bessel και gamma.

Συναρτήσεις (Functions) Οι περισσότερες απ αυτές τις συναρτήσεις δέχονται μιγαδικά ορίσματα (arguments). Για να έχετε την λίστα των βασικών μαθηματικών συναρτήσεων, δώστε: help elfun Για να έχετε την λίστα των προχωρημένων μαθηματικών συναρτήσεων και Μητρών, δώστε: help specfun help elmat

Συναρτήσεις (Functions) Μερικές από τις συναρτήσεις, όπως οι sqrt και sin, είναι built in. Δηλαδή αποτελούν κορμό του MATLAB και είναι αρκετά αποτελεσματικές, αλλά οι υπολογιστικές τους λεπτομέρειες δεν είναι εύκολα προσβάσιμες. Άλλες πάλι φτιάχνονται με την γλώσσα προγραμματισμού του MATLAB και οι υπολογιστικές τους λεπτομέρειες είναι προσβάσιμες.

Συναρτήσεις (Functions) Υπάρχουν μερικές διαφορές μεταξύ των συναρτήσεων built-in και των άλλων. Για παράδειγμα, για τις συναρτήσεις built-in, μπορούμε να δούμε τον κώδικά τους. Για τις άλλες, μπορούμε και να τον δούμε και να τον αλλάξουμε, εάν θέλουμε.

Συναρτήσεις (Functions) Αρκετές ειδικές συναρτήσεις δίνουν τις τιμές χρήσιμων σταθερών. pi 3.14159265... i j eps realmin Realmax Inf NaN Imaginary unit, 1 Same as i Floating-point relative precision, ε = 2 52 Smallest floating-point number, 2 1022 Largest floating-point number, (2 -ε)2 1023 Infinity Not-a-number

Συναρτήσεις (Functions) Το άπειρο Inf προκύπτει όταν μία μη μηδενική ποσότητα διαιρείται με το μηδέν, ή όταν μία καλώς ορισμένη μαθηματική έκφραση ξεπερνάει (overflow), το realmax. Το Not-a-number προκύπτει από εκφράσεις του τύπου: 0/0 ή Inf-Inf που δεν έχουν καλά ορισμένες μαθηματικές τιμές.

Συναρτήσεις (Functions) Τα ονόματα των συναρτήσεων δεν είναι κατειλημμένα. Μπορούμε να δώσουμε νέες τιμές σε οποιαδήποτε απ αυτές, π.χ. eps = 1.e-6 Και στην συνέχεια χρησιμοποιούμε αυτή την τιμή στους υπολογισμούς. Η αρχική συνάρτηση μπορεί να αποκατασταθεί με την εντολή: clear eps

Παραδείγματα Εκφράσεων Είδαμε ήδη μερικά παραδείγματα με εκφράσεις του MATLAB. Στην συνέχεια δίνουμε μερικά ακόμα παραδείγματα με τα αποτελέσματά τους: rho = (1+sqrt(5))/2 rho = 1.6180

Παραδείγματα Εκφράσεων a = abs(3+4i) a = 5 z = sqrt(besselk(4/3,rho-i)) z = 0.3730+ 0.3214i

Παραδείγματα Εκφράσεων huge = exp(log(realmax)) huge = 1.7977e+308 toobig = pi*huge toobig = Inf