Διάλεξη 2 / Διάλεξη 2 / σύντομη περιγραφή - Καρατζάς Κωνσταντίνος (ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ, 2015)
σύντομη περιγραφή: Σήμερα, λοιπόν, είμαστε εδώ για να συνεχίσουμε μετά το εισαγωγικό μάθημα. Έχουμε πολλά και ενδιαφέροντα πράγματα να δούμε μαζί. Είναι η δεύτερη συνάντησή μας. Είναι η δεύτερη συνάντησή μας. Είναι η δεύτερη συνάντησή μας. Είναι η δεύτερη συνάντησή μας. Είναι η δεύτερη συνάντησή μας. Και μετά την εισαγωγή που είχαμε κάνει την προηγούμενη φορά, θα μπούμε λίγο περισσότερο έως πολύ περισσότερο ήδη σήμερα στα βασικά στοιχεία που άπτονται της πληροφορικής. Δεν έχουμε ξύσει ούτε καν την κορυφή του παγόβουνου. Το παγόβουνο είναι μπροστά μας και θα το αντιμετωπίσουμε κατά τη διάρκεια του εξαμίνου με έναν τρόπο δημιουργικό και στη βάση της δουλειάς που θα επενδύσουμε όλοι σε αυτό. Θα μιλήσουμε λοιπόν για μεταβλητές και πάλι για ποιον λόγο, διότι κάθε ενέργεια, κάθε υπολογισμός, κάθε δομή προγραμματισμού που θα χρησιμοποιήσουμε προϋποθέτει ότι έχουμε δημιουργήσει μεταβλητές. Έχουμε δημιουργήσει δηλαδή αυτές τις οντότητες οι οποίες κουβαλούν τις τιμές που συμμετέχουν στους υπολογισμούς μας. Χωρίς αυτές, χωρίς τους φορείς των ποσοτήτων αριθμητικών, αριθμητικών, λογικών, αλφαριθμητικών ή οτιδήποτε άλλο, η δουλειά μας στερείται περιεχομένου και αυτές είναι το περιεχόμενο της δουλειάς μας. Έτσι λοιπόν ήδη θα θυμάστε ένα ψήγμα προγράμματος που είχε εμφανιστεί μπροστά μας αν είχαμε αναφερθεί στο πρόβλημα του Ναυαγού που θέλει να υπολογίσει την διαγώνιο της σχεδίας του. Αυτό που ενδεχομένως θα θυμάστε, διότι για αρκετούς ή για και αρκετές από εσάς κάποια πράγματα είναι μη κατανοητά και αυτό είναι το λογικό, είναι πως υπάρχουν διάφορα ονόματα. Τα ονόματα λοιπόν είναι οι μεταβλητές και οι εντολές μας, δεν υπάρχει τίποτε άλλο. Είναι λοιπόν οι μεταβλητές μας, το δοχείο με τα δεδομένα εκφράζονται με τα λεγόμενα νόμιμα ονόματα, άρα ονόματα τα οποία μπορούμε να δώσουμε είναι συγκεκριμένα, υπάρχουν κανόνες που τους έχω αναφέρει ήδη στο πρώτο μάθημα, εννοείται ότι κάθε τύπο που έχουμε αναφέρει είναι γνωστό και δεδομένο και στη βάση αυτού θα εισέλθουμε και στα βίντεο, και στα quiz, και στις ασκήσεις στο εργαστήριο. Φιλοξενούνται σε θέσεις μνήμης, όταν δίνουμε ένα όνομα λοιπόν ουσιαστικά χαρακτηρίζουμε μια περιοχή της μνήμης και στις θέσεις αυτές φιλοξενούνται δεδομένα συγκεκριμένου τύπου. Μια μεγάλη διαφορά σε σχέση με κάποιες άλλες γλώσσες προγραμματισμού ως προς το MATLAB είναι πως δεν χρειάζεται να προκαθορίσουμε τον τύπο των μεταβλητών. Άρα λοιπόν δεν θα πρέπει να πούμε στον υπολογιστή μας οτιδήποτε αφορά τον τύπο, αν είναι δηλαδή μια μεταβλητή που κουβαλά ως περιεχόμενο πραγματικές τιμές, λογικές τιμές, αλφαριθμητικές ή οτιδήποτε άλλο διότι έχουμε και άλλους τύπους μεταβλητών που δεν τις γνωρίζετε ακόμη. Και αυτό διότι στο MATLAB ο ορισμός του τύπου γίνεται ταυτόχρονα με τον ορισμό της μεταβλητής και όχι μόνο αυτό όπως θα θυμάστε όλα είναι πίνακες. Άρα κάθε μεταβλητής στο MATLAB είναι πίνακας. Φιλοξενείται σε δομή πίνακα. Μία βασική αρχή είναι ότι θα πρέπει να μπορούμε να αποφασίσουμε και δεν θα είμαστε σε θέση να το κάνουμε από τώρα αλλά στην πορεία του εξαμίνου θα πρέπει να μπορούμε να αποφασίσουμε από την αρχή το πλήθος και τον τύπο των μεταβλητών που χρειαζόμαστε για να επιλύσουμε το πρόβλημά μας. Αυτή είναι μία από τις διαδικασίες που τρέχουμε όταν λέμε ότι κάνουμε ανάλυση του προβλήματος. Και βέβαια το να δώσουμε στις μεταβλητές μας περιγραφικά ονόματα είναι κάτι πάρα πολύ λογικό και επόμενο, μας βοηθά μια και δεν θα έχουμε να αντιμετωπίσουμε προγράμματα των 2, 5, 10, 20 γραμμών διότι ακόμα και για εσάς που έχετε πρότερη γνώση ή αισθάνεστε ότι έχετε πρότερη γνώση για να είμαι ακριβής προγραμματισμού, τα προγράμματα με τα οποία δουλεύατε ήταν τις τάξεις μεγέθους των 10, 20, 30 γραμμών. Στα πλαίσια του μαθήματος θα ασχοληθούμε με ό,τι απαιτείτε για να δουλέψετε σε δύο τάξεις μεγέθους παραπάνω. Άρα μιλάμε για χιλιάδες γραμμές κώδικα. Οπότε εκεί το A, έχω ονοματίσει την μεταβλητή η οποία είναι η νούμερο 685 με έναν τρόπο που δεν θυμάμαι μετά τι σημαίνει, είναι waste of time. Έτσι, και έχετε καλύτερα πράγματα να κάνετε ελπίζω από το να κάθεστε απόγευματα και βράδια να κοσκινίζετε τον κώδικά σας, ενώ οι υπόλοιποι θα έχουν ολοκληρώσει τις δουλειές τους. Το σύμβολο ανάθεσης, ξεκινώ ναι από τα βασικά και τα θεμελιώδη, είναι το διπλό ίσον και όχι το διπλό. Το διπλό ίσον συνεπάγεται σύγκριση, λογική, ως προς τε άν το περιεχόμενο του αριστερού σκέλους της σχέσης, αριστερούς για εσάς από εδώ, είναι ίσα με το περιεχόμενο του δεξιού για εσάς σκέλους της σχέσης. Η ανάθεση γίνεται με το απλό ίσον, α ίσον 2, η μεταβλητή α λαμβάνει την τιμή 2, β ίσον περιστέρει ανάμεσα σε απλά εισαγωγικά, ναι με αυτόν τον τρόπο ουσιαστικά δίνουμε τιμές αλφαριθμητικού χαρακτήρα σε μεταβλητές που έχουν τέτοιου είδους περιεχόμενο, που θέλουμε εμείς να έχουν τέτοιου είδους περιεχόμενο. Το α ίσον διπλό του 2 είναι ένας λογικός έλεγχος ο οποίος δύναται να έχει μόνο 2 αποτελέσματα, true, false, αλήθεια, ψέμα, τίποτε άλλο. Αν είναι όντως 2 το α, αν δηλαδή το περιεχόμενο της μεταβλητής 2 είναι ίσο με α, το αποτέλεσμα της πράξης είναι λογικό πάντα και είναι true, διαφορετικά είναι false. Αυτή λοιπόν είναι η κατάσταση που έχουμε να δουλέψουμε σε σχέση με τις μεταβλητές και βέβαια όπως ήδη έχω πει και θα τονίσω και σήμερα πολύ, ποια είναι η φύση των μεταβλητών στο MATLAB, όλα είναι πίνακες και διανύσματα. Και τι σημαίνει αυτό, θα πρέπει να δούμε τι σημαίνει ένας πίνακας για τον υπολογιστή πρώτα απ' όλα, πίνακες και διανύσματα γνωρίζετε. Όμως τι είναι για τον υπολογιστή ένας πίνακας και ένα διανύσμα, τι φύση έχει, τι μορφή. Είναι μια περιοχή στη μνήμη προφανώς η οποία έχει βαπτιστεί, άντε καλά θα μου πείτε, πες μας κάτι καινούριο. Τα στοιχεία του πίνακα και εδώ θέλω την προσοχή σας, καταλαμβάνουν διαδοχικές θέσεις στη μνήμη, ένα προς ένα και θα δούμε τι σημαίνει αυτό. Είτε είναι λοιπόν ένα διανύσμα σε μία διάσταση, είτε είναι πίνακας σε δύο διαστάσεις, είτε είναι πίνακας σε τρεις διαστάσεις, είτε είναι πίνακας σε τέσσερις διαστάσεις, διότι ναι βεβαίως και υπάρχουν όλα αυτά. Και θα ήθελα να σας δώσω παραδείγματα αφού πρώτα ρωτήσω το πολύ απλό, πείτε μου ένα διανυσματικό μέγεθος. Ένα απλό διανυσματικό μέγεθος. Ταχύτητα. Χρειάζονται δύο πράγματα τουλάχιστον σε μία διάσταση. Αν είμαστε σε τρεις διαστάσεις, χρειαζόμαστε τρία στοιχεία, έτσι δεν είναι. Άρα το διανύσμα της ταχύτητας έχει τρία στοιχεία. Εάν τώρα μαζί με την ταχύτητα αυτού του σώματος εγώ, έστω του υλικού σημείου για να κάνω τη ζωή μου εύκολη, εγώ θέλω να μιλήσω και για άλλα χαρακτηριστικά του, όπως για παράδειγμα για τη θερμοκρασία, τότε τι θέλω. Θέλω τέσσερα στοιχεία. Εάν εκτός από τη θερμοκρασία θέλω να μιλήσω και για την πίεση στο συγκεκριμένο σημείο, διότι είμαι στοιχείο ρευστού μέσα σε έναν αεριοστρόβυλο. Και προφανώς για να περιγράψω την πορεία και την εξέλιξή μου δεν χρειάζομαι, δεν μπορώ να το κάνω μόνο με την ταχύτητα. Θέλω το διανυσματικό πεδίο της ταχύτητας, θέλω τη θερμοκρασία, θέλω την πτώση-πίεση, θέλω την πυκνότητα. Πόσες, ήδη τρεις, συν άλλες τρεις, έξι μεταβλητές, εξαδιάστατο το στοιχείο μας. Άρα, να πω ως για τον μηχανικό, προκύπτουν οι πίνακες των έξι διαστάσεων. Όπου κάθε εγγραφή, κάθε στοιχείο του πίνακα, μπορεί για παράδειγμα να είναι, αναχρονική στιγμή, η ταχύτητα στον τριδιάστατο χώρο, η θερμοκρασία, η πίεση, η πυκνότητα. Και βέβαια, αν εντάξουμε και το διανύσμα του χρόνου και το στοιχείο του χρόνου, τότε έχουμε εφτά διαστάσεις. Ένα εφταδιάστατος πίνακας, λοιπόν, είναι αυτός που θα μας δώσει τα στοιχεία. Για αυτό το λόγο και προφανώς ενδιαφερόμαστε για πίνακες πολλών διαστάσεων. Για αυτό το λόγο και ενδιαφερόμαστε να δούμε πώς επεξεργαζόμαστε πίνακες πολλών διαστάσεων. Όλα όμως ξεκινούν από τα πρώτα μας βήματα που τα κάνουμε στα μανοδιάστατα διανύσματα, όπου λοιπόν λέμε ότι αυτά, όπως και οι πίνακες πολλών διαστάσεων, βρίσκονται σε μια περιοχή της μνήμης, όπου τα στοιχεία του πίνακα, το ένα μετά το άλλο, έχουν σωθεί εκεί. Για να δούμε λοιπόν πίνακες διανύσματα και μηχανικοί. Διανύσματα αναφέρθηκαν παραδείγματα, ήδη στην απλή μηχανική, στη στοιχειώδη μηχανική, που πλέον ως φοιτητές μηχανολόγοι μηχανικοί εννοείται ότι παίζουμε στα δάχτυλα. Έχουμε διανύσματα όπως τη μετατόπιση, δυνάμεις, ιδιοδιανύσματα σε ταλαντώσεις που θα μάθετε αργότερα, τάσεις και τα λοιπά. Παράδειγμα. Πολύ απλό παράδειγμα. Η κινητική ενέργεια σε ένα δυναμικό σύστημα το οποίο αποτελείται από τρεις σημιακές μάζες, μη ένα, μη δύο και μη τρία, προφανώς δίνεται από αυτή τη σχέση, εφόσον κινούνται σε μία διάσταση, άρα χρειάζομαι μόνο μία διάσταση, με ταχύτητες β1, β2 και β3 αντίστοιχα. Αυτό λοιπόν είναι κάτι πολύ απλό και γνωστό. Το οποίο επίσης είναι πολύ γνωστό ότι γράφεται έτσι. Είναι ο ανάστροφος πίνακας του διανύσματος της ταχύτητας. Επί το μητρό των μαζών και το διανύσμα της ταχύτητας. Για τον φοιτητή μηχανολόγο μηχανικό αυτά προκύπτουν αυτόματα. Και στο μάθημα της πληροφορικής τα θεωρούμε επίσης πράγματα με τα οποία θα ασχοληθούμε, έστω και έμεσα. Γιατί, διότι να τα διανύσματά μας λοιπόν, όλα είναι πίνακες στην μηχανική, δεν μπορούμε να δουλέψουμε διαφορετικά. Θέλω να σας περάσω επίσης με την ευκαιρία αυτού του μαθήματος, αν και δεν κάνουμε ούτε μαθηματικά ούτε μηχανική το μήνυμα, πως ναι, τα μαθηματικά είναι η γλώσσα του μηχανικού, είναι αυτονόητο. Όπως μιλούμε μια συγκεκμένη γλώσσα για να συνονούμαστε εδώ μέσα, οι μηχανικοί μιλούν μαθηματικά, δεν υπάρχει κάτι άλλο. Και βέβαια, για να δούμε και ένα πρόβλημα καθημερινό. Έχουμε λοιπόν σε πολλές περιπτώσεις έναν αρχικό ερθισμό, ένα αρχικό σήμα, μία αρχική διέγερση. Έχω δώσει μία διέγερση στον πίνακα, σημιακά, στιγμιαία στο χρόνο. Θα ταλαντωθεί σαν ένα τύμπανο, σαν μια μεμβράνη τυμπάνου. Έχει άλλες ιδιότητες από αυτές της συμβατικής μεμβράνης, αλλά θα ταλαντωθεί. Αυτό μπορεί να μη μας ενδιαφέρει τόσο πολύ, ως προς το τι θα πάθει και τι θα συμβεί και πως θα συμπεριφερθεί. Αλλά αν είσαστε εδώ, εάν για παράδειγμα όπως συνέβη την πρώτη φορά που έγινε αυτό το docking, είσαστε ο διαστημικός σταθμός και θέλετε να ενωθείτε με το Soyuz, κάτι το οποίο δεν έχει συμβεί στο παρελθόν, είσαστε δηλαδή οι υπεύθυνοι αυτής της συνένωσης στο διάνυστημα, τότε το γεγονός πως αυτά τα δύο πολύπλοκα κατασκευάσματα θα έρθουν στην επαφή της συνεπάγεται και για τα δύο, ότι προφανώς θα υπάρξει ένας αιρεθισμός, θα υπάρξει ένα σήμα. Το πώς θα συμπεριφερθεί η δομή της κάθε μίας από αυτές τις κατασκευές είναι κρίσιμο, διότι είσαι στο διάστημα, δεν μπορείς να κάνεις κάτι, δεν μπορείς να φωνάξεις τον αρχιμηχανικό σου ή τους αρχιμηχανικούς σου, είσαι εσύ και οι κατασκευές σου. Άρα, οι μηχανικοί σου θα πρέπει να έχουν προνοήσει, θα πρέπει να έχουν υπολογήσει, ποιοι μηχανικοί, αυτοί που θα γίνετε εσείς. Δεν θα είναι κάποιος άλλος, δεν θα ασχοληθεί κάποιος άλλος με αυτό το ερώτημα, άνθρωποι όπως εσείς θα ασχοληθείτε και θα αντιμετωπίσετε πίνακες αυτής της τάξης μεγέθους. Και αυτό είναι μικρό πρόβλημα, μόνο 650 γραμμές επί 1950 στήλες. Αυτά είναι τα μεγέθη του πραγματικού κόσμου, που όμως μας δίνουν τη δυνατότητα να υπολογίσουμε όλα αυτά τα εξαιρετικώς ενδιαφέροντα πράγματα, που μας δίνουν τη δυνατότητα να προσοχώσουμε με τη βοήθεια άλγευρας πινάκων και μεθόδων, όπως τα πεπερασμένα στοιχεία, το τι θα συμβεί σε ένα φορτιγάκι όταν θα συγκρουστεί με σταθερό στόχο, που μας δίνουν τη δυνατότητα να μελετήσουμε το πεδίο ροής, και δίνω μόνο κάποια παραδείγματα, το πεδίο ροής το οποίο προκύπτει από την κατακόρυφη ανήψωση μαχητικού αεροσκάφους κατακόρυφης απογείωσης, που θα μας δώσουν το θερμοκρασιακό πεδίο στο εσωτερικό μιας μηχανής εσωτερικής κάυσης, ή που θα μας δώσουν το θερμοκρασιακό πεδίο, σκέφτηκα να βάλω κάτι πιο καθημερινό ακόμη, στο φρένο του ποδηλάτου σας. Και μας χρειάζονται όλα αυτά, διότι το θερμοκρασιακό πεδίο είναι κόπος υλικούς, συνεπάγεται μικροδιαστολές, συνεπάγεται τάσεις, στρεβλώσεις, δυνάμεις, όλα αυτά είναι ο κόσμος μας, κυρίες και κύριοι, και με αυτά και πολλά αλλαξιοθάγωμαστα πράγματα θα ασχοληθούμε εδώ. Για να τα κάνουμε όλα αυτά, θέλουμε επαρκής γνώσης υπολογιστικής, ώστε να μπορέσουμε να ασχοληθούμε με την ουσία και όχι, όπως έλεγε ο Πασκάλι και σας είπα την προηγούμενη φορά, με το άχαρο έργο του να μασάμε αριθμούς που δεν είναι αυτό που αρμόζει σε εφειόντα όπως ο άνθρωπος. Όλα λοιπόν ξεκινούν από τα βασικά, και αυτά σας τα λέω για να σας πείσω ότι ναι, πρέπει να ξεκινήσω από τα πρώτα βήματα, από τα νηπιακά μας βήματα που όλοι κάναμε, ότι ναι, στο MATLAB λοιπόν εγώ ορίζω μία μεταβλητή, ταυτόχρονα με το γεγονός πως της δίνω τιμές, δεν χρειάζεται να την ορίσω πιο πριν, α ή πέντε. Δεν την έχει ξαναδεί τη μεταβλητή α, όμως εκείνη τη στιγμή την έχω ορίσει και της έχω δώσει αριθμητικό περιεχόμενο τη τιμή πέντε. Και μετά αν του ζητήσω την τιμή στη θέση 1 διότι είναι πίνακας, ένα επί ένα, θα μου απαντήσει answer is on πέντε. Αν του ζητήσω την τιμή στη θέση 1,1 πάλι θα μου απαντήσει πέντε. Αν του ζητήσω τα α2 όμως θα μου πει τι μου λες, index out of bounds, ο δίκτης σου είναι εκτός των ορίων μου, λογικό. Δεν μας είπε κάτι παράλογο. Έτσι λοιπόν προφανώς και πρέπει να ασχοληθούμε σε σχέση με τους πίνακες, με την κατασκευή, με τον τρόπο με τον οποίο λαμβάνουν διαστάσεις, με τον τρόπο με τον οποίο έχουμε πρόσβαση και τροποποιούμε πρόσβαση σε και τροποποιούμε τα στοιχεία τους. Με αυτόν τον τρόπο λοιπόν θα δούμε τα ακόλουθα πράγματα. Πρώτα απ' όλα σε επίπεδο κατασκευής πίνακων θα πρέπει να πούμε ότι τα στοιχεία ενός διανύσματος, και ξεκινώ από το διανύσμα γιατί είναι πιο απλό, έτσι είναι σε μια διάσταση, τα στοιχεία ενός διανύσματος ή ενός πίνακα τοποθετούνται εντός τετραγωνικών αγγυλών, ένα το κρατούμε, ενώ δεύτερο, το κόμμα ή το κενό καθορίζουν τις στήλες ενώ το ελληνικό δραστηματικό καθορίζει τις γραμμές. Έτσι λοιπόν έχω το διανύσμα U το οποίο προφανώς θα το ορίσω με τον τρόπο που μόλις είπα, ένα κενό, δύο κενό, τρία κενό, τέσσερα κενό κλείνει η αγγύλη αφού τα κενά είναι αυτά που καθορίζουν τις στήλες, πρώτη στήλη, δεύτερη στήλη, τρίτη στήλη, τέταρτη στήλη, θα μπορούσα να το γράψω και έτσι, θα ήταν το ίδιο πράγμα για το MATLAB. Το δε ελληνικό ερωτηματικό που βλέπετε στο τέλος δεν είναι τίποτα άλλο από μια εντολή που δίνω στο MATLAB να μη μου εμφανίζει στην οθόνη κάθε τι που κάνει, διότι διαφαρτικά θα γεμίζει η οθόνη με μηνύματα. Τι σημαίνει αυτό ότι αν το πληκτρολογήσω και απαντήσω enter και δεν έχω βάλει το ερωτηματικό θα μου απαντήσει U is on toso. Αυτό που του είπα δηλαδή θα μου το επιστρέψει. Αν δεν θέλω να εμφανίζονται όλα αυτά τα μηνύματα απλά προσθέτω το ελληνικό ερωτηματικό. Το δε επίσης είναι ένα αδιάνισμα οι διεστιμές 1, 2, 3, 4 και από εκεί και πέρα το W είναι ένα αδιάνισμα στήλη γιατί διότι το ελληνικό ερωτηματικό έχει καθορίσει πλέον τις γραμμές. Άρα αυτό που βλέπετε ως W με τα ερωτηματικά εκεί το 1 ερωτηματικό, 2 ερωτηματικό, 3 ερωτηματικό, 4 δεν είναι τίποτα άλλο παρά το διάνισμα 1, 2, 3, 4 στήλη. Οπότε λοιπόν μπορώ με τον ίδιο τρόπο να ορίσω πίνακες σε δύο διαστάσεις πρώτη γραμμή η 1, 2, 3, δεύτερη γραμμή η 4, 5, 6 σε έναν πίνακα δύο γραμμών δύο στυλών απλά πράγματα. Και βέβαια ανά πάσα στιγμή να δω το είδος και το περιεχόμενο των μεταβλητών που έχω ορίσει με την εντολή HOOS, η οποία μου παράγει ένα σύνολο μάλλον από πληροφορίες σε στήλες με το όνομα των μεταβλητών, το μέγεθός τους ορίσει την μεταβλητή α, είναι δύο επί τρία, καταλαμβάνει χώρο 48 μπάιτς και είναι διπλής ακριβίας. Θα δούμε τι σημαίνουν τα δύο τελευταία πράγματα. Και με τον ίδιο τρόπο θα μας απαντήσει για όλα τα υπόλοιπα. Πολύ απλός λοιπόν τρόπος ορισμού, όχι ο μόνος ο πιο συνήθις. Πράξεις μεταξύ πινάκων τώρα, για να δούμε διότι είναι από τα πράγματα που χρειάστηκε να κάνετε και τα κάνατε ήδη στην άλγευρα και θα τα κάνετε σε πάρα πολλά μαθήματα. Θα δουλέψετε με πράξεις πινάκων. Άρα λοιπόν προφανώς θέλουμε να έχουμε την ευχέρεια να επιτελούμε όλες αυτές τις απλές πράξεις που γνωρίζουμε με τρόπο άμεσο και αποτελεσματικό. Μπορούμε την βοήθεια του υπολογιστικού μας περιβάλλοντος. Ήψωση σε δύναμη, πρώτα απ' όλα να θυμίσω τους τελεστές. Ήψωση σε δύναμη, είναι αυτό εδώ το σύμβολο. Το τριγωνάκι, πολλαπλασιασμός δεξιά-αριστερή διαίρεση, θα δούμε τι σημαίνει η αριστερή διαίρεση, πρόσθεση αφαίρεση. Και βέβαιο η τελευταία τελεία, που δεν τον γνωρίζετε, ο οποίος οδηγεί στις πράξεις στοιχείο προς στοιχείο. Θα δούμε τις λεπτομέρειες με τη βοήθεια παραδειγμάτων. Έτσι λοιπόν είδαμε μεταβλητές, είδαμε τρόπο ορισμού πινάκων, ας δούμε και πώς τους χρησιμοποιούμε, επιτέλους να κάνουμε κάποια δουλειά που είναι πραγματικά χρήσιμη για έναν μηχανικό. Έστω ότι έχουμε αυτούς τους δύο πίνακες που μίσως να μη φαίνονται πολύ καλά, είναι ο α, ένα δύο τρία τέσσερα, ένα δύο πρώτη γραμμή, τρία τέσσερα δεύτερη γραμμή, και ο β, πέντε έξι, επτά οκτώ πρώτη γραμμή και δεύτερη αντίστοιχα, δύο μικροί πίνακες δύο επί δύο. Πώς λοιπόν προσθέτω τους δύο πίνακες αυτούς, πάρα πολύ απλά α' συν β μας δίνει το αποτέλεσμα της πράξης. Από εκεί και πέρα, αυτή είναι πρόσθεση στοιχείο προς στοιχείο και είναι όμοια με το να γράψουμε α τελεία συν β. Ξαναλέω, η χρήση της τελείας είναι ένας, ουσιαστικά συνεπάγεται πως η πράξη λαμβάνει χώρα αναστηχείου. Θα γίνει σαφέστερο με το επόμενο παράδειγμα. Έχουμε λοιπόν, για παράδειγμα το α-3β. Προφανώς θα υπολογιστεί επευθείας, χωρίς πρόβλημα. Είναι το αποτέλεσμα μιας απλής αλιγευρικής πράξης με χρήση αυτών των δύο πινάκων. Από εκεί και πέρα, α-επιβίτα, ο κανονικός κλασικός πολλαπλασιασμός πινάκων, που γνωρίζουμε ότι λαμβάνει χώρα μόνο όταν ο αριθμός των στυλών του πρώτου είναι ίδιος με τον αριθμό των γραμμών του δεύτερου. Αυτού που έπεται και γνωρίζουμε βέβαια ότι ο πολλαπλασιασμός πινάκων είναι γενικά μια ιδιότητα μη αντιμεταθετική. Το α-επιβίτα δεν συνεπάγεται ότι ισχύει και το β-επι-α. Εδώ λοιπόν άμεσα υπολογίζεται το αποτέλεσμα της πράξης χωρίς άλλη δική μας παρέμβαση. Εάν θέλω όμως τώρα να πολλαπλασιάσω στοιχείο προς στοιχείο τους δύο πίνακες. Είναι δηλαδή ίδιον διαστάσεων και αριθμών στοιχείων και θέλω να πολλαπλασιάσω στοιχείο προς στοιχείο. Άρα το στοιχείο α11 με το β11, το στοιχείο α12 με το β12, το α21 με το β21 και το α22 με το β22. Θέλω δηλαδή η πράξη του πολλαπλασιασμού, ο τελεστής του πολλαπλασιασμού να εφαρμοστεί επί κάθε στοιχείου συγκεκριμένα και όχι επί του συνολού του πίνακα. Τότε τι γράφω, κάτι που δεν φαίνεται πολύ καλά γι' αυτό και το νίζω α-επιβίτα. Σε αυτή την περίπτωση το αποτέλεσμα είναι ο πολλαπλασιασμός στοιχείο προς στοιχείο και είναι το αναμενόμενο. Σε αυτή την περίπτωση όμως οι πίνακες θα πρέπει να έχουν αριθμό συγκεκριμένο. Ακριβώς, όπως είπαμε, ίδιες διαστάσεις και ίδιο ρυθμό στοιχείων. Τώρα, τι άλλο θα μας ενδιέφερε να δούμε, θα μας ενδιέφεραν διάφορα πράγματα. Ένα από αυτά θα ήταν σίγουρα το να υψώσουμε πίνακες σε δύναμη. Είναι κάτι που το χρησιμοποιούμε πολύ συχνά. Το α στο τετράγωνο λοιπόν, η ύψωση του πίνακα α στο τετράγωνο γίνεται πάρα πολύ απλά. Και είναι όμοιο ως πράξη με το πολλαπλασιασμό του α με τον εαυτό του. Στιχειώδες. Και το αποτέλεσμα είναι προφανώς το αναμενόμενο. Εάν όμως θέλω να υψώσω στο τετράγωνο κάθε στοιχείο του πίνακα α ξεχωριστά, τότε με την ίδια λογική θα χρησιμοποιήσω την τελεία ως δίκτη του γεγονότος πως ο τελεστής της ύψωσης της δύναμης θα εφαρμοστεί επί των στοιχείων και όχι επί το συνολό του πίνακα. Οπότε, λοιπόν, σε αυτή την περίπτωση α τελεία στο τετράγωνο, πολλαπλασιασμός στοιχείων όμοιος με το α τελεία επί α. Ερώτημα. Θα το δοκιμάσετε όλο αυτό στο εργαστήριο. Προφανώς είναι λάθος. Τώρα, τι άλλο, η κλασική διαίρεση, τι σημαίνει αυτή η διαίρεση, τι σημαίνει αυτή η διαίρεση, σημαίνει ότι πολλαπλασιάζω από δεξιά τον πίνακα α με τον β στις μίον 1, με τον αντίστροφο του β. Αυτή είναι λοιπόν η κλασική διαίρεση που χρησιμοποιούμε σε πολλές πράξεις, κτλ, κτλ, όμοιο λοιπόν με το α επί β στις μίον 1. Το αποτέλεσμα το αναμενόμενο και βέβαια έχω και την αριστερή διαίρεση που δεν την έχετε δει μέχρι τώρα, η οποία είναι το ισοδύναμο του να πολλαπλασιάσω τον πίνακα α. Άρα α αριστερή διαίρεση με β σημαίνει ότι πολλαπλασιάζω τον α από αριστερά με τον β στις μίον 1, με τον αντίστροφο του β. Και είναι αυτό το αποτέλεσμα, α της συνόμης, στις μίον 1 επί β, και είναι αυτό το αποτέλεσμα που το θέλω πάρα πολύ ως πράξη, όταν λύνω για παράδειγμα γραμμικά συστήματα. Να θυμίσω ότι αυτή είναι η διαδικασία επίλυσης και θα το δούμε στην πορεία και σήμερα. Το αποτέλεσμα επίσης υπολογίζεται σωστά. Και προφανώς όπως μπορώ να κάνω, πολλαπλασιασμός στοιχείο προς στοιχείο, ύψωση σε δύναμη στοιχείο προς στοιχείο, δεν μπορώ να κάνω και διέρεση στοιχείο προς στοιχείο. Κάθε δηλαδή νόμιμη πράξη δύναται να επιτελεστεί στοιχείο προς στοιχείο. Και αυτό είναι πολύ σημαντικό. Η διέρεση λοιπόν στοιχείο προς στοιχείο. Άρα είδαμε εκτός από την κλασική ύψωση σε δύναμη όλου του πίνακα, στοιχείων του πίνακα με χρήση του τελεστή τελεία, είδαμε την δεξιά διέρεση α, δεξιά διέρεση β που είναι ίση, που είναι ισοδύναμη με το α επί β στη μειον 1. Είδαμε την αριστερή διέρεση α, αριστερή διέρεση β που είναι ισοδύναμη με το α στη μειον 1 επί β. Είδαμε την διέρεση στοιχείο προς στοιχείο. Προφανώς έχουμε έτοιμες διαδικασίες για υπολογισμό του ανάστροφου και του αντίστροφου. Ο ανάστροφος, να θυμίσω ότι είναι ο πίνακας, θα μπορούσα αυτό να το γράψω και έτσι. Η χρήση του ταφ ως εκθέτη σημαίνει ότι αυτό είναι ανάστροφος πίνακας και θα πρέπει οι γραμμές να γίνουν στήλες και οι στήλες γραμμές. Άρα λοιπόν ο ανάστροφος πίνακας και ο αντίστροφος πίνακας βεβαίως έχω έτοιμη συνάρτηση, την ίνβ του α, η οποία μου υπολογίζει τον αντίστροφο πίνακα και μου δίνει το ίδιο αποτέλεσμα με αυτό που θα λάβω εάν ζητήσω το α στη μειον 1, διότι βεβαίως μπορώ να υψώσω έναν πίνακα σε αρνητικές ηθετικές δυνάμεις. Υπάρχει λοιπόν ένα σύνολο από διαδικασίες. Ερώτημα. Άλφα τόνος. Τώρα, εκτός από όλα αυτά, έχουμε και πολύ περισσότερα. Είπαμε είμαστε στην κορυφή του παγόβουνου ακόμη. Μάλιστα δεν την έχουμε ακουμπήσει καν, πετάμε από πάνω και λέμε πού στο καλό να προδιωθώ, πού να ξεκινήσω. Το MATLAB περιέχει μια πολύ μεγάλη βιβλιοθήκη συναρτήσεων, η οποία μας δίνει εξαιρετικές δυνατότητες ως προς το να επιτελούμε ένα πλήθος από μαθηματικές πράξεις, και όχι μόνο. Υπάρχουν συναρτήσεις που είναι κομμένες και ραμμένες για πίνακες. Έχουν φτιαχτεί για να εξυπηρετήσουν την ανάγκη μας να δουλέψουμε με πίνακες. Παράδειγμα. Άι, η συναρτήση Άι, μάτι. Άι, παρένθεση, N τελεία M. Δημιουργεί έναν ταυτωτικό μοναδιέο πίνακα των διαστάσεων που δίνουμε εμείς. Ζήρος του N, M. Δημιουργεί έναν πίνακα γεμάτο με μηδενικά. Θα μου πείτε τι το θέλω. Κρατήστε το αυτό το ερώτημα και θα το δείτε αμέσως μετά. Έχω επίσης την ανάγκη να δημιουργώ πίνακα με μονάδες. ONCE του N, M. Έναν πίνακα νηγραμμών μηστυλών γεμάτο με μονάδες. Είναι πραγματικά στοιχειώδες πίνακες. Κάτι που δεν έχετε δει μέχρι τώρα και που θα χρησιμοποιήσουμε κατά κόρον είναι οι πίνακες που περιλαμβάνουν τυχαίους αριθμούς. Για λόγους που θα δούμε κατά τη διάρκεια αυτού του μαθήματος, χρησιμοποιούμε στην επιστήμη του μηχανολόγου μηχανικού σε μεγάλο βαθμό ανάμασα σε πολλά πολλά άλλα και τυχαίους αριθμούς. Και έχουμε δύο κατηγορίες τυχαίων αριθμών τουλάχιστον οι οποίες μας είναι διαθέσιμες απευθείας μέσω του MATLAB και περιβαλλόντων υπολογιστικών όπως το MATLAB. Υπάρχει το σύνολο των τυχαίων αριθμών που έχει κανονική κατανομή και υπάρχει το σύνολο των τυχαίων αριθμών που ακολουθεί την ομοιόμορφη κατανομή. Εάν θέλω την ομοιόμορφη κατανομή, η εντολή μου είναι η rand από το random. n, m. n γραμμές μη στείλες. Εάν θέλω το περιεχόμενο του πίνακά μου να είναι μεν τυχαίοι αλλά να ακολουθούν την κανονική είναι rand n, rand normal δηλαδή. Κανονική κατανομή. Και έχω και έναν πίνακα που το χρησιμοποιώ πολύ σε πολλά παραδείγματα, τον λεγόμενο μαγικό πίνακα, Magic to n, ο οποίος έχει συγκεκριμένη ιδιότητα, είναι πάντοτε τετραγωνικός, άρα Magic to 5 σημαίνει ότι θα κατασκευάσω έναν πίνακα 5x5 που έχει το βασικό χαρακτηριστικό όπως το άθλισμα των γραμμών και των στυλών του είναι το ίδιο. Είναι ένας αριθμός. Εκτός όμως από αυτά έχω και άλλα και θα τα δω στην πορεία. Να δω πρώτα παραδείγματα. 0 του 2,3 ποιο θα είναι το αποτέλεσμα ένας πίνακας προφανώς με μηδενικά 2 γραμμών 3 στυλών. Εξαιρετικά απλό. i του 2, μοναδιέως πίνακας 2x2. Magic του 2, 1,3,4,2. Το άθλισμα γραμμών στυλών είναι... τι θα έπρεπε να είναι. Rand του 1,5, αυτό δεν φαίνεται καθόλου καλά. Εδώ μάλλον σας κλέβω λίγο. Πρέπει να με πιστέψετε ότι εμφανίζεται ένας πίνακας, μάλλον ένα διάνυσμα εδώ, που είναι μιας γραμμής και 5 στυλών με τυχαίους αριθμούς. Οι τυχαίοι αριθμοί να σας πω έχουν ένα συγκεκριμένο χαρακτηριστικό, είναι μεταξύ του 0 και του 1. Είναι πραγματικοί αριθμοί μεταξύ του 0 και του 1. Πάντα. Rand του 5, πίνακας τυχαίων αριθμών 5x5. Ορίστε, εδώ τώρα αρχίζει και γίνεται πιο ενδιαφέρον και θα δείτε γιατί. Τον δημιουργώ απλά για να έχω ένα αντικείμενο επί του οποίου θα δείξω πρακτικά κάποιες βασικές διαδικασίες. Πώς για παράδειγμα εγώ θα αναφερθώ στο στοιχείο που βρίσκεται στη δεύτερη γραμμή και στην τέταρτη στήλη. Θα ζητήσω, επειδή προσέξτε τι έχω κάνει, έχω αναθέσει, έχω κρύψει πολλά πράγματα εδώ και θέλω την προσοχή, ιδιαίτερα αυτοί που αισθάνονται λίγο άβολα με την πληροφορική ακόμη. Ελπίζω ότι θα περάσει, αυτό είναι σαν την αυτεία. Μετά την πρώτη επαφή με το πλοίο αρχίζεις και συνέρχεσαι. Λοιπόν, έχω χρησιμοποιήσει μια συνάρτηση, την round 5, στο δεξί μέρος του ίσον, έτσι δεν είναι. Η οποία τι μου παράγει, έναν πίνακα με τυχαίους αριθμούς 5x5. Μέχρι εδώ εντάξει, έχω αναθέσει το αποτέλεσμα της πράξης αυτής, των πίνακαυτών, σε μια μεταβλητή. Σε ποια? Σε αυτή που βρίσκεται αριστερά του ίσον, η οποία είναι η α. Άρα η μεταβλητή α ορίστηκε, ακριβώς την στιγμή που χρησιμοποιήθηκε αυτή η εντολή, και έχει ως περιεχόμενο το αποτέλεσμα της εκτέλεσης της συνάρτησης round με όρισμα 5. Είναι λοιπόν το περιεχόμενο της α, ο πίνακας 5x5 τυχαίων αριθμών. Ορίστε. Πώς λοιπόν εγώ θα αναφερθώ για παράδειγμα στο στοιχείο που βρίσκεται στη δεύτερη γραμμή και στην τέταρτη στήλη, με τον κλασικό τρόπο που το κάνω και σε επίπεδο άλγευρας. Θα ζητήσω το α του 2,4, έτσι δεν είναι. Δεύτερη γραμμή, τέταρτη στήλη, θα πρέπει να μου απαντήσει 0,4218 και αυτό θα κάνει. Εννοείται. Αν όμως του ζητήσω το α8, θα είναι λάθος, θα λάβω απάντηση. Εδώ ισχύει κάτι που έχει γράψει ο Arthur Conan Doyle στον περίφημο Sherlock Holmes, το οποίο μας λέει κάτι πάρα πολύ απλό, ότι όταν αποκλείσω, θέτω ένα ερώτημα, και αποκλείσω οτιδήποτε άλλο, τότε αυτό που παραμένει, όσο και αν φαίνεται παράλογο, είναι η αλήθεια. Ισχύει επίσης κάτι άλλο που το έχει γράψει ένας πολύ πολύ μεγάλος μαθηματικός της θεωρίας αριθμών. Όταν θέτω ένα ερώτημα και δεν μπορώ να λάβω την απάντηση, πρέπει να κάνω ένα βήμα πίσω και να αναρωτηθώ. Έχω θέσει το σωστό ερώτημα ή αλλιώς καταλαβαίνω σωστά το ερώτημα. Τι ζητώ εγώ από τον υπολογιστή να μου βρει ποιο από τον πίνακα α το 8ο στοιχείο. Μα εγώ τον πίνακα α τον όρισα ως έναν πίνακα δύο διαστάσεων. Πώς μπορώ να αναφερθώ μονοδιάστατα. Ανατρέχω στα βασικά. Τι είπαμε όταν αναφερθήκαμε για πρώτη φορά στους πίνακες. Ότι ο πίνακας καταλαβάνει μια περιοχή της μήμης και ότι ανεξάρτητα από τις διαστάσεις, όλα τα στοιχεία του πίνακα σώζονται το ένα μετά το άλλο διαδοχικά σε γειτονικές περιοχές. Άρα προφανώς υπάρχει μια εσωτερική λογική στη βάση της οποίας αριθμώνται όλα τα στοιχεία. Όχι μόνο σε πίνακες μιας διάστασης που είναι τα διανύσματα που γνωρίζουμε. Στις δύο διαστάσεις, στις τρεις, στις τέσσερις, στις μη. Και η απάντηση εδώ θα μου δείξει και πώς γίνεται αυτό. Η απάντηση του α8 είναι το 0,5469. Γιατί? Διότι δεν υπάρχει πίνακας για τον υπολογιστή. Ο πίνακας είναι ένα δικό μας διανοητικό κατασκευασμά. Για τον υπολογιστή υπάρχει μόνο μια περιοχή της μνήμης, η οποία θα χωρέσει στη συγκεκριμένη περίπτωση 5x5, 25 τιμές. Και οι τιμές αυτές θα κάθονται σε θεσούλες στη μνήμη, ή μία δίπλα στην άλλη, κατά στήλες. Πρώτη τιμή, δεύτερη τιμή, τρίτη τιμή, τέταρτη τιμή, πέμπτη τιμή. Έκτη τιμή, έβδομη τιμή, όγδοη τιμή. Άρα όταν του ζητούμε το στοιχείο α8, είναι σαν να του ζητούμε να μας αναφέρει το περιεχόμενο της θέσης νούμερο 8, σε αυτή τη γραμμική μορφή που έχει για τον υπολογιστή ο Πίνακας. Θα ήθελα να παρακαλέσω να μην ξεχάσετε και εγώ θα επιχειρώ σε τακτά διαθήματα να σας υπενθυμίζω. Είναι λοιπόν δικό μας διανοητικό κατασκεύασμα το γεγονός ότι ο Πίνακας είναι 2x2. Το ίδιο συμβαίνει με τους 3x3, με τους 4x4 στις δύο διαστάσεις. Το ίδιο συμβαίνει με τις τρεις διαστάσεις, με τις τέσσερις διαστάσεις. Άρα λοιπόν παίρνει μία μία τις διαστάσεις, πρώτα γραμμή για την πρώτη στήλη, μετά κάθε στήλη, άρα πρώτα για αυτούς που καταλαβαίνουν, με το j ίσον με 1 πρώτα όλα τα i, μετά αφού εξαντλήσει όλα τα i θα πάρει όλα τα j, και αφού εξαντλήσει όλα τα j θα πάρει όλα τα k, και αφού εξαντλήσει όλα τα k θα πάρει όλα τα z και πάει λέγοντας. Όλα είναι στη σειρά. Και αυτό είναι ένα από τα μεγάλα προβλήματα που έχουν πολλοί και που είχα και εγώ βέβαια ως φοιτητής. Έχω κάνει απίστευτες πατάτες, όπως λέμε, διότι για παράδειγμα νομίζουμε ότι ο πίνακας είναι σε συγκεκριμένων περιοχών και ξαφνικά συνειδητοποιούμε ότι άλλα πράγματα είχαμε εμείς κατα νου και άλλα πράγματα η μηχανή υλοποιεί. Διότι η μηχανή έχει μια πολύ απλή λογική. Έτσι λοιπόν έχουμε δει τα εξής πολύ ωραία πιστεύω ήδη μέχρι τώρα πράγματα και μετά θα δούμε ακόμα πιο ενδιαφέροντα όπου πραγματικά και για εσάς οι οποίοι αισθάνεστε άνεση θα υπάρξει μια πρόκληση. Γιατί θα ήθελα να δω αυτούς οι οποίοι έχουν άνεση να συμμετέχουν στα θέματα της δεύτερης ώρας αλλά και για αυτούς οι οποίοι δεν αισθάνονται άνεση η πρόκληση θα είναι ίδια. Η δυσκολία δεν θα είναι μεγαλύτερη ή μικρότερη. Τι είδαμε λοιπόν, είδαμε προφανώς τη χρήση των μεταβλητών, απαραίτητο συστατικό, είπαμε ότι ένα πρόγραμμα για τον Αδαή, για τη γιαγιά μου αν ζούσε, που δεν ήξερε προγραμματισμό, ήταν δύο πράγματα. Έτσι, ένα συνοθήλευμα από λέξεις και κάτι αριθμοί παράξανε συμβολάκια. Αυτές οι λέξεις είναι δύο πράγματα, είτε εντολές είτε μεταβλητές. Αν αφήσουμε στην άκρη τις εντολές, που είναι συγκεκριμένες διαδικασίες, ζήνουν στου πέντε, η μύτωνο του πέντε. Όλα τα υπόλοιπα είναι μεταβλητές, οι μεταβλητές είναι περιοχές της μνήμης και στην περίπτωση που οι μεταβλητές μας φιλοξενούν πίνακες, τότε κάθε στοιχείο του πίνακα κάθεται δίπλα στο άλλο στη σειρά. Είναι μια γραμμή λοιπόν αυτή η αριθμή. Από εκεί και πέρα είναι καλό να γνωρίζουμε ότι έχουμε πολλές συναρτήσεις που μας βοηθούν να κάνουμε απλές πράξεις. Προφανώς, όπως ήδη θα υποκτεύεστε, είπαμε τώρα αρχίσαμε λίγο, πήραμε την αξινούλα μας και ξύνουμε το παγόβουνο. Όταν μπορείς να κάνεις τόσο εύκολα, απνευστεί πράξεις όπως πολλαπλασιασμούς πινάκων, σκεφτείτε τι άλλο θα μπορείς να κάνεις. Όταν για παράδειγμα στα ηλικιαγά μας χρόνια ή στο πρώτο έτος, είχαμε προβλήματα του τύπου να αντιστρέψεις έναν πίνακα πέντε επί πέντε, να λύσεις ένα σύστημα γραμμικών εξισώσεων και όλο αυτό ανάγοντας τον υπολογισμό οριζουσών κτλ. Και τώρα έχεις ένα υπολογιστικό περιβάλλον που απλά τα κάνει όπως εμείς αναπνέουμε. Προφανώς, εννοείται ότι πλέον η πρόκληση είναι σε άλλο επίπεδο, έτσι. Για να δούμε όμως κάποια περισσότερα πράγματα τα οποία μας είναι απαραίτητα. Όταν δουλεύουμε με πίνακες, και το παράδειγμα πιστεύω ότι ήταν αρκετά σαφές ως προς τις ανάγκες της άλγευρας πίνακων, όταν δουλεύουμε λοιπόν με πίνακες, ένα από τα βασικά στοιχεία της εργασίας μας, άπτεται της ανάγκης μας να έχουμε πρόσβαση σε στοιχεία των πίνακων αυτών. Έχω γράψει στον πίνακα το α που είναι ο πίνακα στοιχαίων αριθμών, που χρησιμοποιήσαμε πριν το διάλειμμα. Εδώ λοιπόν, εάν θελήσω να λάβω το περιεχόμενο των θέσεων του πίνακα, που βρίσκονται στις γραμμές από ένα έως τρία και στις στήλες από την τρίτη έως και την τελευταία, πώς θα μπορούσα άραγε να το κάνω. Πώς λοιπόν αναφέρομαι σε θέση σπίνακα. Προφανώς θα πρέπει με κάποιον τρόπο, εντός της παρένθεσης, να αναφερθώ σε αυτές τις περιοχές τιμών. Προφανώς θα πρέπει με κάποιον τρόπο να μιλήσω στο υπολογιστικό περιβάλλον για τις περιοχές τιμών που θέλω να προσπελάσω. Αυτό λοιπόν μπορώ να το κάνω με τον τρόπο που βλέπετε εδώ, ο οποίος είναι καινούργιος για εσάς. Του λέω ότι, κοίτα ξαναδείς, θέλω ως προς τις γραμμές, διότι δύο πράγματα δεν έχω σε έναν πίνακα δύο διαστάσεων, γραμμές και στήλες, ως προς τις γραμμές μέσα στην παρένθεση να μου βρεις τα στοιχεία που βρίσκονται από την γραμμή 1 έως, αυτή είναι η έννοια της ανωκάτω τελείας, έως την γραμμή 3 κόμμα. Τελείωσα να μιλώ για γραμμές, μετά το κόμμα μιλώ για στήλες και ως προς τις στήλες θέλω να μου βρεις τα στοιχεία που βρίσκονται από την 3 έως την τέλος των στυλών, όσες κι αν είναι αυτές. Αυτό λοιπόν είναι ήδη κάτι καινούργιο και για εσάς που έχετε ξανακάνει πληροφορική, διότι προφανώς δεν έχετε δουλέψει έτσι. Ξαναλέω λοιπόν εδώ ότι εντός του ορίσματος όπου καθορίζω τα στοιχεία που θέλω να προσπελάσω αναφέρομαι πρώτα πριν το κόμμα στις γραμμές και αμέσως μετά στις στήλες. Θέλω να προσπελάσω τις γραμμές από 1 έως 3, η λογική μου είναι αριθμός γραμμής, αν ο κάτω τελεία σημαίνει έως αριθμός στήλεις. Κόμμα σημαίνει ότι τελείωσα το σκέλος που άπτεται των γραμμών, δεν μιλώ πλέον για γραμμές. Μετά το κόμμα αναφέρομαι μόνο σε στήλες. Και θέλω τις στήλες ποιες, αυτές που ξεκινούν από τον αριθμό που έπεται του κόμματος, 3 μέχρι τον αριθμό που αντιστοιχεί στην 1. Και για αυτό το λόγο λοιπόν θα πάρω τα στοιχεία από την 1η γραμμή μέχρι την 3η και τα στοιχεία από την 3η στήλη μέχρι το τέλος. Αυτά είναι τα στοιχεία που βλέπετε. Για να δούμε όμως και άλλους τρόπους διότι θέλει εξάσκηση αυτή η διαδικασία. Για να δούμε και άλλους τρόπους λοιπόν. Τι άλλο μπορούμε να δούμε. Να αναρωτηθούμε για παράδειγμα και αυτό θα γίνει με έναν τρόπο που καθιστά την όλη διαδικασία πιο ενδιαφέρουσα. Πώς θα μπορούσα να λάβω τα στοιχεία των γραμμών που είναι περιτία αριθμή. Και των στυλών 2, 3 και 5. Ξανά θέλω τα στοιχεία των γραμμών που αντιστοιχούν σε περιτούς αριθμούς, οι δίκτες είναι περιτή αριθμή και οι στήλες είναι 2, 3 και 5. Πάλι με την ίδια λογική θα δημιουργήσω εντός της παρένθεσης αυτό που θέλω με το κόμμα να παίζει το ρόλο της μετάβασης από ό,τι έχω να πω σε γραμμές και σε στήλες. Ως προς τις γραμμές θέλω να ξεκινήσω από την 1, προφανώς αφού είναι περιτές και να προχωρήσω στην 3 και στην 5. Οπότε λοιπόν με αυτόν τον τρόπο θα μπορούσα να δουλέψω ως εξής, ξεκίνα από την πρώτη γραμμή και με βήμα 2 πήγαινε μέχρι το πέρας όλων των γραμμών τί είπα από την αρχή ότι θέλω όλες τις περιτές. Οι περιτές με τι ξεκινούν με 1, τι βήμα έχουν 2, μέχρι πού πάνε δεν με νοιάζει. Έχω μια γενική διαδικασία η οποία λειτουργεί είτε ο πίνακας είναι 5x5 είτε 50.000x50.000. Άρα εδώ του λέω και το γράφω επίσης στον πίνακα, θέλω να ξεκινήσω από την πρώτη γραμμή να κινούμε με βήμα 2, άρα η λογική είναι από βήμα έως. Και να φτάσω μέχρι το τέλος όσες λοιπόν και αν είναι οι γραμμές, όποιος και αν είναι ο δείκτης αριθμού γραμμών θα φτάσω μέχρι εκεί και ως προς τις στήλες θέλω κάτι επίσης καινούριο που το βλέπουμε για πρώτη φορά δείχνω σε στήλες με τη βοήθεια ενωστή, διανύσματος. Τρομακτικά πράγματα συμβαίνουν στο σήμα. Βάζω δηλαδή εκεί όπου περίμενα να μιλήσω για στήλες ένα διανύσμα το οποίο έχει ως τιμές, τις τιμές των στυλών που θέλω. Θέλω την στήλη νούμερο, δεν θυμάμαι κιόλας, την στήλη νούμερο 2, την στήλη νούμερο 3 και την στήλη νούμερο 5. Με αυτό τον τρόπο λοιπόν έχω δείξει, έχω μιλήσει για όλες τις περιτές γραμμές και για συγκεκριμένες στήλες και ταυτόχρονα έχω δείξει και για πρώτη φορά σε εσάς και θα το δείτε αναλυτικά στα εργαστήρια. Μετά στα εργαστήρια, γι' αυτό και σας λέμε πρώτα είμαστε στη θεωρία για να τα δούμε, να τα ακούσουμε, να τα συζητήσουμε αν χρειαστεί, μετά στα εργαστήρια για να τα εφαρμόσουμε και εν διαμέσως μελετούμε θεωρία βλέπουμε εργαστήρια είναι ήδη αναρτημένη η εκφώνηση των εργαστήριων. Οι ασκήσεις που θα δουλέψετε είναι ήδη αναρτημένες, το βίντεο είναι διαθέσιμο, το κουΐζ είναι διαθέσιμο, είναι για εσάς εκεί, εκμεταλλευτείτετα. Άρα πρώτη γραμμή με βήμα 2 μέχρι το πέρας των γραμμών και όσες στήλες υπάρχουν σε αυτό το διάνισμα. Ένας δεύτερος λοιπόν τρόπος για να μιλήσω για περιοχές του πίνακα είναι αδιανόητο μέχρι τώρα, να χρησιμοποιήσω ένα διάνισμα ας πούμε και να χρησιμοποιήσω δείκτες βηματικού χαρακτήρα. Με αυτόν τον τρόπο ουσιαστικά ένα, δύο, εντ, από, βήμα, έως. Αυτό θα ήθελα να το θυμάστε γιατί είναι και διαφορετικό από τον τρόπο με τον οποίο δουλεύουν κάποιες άλλες γλώσσες που είναι στη λογική του από, έως, βήμα. Εδώ έχουμε το από, βήμα, έως. Εδώ για παράδειγμα αν εγώ αυτό όλο το αναθέσω σαν περιεχόμενο σε μια καινούργια μεταβλητή που την ονομάσω Β, ΒΕΤΟΝΑΤΟΥ, παρενθέσεις, αυτόματα το έχω αναθέσει σαν καινούργιο πίνακα και κάνω λοιπόν πράξεις και αυτό είναι το πιο ωραίο, παρακαλώ. Οι αγγείλοι ορίζει το περιεχόμενο, οι παρενθέσεις χρησιμοποιούνται για να αναφερθούν σε περιοχές του πίνακα. Άρα, ό,τι θέλω να πω σε σχέση με περιοχές του πίνακα ή συγκεκριμένο στοιχείο, θέλω το στοιχείο στην πέμπτη γραμμή και πέμπτη στήλη, α του παρένθεση πέντε κόμμα πέντε. Όλη λοιπόν η αναφορά σε πίνακες, σε σημεία, στοιχεία και περιοχές πίνακων γίνεται με τη βοήθεια παρενθέσεων. Τα στοιχεία που βρίσκουμε μέσα στις παρενθέσεις είναι ίσα για το ανεφό των διαστάσεων. Δεν είναι μονοδιάστητος ο πίνακας, βρίσκουμε ένα σετ. Είναι δύο διαστάσεων, βρίσκουμε δύο σετ τιμών χωρισμένα με κόμμα. Είναι τριών διαστάσεων, τρία σετ τιμών χωρισμένα με κόμμα. Αυτά λοιπόν είναι πράγματα που θα τα δούμε αναλυτικά και μετά, για να δούμε ένα ακόμη. Ναι, εδώ είναι και στο κάτω μέρος. Όλα τα στοιχεία της πρώτης γραμμής. Θέλω μόνο αυτά, την πρώτη γραμμή. Εδώ θα δω μια άλλη χρήση της ανωκάτω τελείας. Η ανωκάτω τελείας σημαίνει όλες οι στίλες. Άρα, ξέρετε πώς μπορώ να γράψω όλα τα στοιχεία της πρώτης γραμμής. Μπορώ να του πω και θα το γράψω στον πίνακα γιατί δεν θα φαίνεται καλά. Όλα τα στοιχεία της πρώτης γραμμής. Θέλω τα στοιχεία του α, τα οποία θα βρίσκονται στην πρώτη γραμμή. Αυτό δεν θέλω. Τελείωσα να μιλώ για γραμμές. Έχω να πω κάτι άλλο για γραμμές? Όχι, ας βάλω κόμμα. Και τι θέλω? Όλες τις στίλες. Η λογική του όλες τις στίλες είναι ανωκάτω τελεία. Οπότε, λοιπόν, πάλι χρησιμοποιώ την παρένθεση για να μιλήσω για περιοχή του πίνακα. Χρησιμοποιώ το κόμμα για να σηματοδοτήσω ότι έχω τελειώσει να μιλώ για γραμμές. Πάω τώρα στις στίλες, πάντοτε στο παράδειγμα του Διδιάσα του πίνακα και χρησιμοποιώ την ανωκάτω τελεία ως το συμβολισμό που μου λέει ή που θα πει στον υπολογιστή μας ότι θέλω να ασχοληθείς για κάθε στίλη. Όλα αυτά που αναφέρουμε εδώ δεν είναι η μόνη τρόπη, έχουμε πάρα πολλές τρόπους με τη βοήθεια των οποίων μπορούμε να λειτουργήσουμε. Η λογική των παραδειγμάτων που έχω επιλέξει έχει να κάνει με το ότι θέλω να σας παρουσιάσω και εναλλακτικές διαδικασίες. Τη χρήση των παρενθέσεων, τη χρήση του κόμματος, τη χρήση της ανωκάτω τελείας για να σημαδοτήσει το από έως ή το από βήμα έως, τη χρήση της ανωκάτω τελείας για να σημαδοτήσει το για κάθε αν δεν βάλω τίποτα άλλο εκεί, τη χρήση διανύσματος στη θέση στοιχείων γραμμών ή στιλών. Ερώτημα. Έρχεσε τώρα στο επόμενο. Μπορούμε να δημιουργήσουμε, μπορούμε να κάνουμε οτιδήποτε. Εδώ, από αυτό που μας ενδιαφέρει είναι να τα προσπελάσσουμε. Άπαξ και τα προσπελάβνω, προφανώς και μπορώ μετά να τα αναθέσω κάπου αλλού, να τα τροποποιήσω, να κάνω πράξεις επί αυτόν. Να πω ότι θέλω μόνο αυτά τα στοιχεία του πίνακα ή να ας πούμε βαθμολογείς φοιτητών και θέλω να τους δώσω ένα bonus 20% Όλα αυτά τα στοιχεία να τα πολλαπλοχιάσω επί ένα κομμαδίο. Μόνο αυτά. Έτσι. Για να δούμε, με τον ίδιο τρόπο λοιπόν, ακριβώς εδώ έρχομαι που ήρθε και ο συνάδεφός σας, τροποποίηση, με τον ίδιο τρόπο που προσπελάβνουμε επιλεκτικά, ανάλογα με τις ανάγκες του αλγορίθμου μας, στοιχεία ενός πίνακα, μπορούμε προφανώς και να αλλάξουμε τιμές τους. Εάν για παράδειγμα έχω έναν μαγικό πίνακα τρία επί τρία, τον Μάτζικ τρία, τον α ήσον Μάτζικ τρία, τότε προφανώς μπορώ για παράδειγμα να του πω, κοίταξε να δεις, για κάποιο λόγο θέλω το στοιχείο της δεύτερης γραμμής και της δεύτερης τύλης να πάρει την τιμή 100. Άλφα του 2,2 ίσον 100. Πήγε λοιπόν και για τη συγκεκριμένη θέση, αντικατέστησε οποιαδήποτε άλλη τιμή με την 100. Επίσης του είπα, μετά χρησιμοποίησα την εντολή display, disp του α, για να δείξω το περιεχόμενο του πίνακα α. Και ορίστε ο ίδιος πίνακας με αλλαγμένο μόνο, 100 η καινούργια τιμή, το στοιχείο στη θέση 2,2. Εδώ όμως τι κάναμε, για να σας δω, προσέξτε και το λέω και πάλι γιατί μπορεί να μη φαίνεται καλά, του έχω πει. Το α, τα στοιχεία λοιπόν του α, βλέπω α σημαίνει στοιχεία του α, παρένθεση μάλιστα, από 1 έως 2 κόμμα, από πρώτη γραμμή μέχρι δεύτερη γραμμή. Και από τη δεύτερη στήλη μέχρι τέλος, να γίνει ίσο με 0 στου 2,2. Ουσιαστικά λοιπόν του είπα ότι πάρε τον αρχικό πίνακα, νάτος, και ξέρεις τι θα κάνεις. Αλλά για τις γραμμές από 1 έως 2 και για τις στήλες από 2 έως τέλος, αντικατέστησε όλα τα στοιχεία αυτά με έναν καινούργιο πίνακα. Που θα είναι δύο επί δύο γιατί αυτό είναι και το τμήμα στο οποίο αναφέρομαι, ξαναδείχνω, από πρώτη γραμμή μέχρι δεύτερη γραμμή. Ξεχνάω αυτά τα στοιχεία. Και από δεύτερη στήλη μέχρι τέλος ξεχνάω και αυτά τα στοιχεία. Αυτά λοιπόν τα στοιχεία θα γίνουν ίσα με 0 στους 2,2. Γι' αυτό και αυτή η αλλαγή που βλέπουμε. Ερώτηματα στο βάθος. Εάν δεν βρούμε κάποιον πιο έξυπνο τρόπο που να μας κάνει τη ζωή πιο εύκολη, άρα αν δεν βρούμε έναν αλγόριθμο, διότι υπάρχει αλγόριθμος για να το κάνει αυτό, τότε θα αναγκαστούμε να το κάνουμε. Οι απαντήσεις είναι πάντοτε στα χέρια μας. Όσο περισσότερα πράγματα επενδύσουμε στο αλγοριθμικό σκέλος, τόσο λιγότερα θα επενδύσουμε στο πρακτικό μέρος του, να τραβάμε κουπί. Για να δούμε λοιπόν, προφανώς μπορούμε να δημιουργήσουμε εύκολα διανύσματα, τα οποία έχουν συγκεκριμένα χαρακτηριστικά. Δείτε τώρα κάτι καινούργιο επίσης. Θα ήθελα εγώ ένα διανύσμα, το U, που έχει στοιχεία από το 0 έως και το 0,5 με βήμα 0,1. Του λέω λοιπόν ότι θα ήθελα το U, αγγίλη, γιατί ορίζω, δεν αναφέρομαι σε, δεν κάνω πράξεις επί, δεν προσπελάω νοτά, αλλά ορίζω πίνακα, άρα αγγίλη. Πρώτο στοιχείο 0 και μάλλον στο τελευταίο διανύσμα. Τελευταίο στοιχείο 0,5, βήμα 0,1. Δεν έβαζα το βήμα εδώ, τότε αυτό ματανοείται το 1 και επειδή εδώ θα ήταν σαν να του έλεγα από 0 έως 0,5 με βήμα 1, θα δείτε τι θα μου λήγει. Θα μου λήγει πού πας, τι κάνεις, δεν γίνονται αυτά. Το βήμα μπορεί να είναι και αρνητικό, μπορεί να είναι οτιδήποτε, το βήμα μπορεί να είναι και το αποτέλεσμα μιας φράξης, μιας άλλης παράστασης. Γεγονός είναι ότι παράγεται με αυτόν τον τρόπο το συγκεκριμένο διανύσμα, το 0,0,1,0,2,0,3,0,4,0,5. Με όμοιο τρόπο προφανώς μπορώ να χρησιμοποιήσω πίνακες για να κατασκευάσω νέους πίνακες, κάτι επίσης καινούριο. Δηλαδή, προσέξτε ότι εδώ έχω έναν πίνακα, τον α, τον έχω ορίσει, είναι ο 1,2,3,4, σωστά. Και αμέσως πιο κάτω ορίζω έναν καινούριο πίνακα ο οποίος έχει ωστυχία πίνακες. Ποια πίνακες, πρωτοφάνη πράγματα. Πρώτο στοιχείο, και μάλιστα έχει, προσέξτε πόσες γραμμές και πόσες στήλες έχει αυτός ο πίνακας εδώ, έχει 1,2 στοιχεία στην πρώτη γραμμή, 1,2 στοιχεία στην δεύτερη γραμμή. Το πρώτο στοιχείο είναι όλος ο πίνακας α. Νάτος. Το δεύτερο στοιχείο της πρώτης γραμμής είναι επίσης όλος ο πίνακας α. Ορίστε. Αλλάζω γραμμή. Ελληνικό ερωτηματικό. Το πρώτο στοιχείο της δεύτερης γραμμής είναι ο μηδενικός 0,2,2. Νάτος. Και το δεύτερο στοιχείο της δεύτερης γραμμής είναι ο 1. Με αυτόν τον τρόπο κατασκεύασα έναν ολόκληρο πίνακα. Οπότε, λοιπόν, το μήνυμα εδώ είναι ότι προφανώς μπορώ να χρησιμοποιήσω πίνακες ως στοιχεία άλλων πίνακων. Που είναι στοιχεία άλλων πίνακων, που είναι στοιχεία άλλων πίνακων. Άρα, λοιπόν, εάν μου χρειαστεί σε επίπεδο αλγορίθμου, κατά τη διάρκεια επίλυσης ενός προβλήματος, μια τέτοια διαδικασία, γνωρίζω ότι είναι διαθέσιμη. Γι' αυτό και ασχολούμαι με αυτή. Επίσης έχω, είπαμε, ένα σύνολο από εντολές. Μία από αυτές είναι η repmat, η οποία επαναλαμβάνει έναν πίνακα, repeat a matrix. Μπορούμε, λοιπόν, με τη βοήθεια αυτής της διαδικασίας, με τη βοήθεια της εντολής repmat, να δημιουργήσουμε πολύ μεγάλους πίνακες συνδυάζοντας έναν ή άλλους μικρότερους πίνακες και διανύσματα. Εδώ έχω συγκεκριμένα τον α, ναι, το ψωμοτήρι μας, όπως λέμε, τον 1, 2, 3, 4, που χρησιμοποιώ και του λέω, χρησιμοποίησε ως στοιχείο τον α για μία γραμμή και δύο στήλες. Αυτή είναι η σύντεξη της repmat. repmat του παρένθεση, πρώτο πράγμα μες στην παρένθεση. Ποιον πίνακα θέλεις να χρησιμοποιήσω, τον α. Νάτον. Δεύτερο στοιχείο, για πόσες γραμμές, μία. Για πόσες στήλες, δύο. Ορίστε, για μία γραμμή, γιατί όλο αυτό είναι μία γραμμή για την repmat, γιατί το στοιχείο είναι ο 1, 2, 3, 4. Νάτο το πρώτο στοιχείο. Και δύο στήλες, πρώτη στήλη, δεύτερη στήλη. Δημιουργήσα καινούργιο πίνακα λοιπόν. repmat, προσέξτε τώρα, επίσης μπορώ να το κάνω δυναμικά, χρησιμοποιήσω στοιχείο τι, τα 1 έως 3. Νάτο, αυτόματα το διάνυσμα 1, 2, 3 χρησιμοποιώ. Για τρεις γραμμές και δύο στήλες. Άρα το στοιχείο μου, η μονάδα με την οποία χτίζω τον καινούργιο πίνακα τώρα, είναι ένα διάνυσμα ποιο, το 1, 2, 3 γραμμή. Και το θέλω για τρεις γραμμές και δύο στήλες. Μία, δύο, τρεις γραμμές, νατο το στοιχείο μου, και δύο στήλες. Μία στήλη, δεύτερη στήλη. Οπότε, το εμφανίζω στοιχείο λοιπόν, πρώτη γραμμή, πρώτη στήλη, δεύτερη γραμμή, πρώτη στήλη, τρίτη γραμμή, πρώτη στήλη, και ούτω καθεξής για τη δεύτερη στήλη. Με αυτόν τον τρόπο, πλάθω έναν καινούργιο πίνακα, χρησιμοποιώντας ως βασικό υλικό, ως ζυμάρι, έναν προηγούμενο πίνακα. Από εκεί και πέρα, έχω, και εδώ έρχομαι σε πράγματα πιο ενδιαφέροντα υπολογιστικά, προφανώς και άλλες εγγενείς συναρτήσεις, και κάποιες από αυτές θα ήθελα ήδη να σας τις παρουσιάσω, με στόχο να θέσω υπόψη σας δυνατότητες υπολογιστικές, που μέχρι τώρα θα απαιτούσαν ικανό κόπο και προσπάθεια. Εάν θα ήθελα να βρω το ελάχιστο και το μέγεστο ενός υπολογιστικός, εάν θα ήθελα να βρω το ελάχιστο και το μέγεστο ενός διανύσματος, πώς θα το έκανα. Σκεφτείτε ότι έχω για παράδειγμα σε ένα διανύσμα, το σύνολο των βαθμολογιών όλων των αποφύτων του τμήματος από καταβολής του τμήματος. Το τμήμα δημιουργήθηκε το 1973-1974, έχουμε 40 χρόνια αποφύτων, έχουμε κάποιες χιλιάδες ανθρώπων. Είναι ένα μία μελιτέο σύνολο αριθμών. Θέλω να το βάλω σε μία σειρά, όχι, θέλω να βρω το ελάχιστο και το μέγεστο αριθμό. Ποιος είναι ο ελάχιστος αριθμός πτυχίου, προφανώς το 5, εντάξει, ποιος είναι ο μέγεστος αριθμός πτυχίου, είναι το 10, ερώτημα. Έχει πάρει ποτέ κανείς πτυχίου με 10 από το τμήμα, είναι ένα θέμα. Λοιπόν, άρα έχω έτοιμες συναρτήσεις, την μη και τη μαξ, οι οποίες μου βρίσκουν για κάθε διάνισμα, η πίνακα, το ελάχιστο και το μέγεστο στοιχείο. Επίσης, εάν θα ήθελα πράγματα που ξεκινάτε να τα κάνετε, αν θυμάμαι καλά, λίγο στην πρώτη ηλικίου και μετά τα έχω χάσει λίγο, μέση τιμή, μεσαία τιμή, τυπική απόκλυση. Σκεφτείτε να έχετε έναν πίνακα με πάρα πολλά αριθμητικά δεδομένα ως αποτέλεσμα ενός πειράματος. Πώς θα βρείτε αυτά τα βασικά στατιστικά χαρακτηριστικά, μέση τιμή, τυπική απόκλυση. Έχω έτοιμες συναρτήσεις. Μια άλλη εξαιρετικά χρήσιμη, όχι απλά εξαιρετικά χρήσιμη, κρίσιμα χρήσιμη εντολή, θα έλεγα, της οποίας η χρησιμότητα θα φανεί σε επόμενα μαθήματα, αλλά είναι κρίσιμα χρήσιμη, είναι η length. Γιατί, διότι αυτή μου δίνει το συνολικό μήκος ενός διανίσματος. Ενώ ταυτόχρονα έχω άθρισμα και γινόμενο στοιχείων διανισμάτων, να τα θρήσω όλα μαζί, sum. Να τα πολλαπλασιάσω όλα μαζί, product. Μπορώ να κάνω ταξινόμηση περί στοιχείων διανίσματος από το μεγαλύτερο προς το μικρότερο, είτε τα στοιχεία του διανίσματος είναι αριθμοί, είτε είναι λέξεις, είτε οτιδήποτε άλλο. Προφανώς, λοιπόν, έχω έτοιμους αλγορίθμους ταξινόμησης στην μορφή συναρτήσεων, αλλά θα δούμε μαζί και αλγορίθμους ταξινόμησης στην πορεία αυτού του μαθήματος, γιατί είναι πολύ χρήσιμη για να μάθουμε να δουλεύουμε αλγοριθμικά. Έχω διαδικασίες στρογγύλευσης τιμής στον εγκύτερο ακέραιο και πάει λέγοντας. Και βέβαια έχω και τα κράτησα τελευταία κάποια από τα πιο σημαντικά στοιχεία σε σχέση με την άλγεδρα πινάκων, τη δυνατότητα να υπολογίζω εσωτερικό και εξωτερικό γινόμενο διανισμάτον, καθώς επίσης και τη νόρμα, το μήκος διανίσματος. Και τα παραθέτω για εσάς συνοδευόμενα από το εξής βασικό ερώτημα. Τι εκφράζει το εσωτερικό και το εξωτερικό διάνισμα ή και η νόρμα, το μήκος δηλαδή ενός διανίσματος για έναν μηχανικό και γιατί μας ενδιαφέρουν όλα αυτά. Γιατί ασχολούμαστε με όλα αυτά. Γιατί δηλαδή δίνουμε ιδιαίτερη σημασία. Κάποια από τα περισσότερα από τα πράγματα που θα έδιναν να απαντήσεις στο ερώτημα αυτά, αυτό θα τα μάθετε κατά διαγραφή στο σπουδόν σας, εννοείται. Για να δούμε πρώτα κάποια παραδείγματα. Στρογγίλευση. Χρησιμοποιώ την εντολή round για να στρογγιλοποιήσω το αποτέλεσμα της πράξης round του 1,5 είναι ένα σπίνακα στοιχειών αριθμών. Τι είναι δεκαδικοί, δεν είναι τυχαίοι από 0 έως 1. Άμα τους πολλοπλασιάσω πίε 100 δεν παραμένουν δεκαδικοί. Θέλω να τους στρογγιλοποιήσω, να τους κουρέψω. Να είναι το round. Θέλω το μήκος του α. Τι θα μου απαντήσει 5. Γιατί είναι 5 τα στοιχεία του α. Θέλω το μέγιστο του α, max του α. Μου απαντά 76. Θέλω τη μέση τιμή του α. Μου απαντά 55. Θέλω το γινόμενο όλα τα στοιχεία του α. Έχω απάντηση. Θέλω, και αυτό είναι ίσως λίγο πιο μπροστά από ότι αφορά το δεύτερο μας μάθημα, αλλά ήθελα να σας το δείξω, θέλω να μου βάλεις τη σειρά όλα τα στοιχεία του α και να μου πεις και τη θέση τους σε ευθύνουσα σημά, σειρά. Μου λέει λοιπόν, να το shorted διάνισμα, είναι το 76, 75, 57, 38 και 29 και να και οι θέσεις που είχαν στο αρχικό διάνισμα. Η μεγαλύτερη τιμή ήταν η δεύτερη, η δεύτερη ήταν η τρίτη, η 57 ήταν στο νούμερο 5, η 38 ήταν στο νούμερο 4, η 29 στο νούμερο 1. Και βέβαια θέλω και το dot α του α, που είναι ένα γινόμενο πιο, θα το δούμε τώρα, θα το δούμε λοιπόν συναρτήση της συζήτησης που θα κάνουμε για εσωτερικά και εξωτερικά γινόμενα αμέσως μετά. Εγγενείς συναρτήσης, τι άλλο έχω, έχω ορίζουσα πίνακα βέβαια, έχω συναρτήση που την υπολογίζει αμέσως. Τάξη πίνακα, ιδιοτιμές και ιδιοσυναρτήσεις, στοιχεία κύριας διαγωνίου πίνακα, όλα αυτά τα έχω διαθέσιμα. Και για να δούμε και κάποια επιπρόσθετα παραδείγματα. Αν ο α είναι ο Magic 3, το size του α προφανώς είναι 3 και 3, τρεις γραμμές, τρεις στήλες, έτσι δεν είναι. Το μέγιστο του α θα μου απαντήσει ανατί, εδώ θα πρέπει να αρχίσουμε να μαθαίνουμε ότι μου απαντά αναστήλη, το μέγιστο αναστήλη, η μέση τιμή του α θα μου δώσει τη μέση τιμή αναγραμμή αναγραμμή και αναστήλη. Άρα η εντολή μην δεν παράγει αυτόματα την μέση τιμή σε έναν πίνακα δύο επί δύο, η εντολή μην παράγει την μέση τιμή αναστήλη σε έναν δύο επί δύο. Άρα αν θέλω τη μέση τιμή ενός πίνακα δύο επί δύο, μπορώ πολύ απλά να πάρω το μην του μην του α, τη μέση τιμή της μέσης τιμής. Υπολογίζω δύο φορές τις μέσες τιμές και καθάρισα. Θα τα δούμε όμως παρακάτω, ήδη θέλω λίγο έτσι να σας ταρακουνήσω με αυτά. Και μπορώ να πάρω τα διαγώνια στοιχεία, μπορώ να πάρω την τάξη, είναι τρία, μπορώ να πάρω την ορίζουσα, ιδιοδιανίσματα και ιδιοτιμές που δεν ξέρετε αυτή τη στιγμή τι είναι, αλλά ας πούμε ξέρετε, ζητώ ταπεινά συγγνώμη, διότι γνωρίζετε λοιπόν το αλιγευρικό σκέλος, άρα θα μάθετε και το φυσικό σκέλος. Τι εκφράζει ένας πίνακας ιδιοδιανισμάτων για ένα πραγματικό σύστημα, ας πούμε τα ιδιοδιανίσματα του σασί ενός αυτοκινήτου, τι εκφράζουν. Εκεί είναι το θέμα. Είναι απαραίτητο να μάθουμε τι είναι μαθηματικά και αμέσως μετά να πάμε στο τι εκφράζουν. Εκφράζουν συχνότητες ή σχετίζονται με συχνότητες στις οποίες είναι ευαίσθητο το σασί ως προσταλαντώσεις για κάθε μία από τις τρεις διαστάσεις του χώρου, είτε στρεπτικές είτε καμπτικές, θα τα μάθετε αυτά. Ιδιοδιανίσματα λοιπόν και ιδιοτιμές και ας πάμε σε κάτι πολύ κλασικό. Ένα πρόβλημα επίλυσης γραμμικού συστήματος. Γραμμικά συστήματα έχουμε δει ή ήδη έχετε δει από το λύκειό σας και φέτος ήδη στο πρώτο εξάμινο. Για να δούμε λοιπόν ένα πρόβλημα, γιατί τα γραμμικά συστήματα δεν είναι τόσο καινούργιες όσο νομίζουμε. Από το βιβλίο 9 κεφάλαια μαθηματικής τέχνης το οποίο γράφτηκε κατά την δυναστία των Χαν 200 μ.Χ. Εκεί λοιπόν υπήρχε το εξής πρόβλημα ανάμεσα σε πολλά. Έλεγε ο άγνωστος εμάς συγγραφέας. Υπάρχουν τρία είδη καλαμποκιού εκ των οποίων εάν τα βάλω σε δεμάτια Χ1, Χ2 και Χ3 τότε 3 δεμάτια του πρώτου είδους και 2 δεμάτια του δεύτερου είδους και ένα δεμάτι του τρίτου είδους μου κάνουν συνολικά 39 μεζούρες. 9 μεζούρες, 2 δεμάτια του δεύτερου του πρώτου είδους και 3 δεμάτια του δεύτερου είδους αλλά και ένα δεμάτι του τρίτου είδους θα μου κάνουν 34 μεζούρες και ένα δεμάτι του πρώτου είδους μαζί με 2 δεμάτια του δεύτερου είδους και ένα δεμάτι του τρίτου είδους θα μου δώσουν 26 μεζούρες. Το ερώτημα που έχετε ο άγνωστος εμάς συγγραφέας είναι ποιο είναι το περιεχόμενο των δεματιών. Ήταν ένα πραγματικό πρόβλημα που προέκυπτε από την ανάγκη διαχείρισης πολύ μεγάλων εκτάσεων καλλιεργίσιμων εδαφών στην αυτοκρατορική περίοδο των Χαν κατά τη διάρκεια της περιόδου από το 200 έως το 100 π.Χ. Και σκέφτηκα ότι από όλα τα προβλήματα γραμμικών συστημάτων θα είχε ενδιαφέρον να ασχοληθούμε με την επίλυση αυτού. 2.000 χρόνια μετά λοιπόν για να δούμε τι μπορούμε να κάνουμε. Να σας πω δε ότι έφτανε πολύ κοντά στον τρόπο επίλυσης που έχουμε εμείς τώρα προτείνοντας πολλαπλασιασμό καταστήλες με συντελεστές ώστε να μηδενήσει άγνωστες και στο τέλος να του προκύψει μια άγνωστη και να αντικαταστήσει και να φτάσει στη λύση. Εκπληκτικά πράγματα. Αυτό στην εποχή μας ονομάζεται η μέθοδος απαλυφής κατά γκάους. Πρώτα απ' όλα το εκφράζω μαθηματικά το πρόβλημά μου. Γι' αυτό σας λέω ότι είναι πάρα πολύ σημαντικό. Δεύτερο, εάν α, ε, χ, ε, β όπου τα συγκεκριμένα στοιχεία αντικατοπτρίζουν τα στοιχεία του προβλήματος τότε μπορώ πολύ εύκολα να ορίσω τα μητρώα, τους πίνακες α και β με τον τρόπο που γνωρίζω και να κάνω τον υπολογισμό της ορίζουσας του α γιατί γνωρίζω εγώ από τα μαθηματικά μου ότι θα πρέπει η ορίζουσα να είναι μη μηδενική για να έχει λύσει το σύστημα και από εκεί και πέρα να κάνω μια εύκολη αριστερή διαίρεση για να βρω τα χ. Άρα βρίσκω τις τιμές 6.5 για χ1, 1.5 για χ2 και 16.5 για χ3. Για να δούμε τώρα όμως κάτι διαφορετικό. Εσωτερικό και εξωτερικό γινόμενο. Γιατί ασχολούμαστε με αυτά. Θα σας πω ένα από τα πολλά παραδείγματα. Αν και μπαίνω στον πειρασμό να παρισφρίσω στα χωράφια της φυσικής και μετά αυτό συγκρατούμε και λέω βγες έξω γιατί θα χαθούμε εκεί μέσα. Παρ' όλα αυτά όμως θα ήθελα να μοιραστώ μαζί σας τα εξής απλά στοιχεία. Τα οποία γνωρίζετε απλά αν τα δούμε με άλλη οπτική πιστεύω ότι θα κάνουν την ενασχόλησή μας με το εσωτερικό και εξωτερικό γινόμενο πιο ουσιαστική. Γιατί αυτό που θέλουμε είναι να έχει ουσία το περιεχόμενο της γνώσης μας. Τρισδιάστω το σύστημα ξόνων. Έχω λοιπόν το σύστημα χ. Έχω λοιπόν το σύστημα χ, ψ και ζ. Ηλικός σημείο το οποίο έχει κατά τη διάρκεια της χρονικής στιγμής ταφ διάνισμα θέσεις R του ταφ επί του οποίου ηλικού σημείου ασκείται ασκείται ψάχνω να δω το χρώμα της δύναμής ασκείται φουξ δύναμη F και μετά από χρονικό βήμα ΔΕΛΤΕ το υλικό μας σημείο έχει μετακινηθεί κατά ΔΕΤΟΑΡ σε μια καινούργια θέση όπου το διάνισμα θέσεις του θα το κάνω λίγο πιο μεγάλο το ΔΕΤΟΑΡ όπου το διάνισμα θέσεις του είναι το ΔΕΤΟΥ συγγνώμη είναι το R του ταφ συν ΔΕΛΤΑΤΑΦ και τώρα εσείς θα αναρωτιέστε κοντά στο πέραστις δεύτερης ώρας γιατί ασχολούμαστε με όλα αυτά επιτρέψτε μου το έργο της δύναμης γνωρίζουμε εμείς το στοιχειώδες έργο σε σχέση με αυτή τη στοιχειώδη μετατόπιση ότι δίδεται από μια πολύ απλή σχέση είναι το γινόμενο του διανείσματος της δύναμης επί το διάνισμα, την μεταβολή του διανείσματος θέσεις συμφωνούμε και ουσιαστικά δίνεται από τη σχέση F, νόρμα του F για νόρμες δεν ήρθαμε για έτοιμοι συναρτήσεις που μας δίνουν τη νόρμα διανείσματος επί νόρμα του ΔΕΤΟΥΡ R, επί το συνειμήτωνο της γωνίας θ όπου θ, η γωνία που σηματίζει η δύναμη συναρτήσει του μονοπατιού κίνησης του υλικού σημείου Ήδη λοιπόν από αυτό το πολύ απλό παράδειγμα τι έχει εισαχθεί η ανάγκη υπολογισμού νόρμας διανεισμάτων έτσι δεν είναι, πρέπει να υπολογίσω νόρμες, μέτρα διανεισμάτων η ανάγκη υπολογισμού πώς το λέμε αυτό το γινόμενο, εσωτερικό ή εξωτερικό να ακούσω, πόσοι λένε ότι είναι εσωτερικό πόσοι θεωρούν ότι είναι εξωτερικό άρα λοιπόν εδώ αν και στη γνώση οι δημοκρατικές διαδικασίες δεν έχουν νόημα εδώ οι δημοκρατικές διαδικασίες αποτύπωσαν το όρθο είναι ένα εσωτερικό γινόμενο το εσωτερικό είναι ένα γινόμενο το οποίο δεν είναι διανεισματικό το αποτέλεσμα δηλαδή της πράξης δεν είναι διανεισμα έτσι δεν είναι, ενώ το εξωτερικό γινόμενο είναι διανεισμα παρεπιπτόντος να σας πω και το εξής θυμάστε επειδή είπαμε ο πειρασμός του να μπει κανείς στον παραδυσσένιο κήπο της φυσικής είναι μεγάλος θυμάστε πως ονομάζουμε τις δυνάμεις όπως δυνάμεις βαρύτητας ή ελατηρίου για τις οποίες το συνολικό έργο δεν εξαρτάται καθόλου από την τροχιά αλλά από την αρχική και τελική θέση του σώματος μπλε, συντηρητικές, ένα χαρακτηριστικό αυτών των συντηρητικών δυνάμεων και σας το δείχνω γιατί έχουμε στο MATLAB τη δυνατότητα να υπολογίζουμε τέτοια πράγματα είναι το εξής παρακαλώ, η κανή και αναγκαία συνθήκη για να είναι συντηρητική μια δύναμη είναι το γινόμενο αυτό, αυτά είναι διανύσματα έτσι προσπαθώ να τα γράψω με μια πιο βαριά, πιο παχιά γραμμή το γινόμενο αυτό να είναι τέλειο διαφορικό δηλαδή να ισχύει ότι το F επί τε του R θα είναι ίσο με το διαφορικό μια συνάρτησης που την ονομάζουμε συνάρτηση δυναμικού και είναι μία συνάρτηση μόνο σε σχέση με χαρακτηριστικά του χώρου γιατί συναρτάται μόνο από περιοχές του χώρου και το βασικό χαρακτηριστικό αυτών των συναρτήσεων, των πεδίων αυτών των συναρτήσεων είναι ότι είναι αστρόβυλα δηλαδή ισχύει εάν λοιπόν είμαστε σε πεδίο συντηρητικό εάν το έργο εξαρτάται μόνο από την αρχική και την τελική θέση τότε αυτό σημαίνει ότι έχω μία συνάρτηση δυναμικού και αυτό επίσης σημαίνει ότι το πεδίο της συνάρτησης δυναμικού είναι αστρόβυλο δηλαδή ισχύει ότι, εδώ τώρα μπαίνει το εξωτερικό προσέξτε με, ανάδελτα διανισματικό εξωτερικό γινόμενο της συνάρτησης δυναμικού ίσο με μηδενικό διάνισμα όπου το ανάδελτα, το διανισματικό είναι ένα διάνισμα αυτής της μορφής στοιχειώδη διανίσματα κατά χ, κατά ψ, κατά ζ στην πρώτη γραμμή της ορίζου σας διαφορικά ως προς χ ψ και ζ στην δεύτερη γραμμή της ορίζου σας και μηδενικάδια στην τρίτη γραμμή Να λοιπόν πως μέσα σε ένα πάρα πολύ απλό παράδειγμα δένονται εξωτερικό εξωτερικό γινόμενο και νόρμες Για να μπορέσω να υπολογίσω το έργο σε μία ή δύο περίπτωση δύναμης συντηρητικού πεδίου πρέπει να μπορώ να υπολογίσω εξωτερικό γινόμενο Ο υπολογισμός του εσωτερικού γινωμένου προϋποθέτει τον υπολογισμό του μέτρου της νόρμας των διανισμάτων της δύναμης και της στοιχειώδης μετατόπισης ενώ στην περίπτωση του συντηρητικού πεδίου το χαρακτηριστικό του πεδίου είναι ότι είναι αστρόβυλο πράγμα που σημαίνει μαθηματικά ότι το εξωτερικό γινόμενο του ανάδελτα με το πεδίο είναι το μηδενικό διανισμά Ε, βουαλά, τα έχουμε όλα Και όλα αυτά ασχολούμενοι με τι, με αυτό που νομίζαμε ότι είναι λυμένο θέμα η κίνηση ενός υλικού σημείου σε βαρυτικό πεδίο, έλεος Άρα λοιπόν, πιστεύω ότι συμφωνείτε μαζί μου πως το να ασχοληθούμε με εσωτερικό εξωτερικό γινόμενο υπολογισμό μέτρων είναι εξόχως σημαντικό και εξόχως βασικό για το μηχανικό Πάνω σε αυτά έχουμε χτίσει ολόκληρες περιοχές, έτσι, και το γνωρίζουμε Για να δούμε λοιπόν με τη βοήθεια του Μάτλαου Πρώτα απ' όλα να θυμίσω, ναι, ότι ο ρυθμός παραγωγής ενέργειας είναι ένα εσωτερικό γινόμενο, το είδαμε Τι άλλο είναι εσωτερικό γινόμενο, η απόσταση δύο σημείων Συμφωνούμε, αν έχω διάνεσμα xα ενός σημείου και xβ ενός άλλος σημείου Τότε η απόσταση, να, ένα σημείο α, και άλλο σημείο β, εκφράζονται από διανείσματα στον διδιάστατο ευκλήδιο χώρο Η απόσταση των δύο αυτών σημείων δίνεται από το εσωτερικό γινόμενο τον διανείσμα των θέσεις Και βέβαια έχω τη συνάρτηση dot, το εσωτερικό λοιπόν γινόμενο χώρο, Έχω τη συνάρτηση dot, το εσωτερικό λοιπόν γινόμενο δι, έχει τη συνάρτηση dot σε MATLAB Και είναι αριθμός, και μπορώ να υπολογίσω το θήτα, δηλαδή την γωνία κτλ Έχω όλες αυτές τις δυνατότητες να μεταφέρσω μάλιστα και τη γωνία από ακτίνια σε μοίρες Γιατί εξ ορισμού όλοι οι υπολογισμοί γίνονται σε ακτίνια στο MATLAB Έχω έτοιμη συνάρτηση ra του deg για μετατροπή από ακτίνια σε μοίρες Μια διαφορά με το Octave, το Octave δεν την έχει αυτή τη συνάρτηση στην βασική του έκδοση που κατεβάζετε Πρέπει να κατεβάσετε και κάποιες βιβλιοθήκες, κατά τα άλλα επειδή με ρωτήσατε στο διάλειμμα Είναι ταυτόσιμα όλα μεταξύ Octave και MATLAB, δηλαδή κώδικας που τρέχει σε Octave τρέχει σε MATLAB Όπως είναι κάνετε copy-paste και δεν χρειάζεται τίποτα άλλο Και το εξ οτερικό γινόμενο είναι διάνισμα Και για να δούμε και κάποια άλλα μεγέθη που έχουν εξ οτερικό γινόμενο Έτσι, είναι ένα διάνισμα λοιπόν αυτού του τύπου Εμπλέκονται τα μοναδιαία διανίσματα πάντα Και το εξ οτερικό γινόμενο είναι για παράδειγμα η ρωπή μιας δύναμης Άρα εάν θέλετε να εκφράσετε την ρωπή ενός οχήματος Πολλές ή πολλοί από εσάς μπορεί να διαβάζετε τεστ για την υποδύναμη και την ρωπή κινητήρων Αυτό που διαβάζετε εκεί τι σχέση έχει με την πραγματικότητα Θα πρέπει ο μηχανικός να μπορεί να το μεταφράσει αυτό Είναι ας πούμε η ρωπή του κινητήρα κατά την έξοδο στο στροφαλοφόρο Είναι η ρωπή σε δυναμόμετρο σε πέδι Έχω βάλει το όχημα πάνω σε πέδι και μετρώ εκεί Που είναι αυτή η ρωπή Σε κάθε περίπτωση εγώ δεν θα δώσω την απάντηση Θα σας αφήσω να αναρωτηθείτε το συζητούμε στο διάλειμμα αν θέλετε Αλλά είναι ένα διανισματικό μέγεθος η ρωπή Έχει ένα χαρακτηριστικό είναι κάθετο σε τί Στο επίπεδο που ορίζει το διάνισμα της δύναμης και το διάνισμα της θέσης Και επίσης έχω κι άλλα μεγέθη Έχω τη στροφορμή που είναι εξωτερικό γινόμενο Έχω την ορμή που είναι εσωτερικό γινόμενο Πάρα πολλών στοιχειώδη βασικά μεγέθη Εκφράζονται με τη βοήθεια εσωτερικού και εξωτερικού γινωμένου CROSS είναι η εντολή, η συνάρτηση υπολογισμού του εσωτερικού γινωμένου Σε αντιδιαστολή με την DOT που είναι η εντολή, η συνάρτηση υπολογισμού του εσωτερικού γινωμένου Και βέβαια ισχύει πάντοτε όπως σε κάθε περίπτωση πολλαπλασιασμού διανισμάτων Η ανάγκη του να έχουν τις ίδιες διαστάσεις που επιτρέπουν το παραπλασιασμό τους και τα λοιπά Συνοψίζοντας τώρα στη δεύτερη ώρα μας Τι είδαμε, γνώση διαχείρισης πινάκων Τι εδώ, δεν βαρυγκομάμε τώρα, θα βαρυγκομίσουμε αν βαρυγκοπίσουμε Όταν δεν θα έχουμε καινούργια πράγματα να μάθουμε Η γνώση διαχείρισης πινάκων είναι λοιπόν εξόχως σημαντική Πιστεύω ότι μοιραζόμαστε αυτό το συμπέρασμα Επίσης, όλα είναι πίνακες, σαφώς Όλα τα αντιμετωπίζουμε γιατί έτσι είναι πίνακες σε μάτλαβ, οκτέιβ, σύλλαβ, όλα αυτά τα ισοδύναμα του μάτλαβ Το οκτέιβ είναι αυτό που μπορείτε να χρησιμοποιείτε εσείς με μεγάλη άνεση Έχουμε πολλούς διαφορετικούς μεταξύ τους τρόπους άμεσης αναφοράς σε περιοχές πινάκων Θυμάστε από μέχρι βήμα, τέλος, αρχή, δείξε από εδώ, πήγαινε από εκεί Πληθώρα από μεθόδους που μας δίνουν τη δυνατότητα πολύ άμεσα, εύκολα και αποτελεσματικά Να αναφερόμαστε σε περιοχές πίνακα Έχουμε έτοιμες για χρήση από εμάς συναρτήσεις Και βέβαια, η γνώση της χρήσης του υπολογιστικού περιβάλλοντος προϋποθέτει πολύ καλή γνώση της σχετικής θεωρίας, γι' αυτό και βρισκόμαστε όλοι εδώ, έτσι Είδαμε λοιπόν στην πρώτη μας ώρα θέματα που άπτονται μεταβλητών Η δεύτερη ώρα επικεντρώθηκε σε θέματα που αφορούν πίνακες και διανύσματα, τρόπο προσπέλασης, διαχείρισης, μεταβολής και χρήσης τους Με μία γεύση μαθηματική σε σχέση με την έννοια και χρήση γινομένων ιδιαίτερα σημαντικών στην μηχανική του εσωτερικού και του εξωτερικού γινομένου Τώρα και κατά τη διάρκεια της τρίτης ώρας θα δούμε επίσης κάποια πολύ σημαντικά πράγματα Αρχικά θα μιλήσουμε για τα δεδομένα και θα δούμε το πώς αυτά αναπαρίστανται σε επίπεδο υπολογιστή Αμέσως μετά θα αναφερθούμε σε σφάλματα ενώ επίσης θα αναφερθούμε και από εδώ και πέρα θα αναφερθούμε ακόμη πιο συστηματικά στα επόμενα μαθήματα σε δομές προγραμματισμού Το βασικό ερώτημα της αναπαράστασης του περιεχομένου των μεταβλητών με την χρήση υπολογιστών έχει να κάνει με το πώς μπορεί κανείς να χρησιμοποιήσει ένα διαδικό σύστημα για να αναπαράξει οποιαδήποτε πληροφορία Είναι γνωστό σε εσάς ότι όλες οι πληροφορίες είναι διαδικές σε επίπεδο υπολογιστή Μερικά βασικά μεγέθη παρακαλώ να κλείσετε πόρτες και να έρχεστε στην ώρα σας γιατί διαφορετικά όλοι οι υπόλοιποι βλέπουν εσάς που μπαίνετε Μερικά λοιπόν βασικά μεγέθη, η έννοια του μπιτ και του μπάιτ γνωστή σε εσάς 0 ή 1 οι δύο τιμές του μπιτ, 8 μπιτ 1 μπάιτ, 1 κλμ 1024 μπάιτ και πάει λέγοντας Προφανώς λοιπόν κάθε ακέραιο και όχι μόνο αριθμός αναπαρίσταται ως διαδικός με τη χρήση του διαδικού τρόπου αναπαράστασης αριθμητικών ποσοτήτων Ένα βασικό ερώτημα είναι ποιο είναι το εύρος τιμών πρακτικά, πόσο μεγάλους και πόσο μικρούς αριθμούς μπορούμε να διαχειριστούμε με τη βοήθεια ενός υπολογιστή Αρχικά με τη βοήθεια ενός μπάιτ, ακριβώς επειδή το μπάιτ περιλαμβάνει 8 μπιτς και έτσι έχει ένα μέγιστο 255 τιμών Μπορούμε να έχουμε 127 αρνητικούς και 127 θετικούς αριθμούς Πράγμα που σημαίνει ότι εάν οι υπολογιστές μας ήταν τις τεχνολογίες που ήταν οι υπολογιστές στην περίοδο, την εποχή που μηχανικοί όπως εμείς δημιούργησαν συσκευές με τις οποίες πήγαμε στη Σελήνη Τότε οι πράξεις που θα μπορούσαμε να κάνουμε αυτό ήταν αυτού του επιπέδου Με αυτού του επιπέδου τους υπολογιστές πήγαν στη Σελήνη Αυτού του επιπέδου τους υπολογιστές εμείς δεν τους έχουμε πλέον ούτε καν στους ελεγκτές του πλυντηρίου πιάτων μας Έχουμε πολύ πιο σύνθετους υπολογιστές Ξαναλέω παρακαλώ παρένθεση για το μάθημα Μην απομακρύνεστε, μην συνδυάζετε το μάθημα με άλλες διαδικασίες Αυτό το πήγαινε έλα δεν βοηθά κανέναν από εμάς και κυρίως δεν βοηθά εσάς Εσείς δεν θα ξαναίσαστε εδώ δεύτερη φορά, δεν θα τα ξαναακούσετε Θα περάσει αυτό Και άρα λοιπόν επενδύσατε χρόνο και η επένδυσή σας πήγε χαμένη Άρα λοιπόν θέλουμε, επιστρέφω τώρα στα του μαθήματος Το να έχουμε μεγαλύτερη ικανότητα αναπαράστασης αριθμητικών ποσοτήτων Ευτυχώς μπορούμε να το κάνουμε αυτό χρησιμοποιώντας τους αριθμούς κινητής υποδιαστολής Οι οποίοι χαρακτηρίζονται από τρία στοιχεία Το πρόσιμο, το βασικό σώμα, μάνκτισα ο αγγλικός όρος, που είναι ένας ακέραιος αριθμός Και η βάση Σημαντικό στοιχείο που δείχνει το έυρος των αριθμητικών ποσοτήτων είναι ο εκθέτης της βάσης, ο οποίος είναι ένας ακέραιος αριθμός Ποιο λοιπόν έυρος πραγματικών αριθμών μπορώ να αναπαραστήσω με ένα σύστημα 64-μπιτό Όπως είναι οι περισσότεροι υπολογιστές που έχετε στη διάθεσή σας πλέον Ένα από τα 64-μπιτς τα καταλαμβάνει το πρόσιμο 52-μπιτς καταλαμβάνει η βάση, η μάνκτισα Και ο εκθέτης είναι 11-μπιτς Άρα λοιπόν αυτά τα 11-μπιτ πληροφορίες μας δείχνουν και το έυρος γιατί Διότι 11-μπιτς πληροφορίες σημαίνει ότι μπορώ να αναπαραστήσω αριθμούς από το 2-1023 μέχρι το 2-1023 Κάτι που μεταφράζεται σε ποσότητες περίπου από το 10-308 έως 10-308 Αυτό λοιπόν σημαίνει ότι πρακτικά το απόλυτο μηδέν Μια αποσότητα εξόχως συναρπαστική δεν υφίσταται για τον υπολογιστή από τη στιγμή που Δεν έχω αριθμό ο οποίος να εκφράζει το απόλυτο μηδέν Έχω αριθμούς που είναι επαρκώς μικροί ώστε να θεωρηθούν μηδενικοί Υπό συνθήκες λύσης Ας σταματήσετε επίσης το θόρυβο με τα λάστιχα Γίνομαι κουραστικός αλλά αυτός ο ήχος είναι ακόμη πιο κουραστικός Θέλω να επιμείνω πάρα πολύ στο ότι σε τα πλαίσια αυτού του μαθήματος Δεν ξέρω και δεν με ενδιαφέρει πώς δουλεύετε αλλού Στα πλαίσια αυτού του μαθήματος θέλω να είστε εδώ, ψυχείτε και σώματι Ή εδώ ή όχι εδώ Δεν υπάρχει ενδιάμεσα μισός εδώ μισός αλλού Πόσους χαρακτήρες χρειάζομαι, μάλλον συγγνώμη πόσα μπάιτς χρειάζομαι για χαρακτήρες Όπως ξέρουμε σε έναν υπολογιστή γράφουμε κείμενα, τα κείμενα έχουν χαρακτήρες Πώς χειρίζομαι τους χαρακτήρες, πόσα στοιχεία μπάιτς χρειάζομαι για τους χαρακτήρες 1 μπάιτς αρκεί κατά βάση, διότι 1 μπάιτς έχει 8 μπιτς και θυμάστε πόσα στοιχεία μπορώ 255 στοιχεία μπορώ να αναπαραστήσω με τη βοήθεια 8 μπιτς Και ο πίνακας Άσκη που είναι ο πίνακας που έχουμε συμφωνήσει από κοινού να χρησιμοποιούμε και όλοι οι κατασκευαστές να χρησιμοποιούν ως πίνακα που αντιστοιχεί ένα συγκεκριμένο κωδικό Άσκη σε ένα συγκεκριμένο χαρακτήρα έχει 127 βασικούς χαρακτήρες. Υπάρχουν και οι επεκτάσεις του πίνακα Άσκη αλλά ας πούμε ότι εμείς ενδιαφερόμαστε μόνο για τους βασικούς χαρακτήρες Άρα λοιπόν είδαμε ότι υπάρχει μια μεγάλη δυνατότητα αναπαράστασης αριθμητικών και όχι μόνο ποσοτήτων που όμως παρόλα αυτά είναι επεπερασμένη. Θυμίζω ότι η αριθμή όπως ο αριθμός από κάτω, ο αριθμός των μωρίων στο σύμπαν κτλ μπορεί πολύ εύκολα να ξεφύγουν από τις αριθμητικές ικανότητες διαχείρισης ποσοτήτων ενός υπολογιστή. Από την άλλη, ακριβώς επειδή οι ικανότητές μας είναι συγκεκριμένες, αυτό μεταφράζεται και στο ότι είναι επεπερασμένες. Η ακρίβη αναπαράστασης λοιπόν είναι συγκεκριμένη και επεπερασμένη. Τι σημαίνει αυτό? Κάθε μηχανή έχει το λεγόμενο ύψιλον της μηχανής που ανάλογα με το αν είναι στο 64-πιτο ή όχι σύστημα, μας δίνει τη μικρότερη απόσταση μεταξύ της μονάδας και της αμέσως επόμενης μεγαλύτερης από τη μονάδα αριθμητικής ποσότητας. Και πρακτικά είναι μια ένδειξη αν θέλετε της ακρίβιας υπολογισμών. Είναι ένα εγγενές δομικό χαρακτηριστικό της μηχανής και σε περιπτώσεις αριθμητικής διπλής ακριβίας είναι της τάξος του 2,2x10-16. Πράγμα που σημαίνει ότι για μία μηχανή τύπου υπολογιστή, οποιαδήποτε ποσότητα είναι μικρότερη από αυτή είναι μη ορατή. Ας το πούμε ως εξής, ο υπολογιστής μας ψάχνει πάση από αριθμητική μειωπία που δεν του δίνει τη δυνατότητα, δεν έχει τη διακριτική ευχέρεια να διακρίνει να δει οτιδήποτε βρίσκεται κάτω από το όριο του 10-16 χονδρικά. Αυτό έχει να κάνει και με τα σφάλματα που εμφανίζονται πολλές φορές κατά τη διάρκεια υπολογιστικής επίλυσης προβλημάτων, διότι τα σφάλματα είναι πολλά ως προς τις κατηγορίες και τις πηγές τους. Έχουμε ανθρώπινα λάθη πρώτα απ' όλα, ο ανθρώπινος παράγοντας. Στην απερίπτωση κώδικα, πολλές φορές τα λάθη εδώ είναι σφάλματα κατανόησης. Κάποιες φορές είναι και τυπογραφικά σφάλματα. Μην ξεχνάμε ότι η λέξη bug προέκυψε από το γεγονός πως ένα πραγματικό έντομο είχε σκοτωθεί πάνω σε μία καρτέλα, η οποία αποτύπωνε ένα τμήμα κώδικα και το είχε εντοπίσει μάλιστα μία πολύ σημαντική κυρία στην ιστορία των υπολογιστών, η Grace, η οποία ήταν βασική χειρίστρια και το ονόμασε bug. Διότι bug σημαίνει έντομο και από τότε ως bug χαρακτηρίζουμε τα σφάλματα που υπάρχουν στους κώδικες. Έχουμε τυχαία σφάλματα. Προσοχή, εδώ έχουμε φυσικά φαινόμενα. Θα μου πείτε τι με ενδιαφέρουν εμένα φίλε μου όλα αυτά, τι σχέση έχω εγώ με υπερθέρμανση αγωγών, κοσμική ακτινοβολία και άλλα τέτοια. Μπορώ να σας διαβεβαιώσω ότι είναι καθημερινά. Είχαμε για παράδειγμα πρόβλημα εκφαντικής διαπίδησης ηλεκτρονίων σε τσιπάκια μνήμη σε ένα server που είχαμε στο εργαστήριο, όπου για κάποιον λόγο που συνεπάγεται αρκετή συζήτηση η μνήμη είχε κάποιες ιδιαιτερότητες και δεν συμπεριφέρονταν με τον τρόπο που θέλαμε. Μια μνήμη του εμπορίου, δεν ήταν κάτι πειραματικό, είναι δίπλα μας λοιπόν αυτές οι κατασκευές. Έχουμε πειραματικά σφάλματα. Πολλές φορές προέρχονται από τη χρήση πεπερασμένων οργάνων ως προς την ακρίβειά τους. Και έχουμε αμυγός σε επίπεδο υπολογιστών υπολογιστικά σφάλματα, αποκοπής, τρογγίλευσης κάποια από αυτά, κάποια από εσάς και από όσοι τα γνωρίζετε, υπερχύλησης, υποχύλησης κτλ. Πάλι ένα ερώτημα που λογικά θα γίνεται είναι εντάξει αλλά πλέον περάσαμε την βρεφική και φιβική ηλικία των υπολογιστών, έχουμε ενηλικιωθεί. Πρώτα απ' όλα, ο μηχανικός παραμένει πάντα παιδί. Δεύτερον, λάθη βρίσκει κανείς και στις καλύτερες οικογένειες μηχανικών. Έτσι λοιπόν, σε μία από τις αποστολές όπως αυτή, στο Aryan 5 της Ευρωπαϊκής Υπηρεσίας Διαστήματος, ένα στοιχειώδες λάθος που είχε να κάνει με το γεγονός πως δεν έλαβαν υπόψη τους το μετρητικό σύστημα, το Αγγλωσσαξωνικό και το Διεθνές, και έκαναν υπολογισμούς μπλέκοντας μονάδες. 500 εκατομμύρια δολάρια, διότι έλαβε σήμα αυτοκαταστροφής κάποια κλάσματα του Δευτερολέπτου μετά την απογείωση. Έφτασε σύμφωνα με τους εσωτερικούς ελέγχους που έτρεχαν εκτός των ορίων ασφαλούς πλοήγησης. Δεν είδε μια ποσότητα. Και έγινε αυτό από την Ευρωπαϊκή Υπηρεσία Διαστήματος. Αν μπορεί αυτή να κάνει λάθη, εμείς οι κινηθνητοί θα κάνουμε περισσότερα. Ήταν λοιπόν η καταστροφή του πυράβλου Ariane 5. Τμήμα του νέου πλογισμικού προέρχονταν, τι σας είπαμε, με τους βασικούς στόχους της πληροφορικής να επαναχρησιμοποιούμε με επιτυχία προγράμματα που αναπτύχθηκαν πριν από εμάς και από άλλους. Προέρχονταν από την Αποστολή νούμερο 4. Αλλά όμως υπήρξε μια λάθος σύνδεση μεταξύ του παλαιού και του νέου λογισμικού. Ανάθεση μεταβλητής real integer, ουσιαστικά, έγινε εδώ, για να είμαι πιο ακριβής. Κάτι που σε επίπεδο MATLAB δεν μπορεί να γίνει καν. Οδήγησε σε ένα σφάλμα υπερχύλησης. Πράγμα που λανθασμένα μεταφράστηκε από το λογισμικό του πυράβολος απόκλειση από την τροχιά και δόθηκε εντολή αυτοκαταστροφής. Απλά πράγματα. Σφάλμα αποκοπής λοιπόν, πάμε στα υπολογιστικά σφάλματα, είναι μια διαφορά. Διαφορά μεταξύ του αληθούς αποτελέσματος από το αντίστοιχο που προέκρυψε από έναν πρακτικό υπολογισμό. Και η αριθμητική ανάλυση ασχολείται με την ανάπτυξη μεθόδων ελαχιστοποίησης αυτών των σφαλμάτων. Δεν είναι το μόνο αντικείμενο του μαθήματος της αριθμητικής ανάλυσης, αλλά ασχολείται και με αυτά τα στοιχεία. Ετίες του σφάλματος αποκοπής. Πολλές φορές, ξέρετε, ποσότητες όπως το π υπολογίζονται από έναν υπολογιστή με τη βοήθεια μιας σειράς απείρων όρων. Δεν υπάρχει αναλυτικός τρόπος υπολογισμού. Πράγμα που σημαίνει ότι αναγκαστικά περικόπτεται ένα τμήμα της σειράς, οπότε λοιπόν χάνουμε σε ακρίβεια. Και βέβαια έχει να κάνει αυτό με το πόσο βαθιά στο σύμπαν των δεκαδικών θέσεων θέλουμε να πάμε σε επίπεδο ακριβίας. Αντικαθιστούμε συναρτήσεις από πολυόνιμα, τερματίζουμε μια επαναληπτική διαδικασία πριν από τη σύγκληση. Όλα αυτά είναι κλασικά στοιχεία που αποδείχουν σε σφάλματα αποκοπής. Να λοιπόν ένα παράδειγμα. Εδώ έχω τη χρήση μιας απειροσυράς για να υπολογίσω το ημύτωνο. Αυτός είναι ο τρόπος με τον οποίο πολλοί υπολογιστές υπολογίζουν ημύτωνα και συνημύτωνα. Άρα λοιπόν κάνουν χρήση απειροσυρών. Είναι παράλληλα μια πανέμορφη, επιτρέψτε μου να πω, σειρά. Ηλικρινά πανέμορφη, διότι δεν μπορώ με άλλο επίθετο να χαρακτηρίσω το γεγονός πως συνδέεται το ημύτωνο της γωνίας χ, με το χ, αυτό καθε αυτό και με μια σειρά απειρών όρων όπου τα κλάσματα είναι παραγοντικά περητόν αριθμών και οι εκθέτες είναι επίσης περητοί αριθμοί με αλλαγή μεταξύ συν και πλην. Είναι εργοτέχνης. Η φύση μας δείχνει μέρος της ομορφιάς της εδώ. Σφάλμα στρογγίλευσης. Το σφάλμα στρογγίλευσης οφείλεται σε διαφορές που υπάρχουν μεταξύ της αριθμητικής απλής ακριβή... μεταξύ ενός αργορίθμου, συγγνώμη, που χρησιμοποιεί αριθμητική ακριβίας και του αποτελέσματος που παράγει ο ίδιος ή ένας όμοιος αργόριθμος όταν χρησιμοποιεί προσεγγιστική αριθμητική. Είχα αναφερθεί και στην πρώτη φορά που βρεθήκαμε και το δείχνω τώρα πιο συγκεκριμένα σε έναν από τους λόγους που οδηγούν σε τέτοιου είδους φάλματα. Προσέξτε το εξής πάρα πολύ απλό. Ο αριθμός 0,1 και αυτό είναι ένα παράδειγμα μόνο, έτσι, ο αριθμός 0,1 του δεκαδικού είναι ρητός. Θυμίζω, έχουμε αγέρεους, έχουμε ρητούς, έχουμε άρητους, έτσι, είναι ρητός. Αυτοί που φεύγουν τώρα λοιπόν θα γνωρίζουν πώς διαδικά αναπαρίσταται αυτός ο αριθμός. Αναπαρίσταται με έναν άπειρον στοιχείον διαδικό αριθμό. Αν λοιπόν μετατρέψουμε αυτό το αριθμό σε διαδικό, διότι ο υπολογιστής μόνο διαδικούς καταλαβαίνει, τότε θα δούμε ότι εμφανίζεται ένας διαδικός με περίοδο 0,011. Αυτή η περίοδος εμφανίζεται άπειρες φορές. Αυτό σημαίνει ότι προφανώς δεν μπορώ να πάρω το σύνολο αυτού του αριθμού, όφω είναι άπειρο το μήκος, κάπου θα το κόψω. Αν το κόψω θα χάσω σε ακρίβεια. Και βέβαια τώρα γεννάται το ερώτημα, καλά, είναι δυνατόν, είμαστε σοβαροί, θα χάσω σε ακρίβεια αναπαράστασης ενός ρητούαριθμού. Γίνονται αυτά τα πράγματα. Προφανώς και γίνονται. Διότι, ξαναλέω, είναι διαδικός ο τρόπος με τον οποίο χειριζόμαστε αριθμητικές ποσότητες. Άρα, όταν εγώ κάποια στιγμή, στο συγκεκριμένο παράδειγμα, έχω το 0,1 σαν ποσότητα, μπορεί να μην συμπεριφεθεί με τον τρόπο που θέλω. Γι' αυτό, λοιπόν, το χάος ελοχεύει. Και βέβαια υπάρχει τρόπος να υπολογίσουμε την ακρίβεια, εάν, λοιπόν, η βάση του αριθμητικού συστήματος αναπαράστασης έχει ν ψηφία, το σφάλμα είναι περίπου της τάξεως του 1 δεύτερο επί δύο στην μειον ν. Και, κατά βάση, αυτό σημαίνει ότι σε αριθμητική απλής ακριβίας, έχουμε ένα σφάλμα περίπου της τάξεως του 10 στην μειον 8. Αυτό, λοιπόν, σημαίνει ότι αυτό που σας έδειξα στην αρχή, ο τρόπος με τον οποίο χειρίζεται ο υπολογιστής τους αριθμούς μας ως αριθμούς κινητής υποδιοστολής με πρόσημο βάση και εκθέτη, συνεπάγει από τα σφάλματα. Είναι εγγενός χαρακτηρισμένο με σφάλματα. Απλά αυτά τα σφάλματα είναι επαρκώς μικρά και γνωστά, ώστε να τα διαχειριζόμαστε με ακρίβεια. Ας δούμε ένα πολύ απλό, ένα στοιχειόδες παράδειγμα. Έχω έναν αριθμό χ, και προσθέτω και αφαιρώ από αυτόν έναν πολύ μικρή ποσότητα. Εγώ περιμένω μετά από αυτή την προσταφαίρεση, η τελική ποσότητα να είναι η αρχική μου τιμή, έτσι δεν είναι? Είναι, τελώς πάντων, αναμενόμενο. Παρ' όλα αυτά, για χ ίσον 0,1 και στετ 0,1, δεν το διάλεξα τυχαία, ο τελικός αριθμός δεν είναι 0,1, αλλά είναι 0,099999999 επάπυρον. Αυτό σημαίνει ότι, αν πολύ απλά θυμάστε ήδη στο πρώτο μας μάθημα, έκανα έναν έλεγχο του τύπου, αν το χ είναι όσο το αρχικό, τότε συνέχισε παρακάτω, αυτός ο έλεγχος θα ήταν αληθής. Εγώ περιμένω χ ίσο με 0,1, δεν είναι 0,1, είναι 0,0999999, απέχει ελάχιστα από το χ, αλλά δεν είναι χ. Άρα ο έλεγχος θα είναι αποτυχημένος. Έτσι λοιπόν, συνολικά για 2000 πράξεις, εδώ κάναμε ένα σφάλμα που είναι της τάξης του 10 στη μειονέκτη. Και υπάρχουν πολλά άλλα τέτοια παραδείγματα, έτσι, για εσύ η χ ίσον 2 και στετ 0,5, το αποτέλεσμα είναι εξαιρετικά καλύτερο, γιατί, διότι τυχαίνει εδώ να μην έχουμε πρόβλημα αναπαράστασης διαδικά των αριθμητικών ποσοτήτων. Έτσι λοιπόν γύρεται ένα άλλο ενδιαφέρον ερώτημα. Και εγώ που ξέρω τι θα συμβεί, είμαι υποχρεωμένος, υποχρεωμένη, κάθε φορά που κάνω έναν υπολογισμό να σκέφτομαι το διαδικάό του ισοδύναμου, η απάντηση είναι μην τρελαθούμε κιόλας, προφανώς όχι, αυτό που κάνω είναι να δημιουργώ μια τέτοια υπολογιστική διαδικασία, η οποία να μου εξασφαλίζει πως ανεξάρτητα από οποιαδήποτε τέτοια προβλήματα, η λύση θα προχωρήσει και θα παραχθεί χωρίς πρόβλημα. Άλλα προβλήματα που έχουμε επίσης εδώ είναι τα προβλήματα υπερχύλησης και υποχύλησης. Τα βλέπουμε αυτά σε επίπεδο μηνυμάτων όταν εμφανίζεται ως ποσότητα το inf, infinite, άπειρος. Κάνουμε λοιπόν μια πράξη στον υπολογιστή μας η οποία εμπλέκει μεγάλους αριθμούς και λαμβάνουμε ως αποτέλεσμα ξαφνικά κάτι που δεν είναι αριθμός, είναι αυτό το inf. Τι σημαίνει? Σημαίνει ότι ο αριθμός που παρήχθει ως αποτέλεσμα της πράξης είναι πάνω από το άνω όριο της ικανότητας του υπολογιστή. Θυμάστε πόσο είναι στα 64 δάμβητα? 10 στην 308. Και υπό συνθήκες μπορεί να φτάσει μέχρι το 10 ή στην 1.000 κάτι. Πάντοτε όμως υπάρχει ένα άνω όριο. Και έχουμε πολλές φορές προβλήματα στο οποία ξεπερνούμε αυτό το όριο. Εκεί λοιπόν ο υπολογιστής απλά δεν δύναται να υπολογίσει. Υπάρχει το underflow επίσης. Τι σημαίνει αυτό? Τόσο μικρή αριθμητικά ποσότητα, κοντά στο 0, η οποία επίσης δεν μπορεί να αναπαραχθεί από τον υπολογιστή λόγω των περιορισμών που έχει. Υπάρχουν θέματα αποκοπής και αυτά οδηγούν στα σφάλματα. Πολλές φορές υπολογιστικές διαδικασίες αποκόπτουν δεκαδικά στιγμία. Και αυτό βέβαια μπορεί να οδηγήσει εύκολα σε λάθος. Ενώ σε κάθε περίπτωση έχουμε τις έννοιες του απόλυτου και του σχετικού σφάλματος, οι οποίες μας βοηθούν στο να δούμε πόσο μακριά είμαστε από τις περιοχές τιμών που θέλουμε να υπολογίσουμε. Το απόλυτο σφάλμα είναι η απόλυτη τιμή μεταξύ πραγματικής και υπολογισμένης τιμής. Το σχετικό σφάλμα είναι αυτή η διαφορά διαιρεμένη συνήθως με την πραγματική τιμή. Οπότε μας δίνει και μια αίσθηση του επί της 100 πόσο απέχει ο υπολογισμός μας επί της 100 από το υπόλοιπο. Όλα αυτά καλά, αλλά ας πάμε στην ουσία του πράγματος, στην ουσία αν θέλετε της τρίτης αυτής ώρας, που είναι μια ώρα όπου είμαστε κουρασμένοι, παρόλα αυτά όμως είναι η κατάλληλη στιγμή για να δούμε κάτι καινούριο. Όχι τόσο καινούριο βέβαια, δομές. Τι σημαίνει αυτό? Εντάξει με τις μεταβλητές. Τις αντιμετωπίσαμε. Μάθαμε ότι στο MATLAB όλα είναι πίνακες και μίλησαμε για αυτά ωραία. Μιλήσαμε για σφάλματα αριθμητικά και όχι μόνο πολύ καλά. Πώς τα χρησιμοποιώ όλα αυτά, πώς δημιουργώ αλγορίθμους με τη βοήθεια δομών. Σε μια γλώσσα υπολογιστή, ανεξάρτητα από το ποια είναι αυτή, ξαναλέω, ανεξάρτητα από τη γλώσσα, Java, Ruby, ό,τι θέλετε, έχω πάντοτε τρεις δομές, τρεις υπολογιστικές διαδικασίες. Μία είναι αυτή που μας λέει πως ο κάθε υπολογισμός ξεκινά όταν θα τελειώσει ο προηγούμενος, άρα είναι βηματική ενή διακολουθίας η υπολογιστική διαδικασία. Μία δεύτερη έχει να κάνουμε μια επιλογή, φτάνουμε σε ένα σημείο όπου πρέπει να αποφασίσουμε ανάλογο με το αν κάτι αληθεύει ή όχι προς τα πού θα πάμε, ποια διαδρομή υπολογιστική θα ακολουθήσουμε. Και μια άλλη η οποία ελέγχει αν ισχύει μια συνθήκη και επαναλαμβάνει μια υπολογιστική διαδικασία έως ότου είτε ισχύει είτε πάψει να ισχύει ανάλογο με το πώς θα το στήσουμε εμείς. Και όλα αυτά βέβαια φτιαγμένα με απλές εντολές. Αυτές οι τρεις δομές, η Συριακή Δομή, η Δομή Επιλογής και η Δομή Επανάληψης έχει αποδειχθεί από τους Μπόεμ και Γιακομπίνη ότι είναι οι μόνες δομές που χρειαζόμαστε σε κάθε γλώσσα προγραμματισμού. Αυτό ξαναλέω τι σημαίνει ότι αν θέλετε να μάθετε να δημιουργείτε προγράμματα σε κάθε γλώσσα αυτό με το οποίο πρέπει να ασχοληθείτε είναι η πλήρης απόλυτη κατά το δυνατόν καλή γνώση χρήσης αυτών των δομών. Από εκεί και πέρα όλα τα υπόλοιπα έχουν να κάνουν με τεχνικά χαρακτηριστικά του λεξιλογίου και της σύνταξης της γλώσσας. Άλλο τα γαλλικά, άλλο τα κινέζικα, άλλο τα ιαπωνικά, άλλο τα ελληνικά, αλλά όλα είναι γλώσσες. Και βεβαίως δεν θα παραλείψω να μπω στον πειρασμό και να πω πως ναι και η γλωσσεολογία έχει μια πολύ στενή σχέση με την πληροφορική όπως έχει αποδείξει ο μεγάλος Νόα Μτσόμπσκι. Έχουμε λοιπόν στηριακή εκτέλεση δομές επιλογής, δομές επανάληψης. Χρησιμοποιούμε λογικά διαγράμματα, δεν θα επιμείνουμε σε αυτά κατά τη διάρκεια του μαθήματος, το βλέπετε σήμερα μπορεί και να μην το ξαναδείτε άλλη μέρα, γιατί διότι δεν επιμένουμε εδώ. Εδώ όμως σας το επιδεικνύω για ποιο λόγο, για να σας πω ότι προφανώς όταν δημιουργούμε ένα πρόγραμμα έχουμε κάνει κάτι άλλο πιο σημαντικό πιο πριν. Έχουμε διαμορφώσει τον αλγόριθμό μας, έτσι δεν είναι, την βήμα προς βήμα χωρίς αμφισυμείες με απόλυτη σαφήνια υπολογιστική διαδικασία, η οποία θα κάνει χρήση συριακής εκτέλεσης, ελέγχων, επανάληψης, ώστε να ξεκινήσει από δεδομένα ένας προβλήματος και να καταλήξει σε μια λύση. Οπότε ξεκινά από την αρχή για να φτάσει στο τέλος, κάνει χρήση επιλογών και διαφόρων διαδικασιών. Αυτό κάνουμε για παράδειγμα, όταν θέλουμε να λύσουμε, το έχουμε λιώσει πλέον αυτό το παράδειγμα, σε επίπεδο γυμνασίου, λυκείου, πανεπιστημίου, αυτή τη δευτεροβάθμια εξίσωση, αν είχε γλώσσα να μιλήσει θα μας έλεγε παρατάτε με έλεος. Παρ' όλα αυτά είναι χρήσιμο, ναι, γιατί, διότι στη γενική περίπτωση, γιατί είναι χρήσιμο και ομολογώ ότι και σε εμένα αρέσει, είναι βίτσιο επαγγελματικό πίτε. Για ποιον λόγο, διότι μου δίνει τη δυνατότητα να τονίσω κάτι που θεωρούμε αυτονόητο, ότι τίποτα δεν είναι αυτονόητο από την πλευρά του υπολογιστή δηλαδή, έχεις ελέγξει εάν ο συντελεστής της υψηλότερης δύναμης είναι μη μηδενικός, ορίστε, είναι το άλθο μηδέν, αλήθεια ή ψεύδος, αν είναι μη δέν, τότε θα πρέπει να αναρωτηθεί εσύ εάν είναι και το βήτα μη δέν, αν είναι και το βήτα μη δέν, τότε η εξίσως είναι αόριστη. Τι σημαίνει αυτό, έχω μη δέν επικάτισον μη δέν, ισχύει οτιδήποτε στη θέση του κάτι. Αν το βήτα δεν είναι μη δέν, τότε μεταφράζεται σε κάτι τελείως διαφορετικό, είναι αδύνατοι, δεν υπάρχει περίπτωση. Εάν όμως το α δεν είναι μη δέν, τότε λέω εδώ το χ ίβ προς α, στην πρωτοβάθμια και λέω δεύτερο βάθμια, τι λέω, το χ ίβ προς α. Εάν το βήτα είναι επίσης μη δέν, δεν έχω πρόβλημα, έτσι δεν είναι, διότι δεν έχω αοριστία, δεν έχω μη δέν προς μη δέν, θα μπορούσαμε αυτή την πρωτοβάθμια εξίσωση να την κάνουμε πρόγραμμα. Εδώ και τώρα θα ήταν ολίγον τι δύσκολο. Προφανώς θέλουμε μια συνθήκη ελέγχου του αν το α είναι διαφορετικό ή όχι από το μη δέν για να προχωρήσουμε σε κάποιες πράξεις. Σίγουρα θα μπορέσετε να το κάνετε στο εργαστήριο ήδη και από αυτή την εβδομάδα και όχι από την επόμενη. Από εκεί και πέρα, προφανώς αυτές τις τρεις δομές είναι αρκετές, απεδείχθη. Μπορούμε να είμαστε πιο αποτελεσματικοί, δηλαδή εγώ θα ήθελα λίγο την υπομονή σας και την προσοχή σας. Προσέξτε τι είναι το ερώτημά μας εδώ. Εντάξει. Συριακά εκτελούμε κάθε δήμα. Πάω στην πρώτη περίπτωση, πάω στη δεύτερη, πάω στη τρίτη, πάω στη τέταρτη, πέμπτο βήμα υπολογισμού και πάει λέγοντας. Τα βήματα υπολογισμού θα είναι πεπερασμένα. Αν δεν είναι πεπερασμένα δεν θα τελειώσει ποτέ η λύση, η διαδικασία επίλυσης. Έχω δομές ελέγχου. Ελέγχω εάν είναι αληθές ή ψευδές κάτι, αν το α είναι 0 ή όχι και ανάλογα πράττω. Έχω δομές επανάληψης. Εάν χρειαστεί να ελέγχω κάτι πολλές φορές και ως ότου μια συνθήκη πληρωθεί, μπορώ αυτό να το κάνω κάπως καλύτερα. Οι γεγονός είναι το εξής, ότι πολλές φορές τμήματα του κώδικά μας, μερικές φορές και ολόκληρο τον κώδικα που έχουμε αναπτύξει για να λύσουμε ένα πρόβλημα, χρειάζεται να το χρησιμοποιήσουμε πολλές φορές. Σκεφτείτε δηλαδή να έχουμε πολλές πρωτοβάθμες εξισώσεις. Θα έπρεπε να κάνουμε την ίδια δουλειά πολλές φορές. Γιατί να μην δημιουργήσουμε ένα πρόγραμμα το οποίο να είναι κομμένο και ραμμένο στο να λύνει εξισώσεις, ώστε κάθε φορά που χρειαζόμαστε κάτι τέτοιο να μην χρειαστεί να το αναπαράγουμε από το μηδέν, αλλά να το έχουμε έτοιμο, να το καλούμε, να το χρησιμοποιούμε, να το αφήνουμε στην άκρη, να πηγαίνουμε παρακάτω. Έτσι, λοιπόν, η ζωή μας θα γίνεται πολύ πιο εύκολη. Αυτή η διαδικασία ουσιαστικά έχει να κάνει με το ότι δημιουργούμε συναρτήσεις, όπως σε κάθε γλώσσα προγραμματισμού, Fortran, Basic, Pascal, Java, etc. Μπορώ να χρησιμοποιήσω μια συναρτήση για να υπολογίσω το ημίτωνο μιας γωνίας και κανένας δεν θα με ψέξει για αυτό, κανένας δεν θα μου ζητήσει να αναπτύξω εγώ τη συναρτήση υπολογισμού γωνίας, ημιτών γωνίας. Έτσι, και εδώ, θα έπρεπε να μπορώ να κάνω χρήση έτοιμου κώδικα για να υπολογίσω κάτι που συχνά θα μου είναι χρήσιμο. Συναρτήσεις, λοιπόν, θα δούμε πολλές φορές. Έτσι, για τμήματα κώδικα που χρησιμοποιούνται επανειλημμένα απλά προγράμματα ευκολότερα στην ανάπτυξη και στη διαχείριση. Οι συναρτήσεις, αυτές καθαυτές, και η χρήση τους επίσης οδηγεί συνολικά στο να έχουμε προγράμματα που είναι πιο απλά γραμμένα και ευκολότερα στην ανάπτυξη και στη διαχείριση. Έχουμε, προφανώς, πολλές εγγενείς συναρτήσεις στο MATLAB. Μαθηματικές διαπίνακες, είδαμε κάποιες διαπίνακες. Διανεισματικές για τυχαίους αριθμούς. Να, μια καινούργια εδώ. Ακέραιοι τυχαίοι. Γραφήματα. Θα δείτε ήδη στο εργαστήριο πώς δημιουργεί τα γραφήματα σε MATLAB. Έχετε, λοιπόν, πράγματα που έχουμε δει και πράγματα που δεν έχουμε δει. Σίγουρα όμως όλα αυτά σας κάνουν να αισθάνεστε κάπως παράξενα. Για κάποιες και κάποιους από εσάς, ειδικά, το βήμα μοιάζει μεγάλο. Καταλαβαίνω ότι όσοι δεν έχετε προηγούμενη ενασχόληση αισθάνεστε λίγο σαν το ψάρι έξω από το νερό. Δεν είναι έτσι τα πράγματα ακριβώς. Προφανώς και θα τα αντιμετωπίσουμε βάζοντάς στη σειρά κατά τη διάρκεια του μαθήματος. Αλλά στο MATLAB έχουμε και κάποιες σημαντικές βοήθειες. Πρώτα απ' όλα το ίδιο το υπολογιστικό περιβάλλον έχει online οδηγίες. Γράφοντας help, καινό και το όνομα της εντολής, έχω στοιχεία ως προς το πώς συντάσσεται, πώς χρησιμοποιείται και παραδείγματα. Έτσι, λοιπόν, θα χτίσουμε σιγά-σιγά τη γνώση που μας χρειάζεται και με αυτόν τον τρόπο θα μπορέσουμε να δούμε πράγματα όχι μόνο όπως αυτά που είδαμε σήμερα τα οποία ήταν. Το πώς διαχειριζόμαστε μεταβλητές σε επίπεδο υπολογιστή. Ποιες είναι οι συνέπειες της διαχείρισης. Είδαμε τη σημασία των πινάκων, και εδώ θα ξανατονήσω γιατί το υποσχέθηκα και γιατί είναι σημαντικό, το ότι όλα τα στοιχεία ενός πίνακα, ανεξαρτήτως διαστάσεων, κάθονται στη μνήμη σε γειτονικές θέσεις το ένα προς το άλλο. Άρα, λοιπόν, είναι μια σειρά, μια αλυσίδα ρυθμών, αν πρόκειται για ρυθμούς. Είδαμε τις απαραίτητες δομές, είναι μόνο τρεις. Αλληλουχία, επανάληψη, έλεγχο. Είδαμε εγγενείς συναρτήσεις που είναι πολλές και μας δίνουν την δυνατότητα να κάνουμε πάρα πολλούς χειρισμούς. Είδαμε θέματα διαδικής αναπαράστασης αριθμών που εξηγούν και τις δυνατότητες αλλά και τους περιορισμούς του υπολογιστή. Και είδαμε και σφάλματα. Τι θα δούμε στην επόμενη διάλεξη, το πώς μπορείτε να δημιουργήσετε τις δικές σας συναρτήσεις, οπότε εσείς δείτε τις βιντεοδιαλέξεις, μελετήστε τις ασκήσεις του εργαστηρίου πριν προσέλθετε, ήδη από σήμερα ξεκινούμε τα εργαστήρια, ρίξτε μια ματιά στα quiz και εμείς τα λέμε την επόμενη Τρίτη.