Διάλεξη 5 / Διάλεξη 5 / σύντομη περιγραφή

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

Πλήρης περιγραφή

Λεπτομέρειες βιβλιογραφικής εγγραφής
Κύριος δημιουργός: Καρατζάς Κωνσταντίνος (Αναπληρωτής Καθηγητής)
Γλώσσα:el
Φορέας:Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης
Είδος:Ανοικτά μαθήματα
Συλλογή:Μηχανολόγων Μηχανικών / Πληροφορική
Ημερομηνία έκδοσης: ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 2015
Θέματα:
Άδεια Χρήσης:Αναφορά-Παρόμοια Διανομή
Διαθέσιμο Online:https://delos.it.auth.gr/opendelos/videolecture/show?rid=2c11dc34
Απομαγνητοφώνηση
σύντομη περιγραφή: Καλημέρα λοιπόν σε όλες και όλους. 23 Μαρτίου σήμερα, είμαστε σχεδόν στο μέσο του εξαμίνου, άρα λοιπόν έχουμε περίπου άλλα τόσα μαθήματα μπροστά μας, είναι κάτι περισσότερο, όπως θα καταλάβατε πέρασε γρήγορα ο καιρός. Εγώ ομολογώ ακόμη θεωρώ ότι είμαστε στην αρχή, δεν το έχω συνειδητοποιήσει. Ελπίζω ότι το ίδιο συμβαίνει και με εσάς, γιατί αυτό θα συνεπάγεται ότι ο χρόνος περνά ευχάριστα, ή και με τρόπο που δεν τον αντιλαμβανόμαστε. Σήμερα θα έχουμε τη συνέχεια σε σχέση με λογικές εκφράσεις και δίκτες, θα μιλήσουμε και για διαχείριση πινάκων, ενώ στο δεύτερο σκέλος της σημερινής μας συνάντησης και μαθήματος, θα αναφερθώ σε αριθμητικές μεθόδους επίλυσης προβλημάτων. Κάτι καινούριο λοιπόν για εσάς που δεν έχετε δει στο παρελθόν. Να θυμίσω ότι είχαμε αφήσει πίσω μας την προηγούμενη φορά, είχαμε αφήσει ένα σύνολο από στοιχεία που αφορούν τους λογικούς τελεστές και είχαμε δει δύο κατευθύνσεις, την σύγκριση στοιχείο προς τοιχείο και την σύγκριση μεταξύ δύο λογικών ποσοτήτων, αριστερά και δεξιά των τελεστών. Είχαμε επισημάνει την ιδιαιτερότητα και τη σημασία που έχει η δυνατότητα του να επιτελούμε συγκρίσεις στοιχείο προς τοιχείο και είχατε δει πιστεύω κάτι εξαιρετικά ενδιαφέρον, το πώς μπορούμε με τη χρήση αυτών των τελεστών να επιτελέσουμε πράξεις και ενέργειες που υποφυσιολογικές συνθήκες θα αποτελούσαν μέρος ενός συμβατικού προγράμματος. Άρα λοιπόν, οι τελεστές και όχι, στοιχείο προς τοιχείο συγκρίνουν τα περιεχόμενα ίδιον και ίσον ως προς τον αριθμό στοιχείων διανισμάκων και πινάκων με αποτέλεσμα false ή true, μηδέν ή ένα ανά στοιχείο. Οπότε λοιπόν το αποτέλεσμα της σύγκρισης εδώ είναι ένα διάνεισμα. Το περιεχόμενο αυτού είναι είτε μηδέν είτε ένα ανάλογα με το εάν η αντίστοιχη σύγκριση είναι false ή true. Σε περίπτωση δε που θέλουμε να κάνουμε σύγκριση διολογικών τιμών, οι τελεστέοι θα πρέπει να αποτελούν βαθμοτά μεγέθη, άρα θα πρέπει να αποτελούν πίνακες ένα επί ένα αν θέλετε μια και τα πάντα είναι πίνακες στο μάτλα και χρησιμοποιούμε τους βραχικυκλωμένους τελεστές. Η μεγάλη διαφορά θυμίζω αυτών σε σχέση με τους προηγούμενους είναι ότι δεν χρειάζεται να ελεγχθεί το δεύτερο σκέλος εάν το αποτέλεσμα της σύγκρισης προκύπτει απλά και μόνο κοιτάζοντας το πρώτο σκέλος. Το αποτέλεσμα εδώ είναι μία λογική τιμή 0,1. Οπότε λοιπόν έχουμε τους σχεσιακούς μας τελεστές που συγκρίνουν ποσότητες, έχουμε τους λογικούς τελεστές που ελέγχουν μια παράσταση και είδαμε ότι έχουμε και ένα σύνολο από λογικές συναρτήσεις του είναι κάτι, εις ναν, εις ίνφ και τα λοιπά, ή βρες. Είχα αναφερθεί στην προτεραιότητα των πράξεων, έχω αναφερθεί σε αυτή και από την αρχή του εξαμίνου, οπότε λοιπόν είναι η κατάλληλη στιγμή για να δούμε συνολικά την προτεραιότητα των πράξεων. Στο σύνολο τους λοιπόν πράξεις λογικές, αριθμητικές, έχουν την προτεραιότητα που επιδεικνύεται στον πίνακα, δηλαδή προφανώς πρώτα απ' όλα επιτελούνται όσες πράξεις υπάρχουν μεταξύ παρενθέσεων. Αμέσως μετά δεύτερη προτεραιότητα έχουν πράξεις όπως η ύψωση στη δύναμη, η αναστροφή πίνακα κτλ. Σε τρίτη σειρά προτεραιότητας βρίσκεται η πράξη της μοναδιέας απρόσθεσης και αφαίρεσης. Αμέσως μετά οι πολλαπλασιασμοί και οι διαιρέσεις, αυτές είναι οι λογικές πράξεις, αυτές είναι οι αριθμητικές πράξεις και μετά έχουμε τις συγκρίσεις. Βλέπουμε λοιπόν ότι οι βράχοι κυκλωμένοι, οι λογικοί τελεστές είναι τελευταίοι στην προτεραιότητα των πράξεων και επίσης κάτι άλλο σημαντικό που το έχω αναφέρει πολλές φορές και πρέπει να το έχουμε στο μυαλό μας συνεχώς, αν έχουμε ισοδύναμες πράξεις ως προς την προτεραιότητα ή έχουμε έλλειψη παρενθέσεων που να δίνουν προτεραιότητα σε τμήμα μιας παράστασης που θέλουμε να υπολογιστεί, τότε η προτεραιότητα ξεκινά πάντοτε από αριστερά, όπως βλέπετε εσείς, προς τα δεξιά. Άρα λοιπόν από το αριστερό σκέλος αρχίζουμε και κάνουμε πράξεις προς τα δεξιά. Αυτή είναι η προτεραιότητα μεταξύ ισοδύναμων πράξεων. Από εκεί και πέρα προφανώς και όλα αυτά πατούν επάνω σε μια πραγματικότητα που λέει πως έχουμε και έναν τύπο δεδομένων που είναι ολογικός τύπος δεδομένων και λαμβάνει τιμές true ή false. Και έτσι λοιπόν θυμίζω τώρα τα πράγματα που είδαμε από την αρχή. Μια τέτοια σύγκριση 4 μικρότερο του 5 παράγει ως αποτέλεσμα 1 είναι true, 4 μικρότερο ίσοδο 5 true, 4 μεγαλύτερο του 5 false, false, διάφορο του 5 true. Για να δούμε λοιπόν σε συνέχεια πραγμάτων που βλέπαμε τώρα την προηγούμενη φορά αν είμαστε σε θέση έχοντας φρεσκάρει και τις προτεραιότητες των πράξεων να θυμηθεί τους ασχεσιακούς και τους λογικούς τελεστές να δούμε εκφράσεις όπως αυτή. 3 μεγαλύτερο του 4 και 0. Τι σημαίνει αυτό. Το βλέπουμε και αμέσως σκεφτόμαστε πολύ ωραία έχουμε ένα ασχεσιακό τελεστή το μεγαλύτερο έχουμε ένα λογικό τελεστή το και. Άρα λοιπόν τι θυμάμαι εγώ προτεραιότητα πράξεων. Δεν είναι πρώτη η προτεραιότητα οι ασχεσιακοί. Θυμάστε. Ασχεσιακοί τελεστές πριν τους λογικούς τελεστές. Άρα εφόσον λείπουν οι παρενθέσεις τι θα εκτελεστεί πρώτο σε αυτό το παράδειγμα η σύγκριση του ασχεσιακού τελεστή. 3 μεγαλύτερο του 5. Ποιο θα είναι το αποτέλεσμα αυτής της σύγκρισης. False. Άρα false και 0. Το 0 πως με θερμηνεύεται όταν έχουμε να κάνουμε με λογικές πράξεις. Ως false. False and false το αποτέλεσμα θα είναι λοιπόν false εδώ. Και γι' αυτό το λόγο και έχει νόημα αυτή η σύγκριση. Μόνο όμως ξαναλέω εφόσον σκεφτούμε την προτεραιότητα των πράξεων. Δείτε και κάτι άλλο το οποίο έχουμε συνηθίσει πάρα πολύ από την περίοδο που ασχολούμασταν ήδη στα αλυκιακά μας χρόνια και στα γυμνασιακά θα τολμούσα να πω με προβλήματα βασικής άλγευρας. Έστω μια ποσότητα R ίση με 0,6. Αλγευρικά αυτή εδώ η διπλή ανισότητα έχει νόημα βεβαίως. Έτσι δηλαδή προφανώς το 0 και το 1 μπορούν να τοποθετηθούν με αυτόν τον τρόπο. Το 0 είναι μικρότερο του R και το R είναι μικρότερο του 1. Εάν τώρα πληκτρολογίσουμε αυτή την έκφραση, ποια θα είναι η μεθερμή νευσή της από πλευράς του υπολογιστικού μας περιβάλλοντος, το αποτέλεσμα πάλι θα προκύψει από τη χρήση των τελεστών. Έχουμε ισοδύναμους τελεστές, έτσι δεν είναι. Εφόσον είναι ισοδύναμοι έχουμε δύο ενισότητες. Δεν έχουμε τελεστές ενώ διαφορετικής προτεραιότητας. Άρα από αριστερά προς τα δεξιά θα ξεκινήσει η εκτέλεση. Θα εκτελεστεί πρώτα το 0 μικρότερο του R, σωστά. Το 0 μικρότερο του R θα μας δώσει 0 μικρότερο του 0,6, το οποίο είναι true. Έτσι δεν είναι. Μετά, ποιος θέλει να συνεχίσει? Η κυρία μπροστά. Έχουμε 1 μικρότερο του 1. 1 μικρότερο του 1, άρα λοιπόν το αποτέλεσμα αυτής εδώ της πράξης, επιτρέψτε μου να πάω από εδώ, το αποτέλεσμα αυτής της σύγκρισης, της επιρροής του σχεσιακού τελεστή, θα είναι true, έτσι δεν είναι. Άρα λοιπόν, true μικρότερο του true, κάτι που είναι false. Οπότε λοιπόν, το αποτέλεσμα αυτής της σύγκρισης είναι false. Έτσι λοιπόν με θερμηνεύεται εδώ και με τη βοήθεια αυτών των παραδειγμάτων, μπορούμε να δούμε πολύ καλύτερα τον τρόπο με τον οποίο λειτουργούν οι σχεσιακοί τελεστές. Οι σχεσιακοί τελεστές λοιπόν, εφαρμοζόμενοι, παράγουν λογικό αποτέλεσμα. Και τα λογικά αποτελέσματα είναι αυτά που συγκρίνονται μεταξύ τους. Και εφόσον το αποτέλεσμα είναι true, θα παραχθεί αυτή η λογική τιμή, διαφορετικά θα παραχθεί η λογική τιμή του false. 0 μικρότερο του a, true, δηλαδή λογικό 1. Οπότε λοιπόν, όπως είπε και η συνάδελφός σας, 1 μικρότερο του 1. Εδώ μεταφέρεται πλέον η σύγκριση. Κάτι που είναι false. Δηλαδή, θα δώσει αποτέλεσμα 0. Εάν θέλαμε να το κάνουμε σωστό τώρα, δεν σας ρωτώ, σας το εμφανίζω για να μπείτε σε μια, να σας προθερμάνω κι άλλο, είναι ακόμη πρωί και ξέρω ότι ακόμη δεν λειτουργούμε επαρκώς. Πώς θα έπρεπε να το γράψουμε. 0 μικρότερο του a και a μικρότερο του 1. Τότε, τι θα εκτελεστεί. Αυτό δεν θέλουμε να κάνουμε. Και τι θα εκτελεστεί. Σε προτεραιότητα πρώτη, ο σκησιακός τελεστής. Πρώτο ο αριστερός και μετά αυτός που βρίσκεται αριστερά και μετά ο δεξιά. Το αποτέλεσμα της εφαρμογής των δύο σκησιακών τελεστών θα δώσει true σε κάθε ένα από τα σκέλη. Άρα, η πράξη τελικά θα μεταφραστήσει στο true and true. Κάτι που θα μας δώσει true όπως είναι και αυτό που αναμέναμε να ισχύει και γι' αυτό τον λόγο και εντάξαμε αυτή την έκφραση σε αυτή τη διαδικασία λογικού υπολογισμού. Ερώτημα. Δεύτερος τρόπος λοιπόν, οι παρενθέσεις. Ακριβώς είναι η δεύτερη λύση. Εάν βάζαμε παρενθέσεις τότε, και διαμορφόραμε τη σκέση ανάλογα, τότε η απόλυτη προτεραιότητα βρίσκεται που? Στις παρενθέσεις. Θα μπορούσαμε λοιπόν να λειτουργήσουμε και έτσι. Με αυτό τον τρόπο πιστεύω ότι καθίσταται σαφές πρόδυλο ότι οι λογικές εκφράσεις αποτελούν έναν ιδανικό τρόπο για να ελέγχουμε τιμές μεμονωμένες ή ολόκληρων παραστάσεων. Αυτό έχει μεγαλύτερη πρακτική σημασία για εμάς. Τι μπορούν να κάνουν οι λογικές εκφράσεις σε σχέση με τη διαχείριση πινάκων και περιεχομένου πινάκων. Δείτε αυτό το παράδειγμα. Έστω ότι θέλω να σχεδιάσω την τριγωνομετρική συνάρτηση εφαπτωμένη. Απλά να τη σχεδιάσω. Να κάνω τη γραφική της παράσταση. Ορίζω λοιπόν αρχικά ένα διάνυσμα τιμών του χ. Η κλασική μέθοδος που είπαμε ότι χρησιμοποιούμε πολλές φορές για να κάνουμε γραφικές παραστάσεις συναρτήσεων είναι ότι ορίζουμε ένα διάνυσμα τιμών του χ. Του λέμε χ ξεκίνα από τόσο μέχρι τόσο με βήμα τόσο. Εδώ λοιπόν, εγώ θα του πω, επειδή είναι τριγωνομετρική, χ ξεκίνα από το μίον 3π προχώρησε με βήμα π εκατοστά και πήγαινε έως το τριαδεύτερα π. Γιατί? Έμπνευση της στιγμής. Απλά θέλω αρκετά π δεξιά και αριστερά για να μπορέσει να έχει δεδομένα η συνάρτησή μου να υπολογιστεί σε όλο αυτό το εύρος. Άρα, με αυτόν τον τρόπο θυμίζω ότι μπορούμε άμεσα να ορίσουμε ένα διάνυσμα τιμών από μίον 3π, όσο και αν είναι αυτό, έως τριαδεύτερα π, με βήμα π προς εκατό. Εάν θέλουμε να δούμε ποιος είναι ο αριθμός των στοιχείων σε αυτό το διάνυσμα, μπορούμε να χρησιμοποιήσουμε μια εντολή η οποία μας δείχνει το μήκος ενός διανύσματος σε στοιχεία, η οποία ακριβώς είναι η αγγλική μετάφραση του μήκους, η length. Άρα, λοιπόν, η length του χ θα μας δώσει και τον αριθμό των στοιχείων. Κλείνω την παρένκτεση εδώ. Δεν μας ενδιαφέρει εδώ, όμως. Ορίζω τη συνάρτηση αμέσως μετά. ψ ίσον εφαρτωμένη του χ. Και σχεδιάζω, χρησιμοποιώντας την γνωστή σε εσάς ήδη, θα δούμε στη συνέχεια πολύ περισσότερα, ως προσγραφικές παραστάσεις, συνάρτηση plot, plot του χ, ψ. Όταν, λοιπόν, έχω ζεύγει τιμών, τι παρήχθει πιο πάνω? Ένα σύνολο από τιμές τετμημένον χ, σωστά. Τις έβαλα αυτές τις τιμές ως είσοδος στη συνάρτηση. Τι παρήχθει, το ψ τι είναι, είναι πάλι ένα διάνυσμα. Πόσα στοιχεία έχει όσο το χ. Ποια στοιχεία την εφαρτωμένη για κάθε μέρος του χ, σωστά. Άρα, λοιπόν, τώρα η plot κάνει αυτό που έχουμε πει ότι κάνει από την αρχή. Παίρνει κάθε ζεύγος τιμών και το απεικονίζει σε ένα καρτεσιανό, όπως το λέμε, σύστημα συνδετογμένων. Σε ένα διάγραμμα στην βάση καρτεσιανού συστήματος συνδετογμένων. Οπότε, λοιπόν, κάνουμε τη γραφική παράσταση και προκύπτει το εξής. Αυτό. Το οποίο, από τι θυμόμαστε από την άλλη ώρα, δεν έχει καμία σχέση με αυτό που αναμένεμε ως γράφημα μιας εφαρτωμένης. Τι συνέβη? Δεν κάναμε τα πράγματα σωστά. Ορίσαμε διάστημα τετμημένων χει. Βάλλον, υπολογίσαμε, για να είμαι ακριβέστερος, τετμημένες αρκετές, βεβαίως. Υπολογίσαμε για κάθε τετμημένη τη τεταγμένη, βεβαίως. Σχεδίασα. Ναι. Τι στο καλό συνέβη, αυτό που συνέβη είναι το εξής. Ότι προφανώς, και βλέπουμε εδώ, θα μας βάλει σε υποψίες, αν θέλετε, αυτό. Βλέπετε τις τιμές? Είναι έξε πιδέκα στην δεκάτη πέμπτη. Είναι εξήντα τετράκις εκατομμύρια. Άρα, κάπου έχω πέσει στην παγίδα του να υπολογίζω όρους με πολύ μεγάλες τιμές. Πότε συμβαίνει αυτό στις εφαρτωμένες, όταν ο παρονομαστής, οι εφαρτωμένοι είναι οι μύτων οπροσυνημίτων, όταν ο παρονομαστής, τείνει στο μηδέν. Άρα, μήπως με αυτό το βήμα που έχω θέσει, έχω πέσει σε χίοι τα οποία παράγουν συνημίτωνα πολύ κοντά στο μηδέν, και όταν πάω να υπολογίσω τις εφαρτωμένες, ανατυνάζεται? Sky high, η αγγλική έκφραση. Και τι στο καλό κάνω εδώ. Δηλαδή, θα πρέπει να υπολογίζω εγώ εκ των προτέρων, ποια δεν είναι αναθεματισμένα πολλαπλάσια των τιμών τους συνημιτών, ώστε να μου δημιουργούν τέτοιο πρόβλημα για να δημιουργώ εγώ διανύσματα τετμημένων χει, και μετά υπολογίζω ότι... Ε, τότε δεν κάνουμε δουλειά εδώ. Τι θα ήθελα. Αυτό που θα ήθελα είναι να του πω, άκου να δεις φίλε, φίλοι, ό,τι θες. Και στο ουδέτερο, κανένα πρόβλημα. Εγώ θέλω να μου υπολογίσεις τις τιμές. Το μόνο που θέλω είναι να μου αφαιρέσεις αυτές τις τιμές που μου δημιουργούν πρόβλημα. Άρα, για τιμές του, τι θα λέγα, πώς θα σκεφτόμασταν λογικά. Θα σκεφτόμασταν πως θα ήθελα να μου υπολογίσεις όλες τις εφαπτομένες, πλήν αυτές, για τις οποίες οι εφαπτομένοι είναι πολύ μεγάλοι, να το πω έτσι. Διότι αν είναι πολύ μεγάλοι, σημαίνει ότι είμαι πολύ κοντά στο μηδέν. Ως προς τον παρονομαστή. Και ποιες είναι οι τιμές που μηδενίζουν το συνειμήτωνο. Εδώ. Άρα, του πει δεύτερα. Το πει δεύτερα λοιπόν όπου το υπάρχει και σε πολλαπλασιά του, μας δημιουργεί οι ζητήματα και μάλιστα μονακολαπλάσει. Για να δούμε, εφόσον έχουμε φτάσει, σε ποια εβδομάδα μαθημάτων είπαμε, στην πέμπτη. Πέμπτη, είδατε πώς περνάει ο καιρός. Και έχουμε κάνει όλα αυτά που έχουμε κάνει μέχρι τώρα, έχουμε μιλήσει αρκετά εκτενώς για λογικούς τελεστές, μπορούμε να τα βάλουμε όλα αυτά μαζί και να κάνουμε το ζωή μας πιο εύκολη. Τι θα σκεφτόμαστε να ξαναλέω, θέλω όλα αυτά που έκανα, αλλά αφαίρεσέ μου τις τιμές του χ, που μου δημιουργούν πρόβλημα. Επειδή κάτι δεν πάει καλά και επειδή η φαπτομένη χ είναι στο σύμπλιν άπειρο για περιττά πολλαπλάσια του πιδεύτερα, πρέπει να αφαιρέσω από το διάνισμα τιμών του ψι αυτές τις τιμές. Υπολογίζω δηλαδή αυτές τις τιμές και μετά τις κουρεύω. Είμαστε πάντα επίκαιροι, ένα κούρεμα είναι πάντα επίκαιρο. Οπότε λοιπόν, πώς θα κουρέψω εγώ αυτές τις τιμές, δεν ξέρω ότι είναι πολύ μεγάλες. Βεβαίως, τι θεωρώ πολύ μεγάλο. Τι θα θεωρούσαμε πολύ μεγάλο για μια τιμή εφαπτομένης, ώστε να θέλω να το βγάλω από τη μέση και να μην το εμφανίζω σε γραφική παράσταση. Θέλω λοιπόν στοιχεία του ψι, που να είναι κάτω από 10 εις την 10η σε απόλυτη τιμή. Θεωρώ, έτσι, στη βάση των γνώσεων που έχω από την συμπεριφορά της συνάντησης εφαπτομένη, ότι αυτές είναι πιο σημαζεμένες τιμές. Πώς το κάνω αυτό? Δηλαδή, θέλω τις τιμές του ψι, έτσι, να δείξω τι έχω κάνει. Εγώ υπολόγησα έναν διανοησμό χ, με διάφορες τιμές. Πρώτη τιμή, επιτρέψτε μου να τη γράψω έτσι, δεύτερη τιμή, τρίτη τιμή και τα λοιπά. Έβαλα ως είσοδο όλο το διάρισμα χ μέσα στην συνάντηση εφαπτομένη, έτσι. Υπολόγησα λοιπόν την ψι ίσον εφαπτομένη του χ, οπότε λοιπόν έχω την εφαπτομένη του χ1 εδώ, σωστά. Την εφαπτομένη του χ2 και αυτές είναι οι αντίστοιχες ψι1, ψι2. Έχω λοιπόν έναν διανοησμό τιμών, ίσο με το αρχικό. Και απ' το μόνο που θέλω είναι να του πω βρέσ' μου τις τιμές των ψι που να είναι μεγαλύτερες και κουρέψέτες. Πώς θα το έκανα αυτό, θα μπορούσα να του πω αντικατέστησέτες με κάτι. Αντί να τις κουρέψει, απλά πρέπει να τις αντικαταστήσω με κάτι. Με τι θα τις αντικαταστούσατε εσείς. Αυτές που είναι πολύ μεγάλες, να τις κάνει κάτι άλλο. Πρώτα απ' όλα, δεν θέλω αυτό το λογικό έλεγχο. Η απόλυτη τιμή του ψι, γιατί η εφαπτομένη παίρνει θετικές και αντικές τιμές, έτσι δεν είναι. Η απόλυτη τιμή του ψι, να είναι μικρότερη από 10 στη 10. Τόσο έλεγχος εδώ, τι θα παράξει σύμφωνα με ό,τι έχουμε πει μέχρι τώρα, είναι ένας σχεσιακός τελεστής, εφαρμοζόμενος επί ενός διανύσματος. Πόσες τιμές έχει το ψι, έστω χίλιες, έστω ότι χίλιες ήταν και οι τιμές του ψι, έτσι δεν είναι. Τι θα παράξει, θα παράξει χίλια στοιχεία, που θα έχουν τιμές είτε 0, είτε 1, έτσι δεν είναι. Θα έχει τιμές 1 εκεί όπου αυτή η σύγκριση είναι true και τιμές 0 εκεί όπου η σύγκριση είναι false. Άρα εμείς θέλουμε ποια στοιχεία, τα στοιχεία για τα οποία η σύγκριση τι είναι? True βρε εσείς, θέλουμε μόνο τα στοιχεία για τα οποία η σύγκριση είναι true. Εφόσον θέλουμε αυτά τα στοιχεία τι θα κάνουμε, θα θυμίσω κάτι που είδαμε την προηγούμενη φορά. Θα κάνουμε αυτό και θα εξηγήσω γιατί. Ουσιαστικά, τι κάνω εδώ. Έχω εφαρμόσει την σχεσιακή μου σύγκριση στοιχείο προς στοιχείο και έχω παράξει ένα σύνολο από μηδενικά και άσους. Αυτό δεν είναι το αποτέλεσμα της absolute του ψι, μικρότερο από 10 στην 10η. Συμφωνούμε εδώ, θέλω πραγματικά να μείνουμε γιατί αυτό είναι το σημειοκλήτητα. Ηπόλοιπα δεν είναι κάτι άλλο. Θέλω πραγματικά να μην το προσπεράσουμε αυτό. Και αντιλαμβάνομαι απόλυτα όσες και όσους αισθάνονται ακόμη παράξενα με αυτό το αποτέλεσμα έως και δυσφορία. Τώρα μ' αμήνες θα μοιράσουμε την επόμενη φορά. Ξαναλέω. Έχουμε το αρχικό μας διάνυσμα χ, με τις έστω χίλιες τιμές τελειμμένων. Μέχρι εδώ εντάξει. Έχει παραχθεί με την κλασική μέθοδο χ από, χ ίσον από, άνο κάτω τελεία βήμα, άνο κάτω τελεία έως. Συμφωνούμε. Έστω χίλιες τιμές, βαριέμαι να τις μετρήσω, γι' αυτό το λέω. Κάθε μία από αυτές τις τιμές τις βάζουμε στην εφαπτωμένη, στην τάνη, στην εφαπτωμένη. Και υπολογίζω το διάνυσμα ψ, το οποίο έχει τόσες τιμές όσο και το διάνυσμα χ, όπου το ψ είναι η εφαπτωμένη του διανύσματος χ, δηλαδή η εφαπτωμένη του πρώτου στοιχείου του χ, του δεύτερου στοιχείου του χ, του τρίτου, του τέταρτου, του πέμπτου, του χιλιωστού. Μέχρι εδώ πραγματικά θέλω να ξέρω εάν είμαστε σε κατάσταση άνεσης ή όχι. Είναι σημαντικό. Μετά θα αισθανόμαστε όλα αυτά να μας προσπερνούν και εμείς να βγαίνουμε από τον δρόμο που αρκετοί άλλοι ακολουθούν. Δεν θέλω να το πάθουμε αυτό. Δεν είναι ίδιες για κανέναν, ούτε για αυτούς που ακολουθούν τον δρόμο, ούτε για αυτούς που μένουν απ' έξω. Άρα, θα επιμείνουν εδώ, έχουμε κάποια εκκρεμότητα. Μην αισθάνεστε άσχημα να το τίσετε. Αυτός που δεν έκανε λάθος δεν θα μάθει ποτέ. Έτσι δεν είναι. Λοιπόν, ξανά, έχω το αρχικό μου διανύσμα με τις χίλιες τιμές των χ. Χαΐζω αυτή τη συνάρτηση εφαπτωμένη, παράγω χίλιες τιμές εφαπτωμένης. Και μετά λέω, κοίταξε να δεις, κάποιες τιμές κάνω τη γραφική παράσταση, είναι στο θεό. Η μετάφραση του sky high. Άρα, εγώ θέλω να ξεφορτωθώ αυτές τις τιμές. Ε, θεωρώ ότι αυτές που είναι πολύ υψηλές και δεν θέλω μπροστά μου γιατί μου δημιουργούν θέμα, είναι όσες είναι πάνω από 10 στην 10η σε απόλυτη τιμή, γιατί η εφαπτωμένη ως τριγωνομετρική συνάρτηση παίρνει καθετικές και ενητικές τιμές. Λογικό μου. Άρα, θα κάνω τη σύγκριση. Ποια σύγκριση? Θέλω η απόλυτη τιμή του περιεχομένου του διανύσματος ψ, άρα του κάθε στοιχείου του διανύσματος ψ να συγκριθεί με το 10 στην 10η. Τι έχουμε πει λοιπόν τώρα για τη σύγκριση στοιχείο προς στοιχείο που γίνεται, ότι κάθε στοιχείο του ψ θα συγκριθεί με το 10 στην 10η. Για τα στοιχεία που αυτή η σύγκριση είναι true, είναι μικρότερο, θα παραχθεί το 1 ως true. Διαφορετικά, μηδέν. Οπότε λοιπόν έχουμε ένα διανύσμα, όλο αυτό είναι ένα άλλο διανύσμα. Θα μπορούσα να το βαφτίσω κιόλας. Θα του πω ζ, ίσον, Άπ, Στου, Τάδε. Δεν το βαφτίζω. Για να μην προσθέσω μια ακόμη μεταβελτή και έχω να τη διαχειριστώ. Είναι όμως ένα διανύσμα. Άρα λοιπόν τώρα ξέρω ότι εκεί όπου αυτό το διανύσμα έχει μηδενικά, στις θέσεις που το διανύσμα αυτό έχει μηδενικά, υπάρχουν στοιχεία στο διανύσμα ψ που δεν τα θέλω. Τι θα κάνω? Πολαπλασιασμό στοιχείο προς στοιχείο. Θα πολλαπλασιάσω εσένα ένα μαθηματισμένο ψ αρχικό με αυτό το διανύσμα. Οπότε λοιπόν εκεί όπου εσύ έχεις πολύ υψηλές τιμές πάνω από το 10 στη 10η, θα βρεις να πολλαπλασιάζεσαι με το 0. Και τι θα πάθουν αυτές οι τιμές? Θα μας χαιρετήσουν. Και έτσι θα μείνει ένα ψ με τιμές μηδενικές εκεί, κουρεμένες. Ερώτημα. Θα το σχολιάσω αμέσως μετά. Άρα λοιπόν πρακτικά, με αυτόν τον τρόπο βγάζω από τη μέση όλες τις τιμές του αρχικού διανύσματος ψ, που είναι σε απόλυτη τιμή μεγαλύτες από το 10 στη 10η. Ξαναπώς το κάνω. Συγκρίνω κάθε στοιχείο του διανύσματος του αρχικού ψ με το 10 στη 10η. Ξέρω ότι η σύγκριση θα παράξει 1 αν όντως η σύγκριση είναι true, είναι μικρότερο δηλαδή, και 0 αν όντως η σύγκριση είναι false, είναι μεγαλύτερο δηλαδή. Και ακριβώς επειδή τα στοιχεία που αντιστοιχούν στα μηδενικά είναι αυτά που είναι μεγάλα, πολλαπλασιάζω αυτό το διανύσμα με το αρχικό διανύσμα τιμών της ευθατωμένης και έχω έτσι το τελικό μου. Και επειδή είναι πολλαπλασιασμός στοιχείο προς στοιχείο, πώς τον κάνω με έναν τρόπο που εσείς, ειδικά που κάθεστε μακριά δεν το βλέπετε, του λέω το καινούργιο ψ είναι το παλαιό ψ τελεία πολλαπλασιασμένο δηλαδή στοιχείο προς στοιχείο με το διανύσμα που προκύπτει από αυτόν εδώ τον λογικό έλεγχο. Διότι όπως έχουμε πει, όταν θέλουμε να κάνουμε πράξη στοιχείο προς στοιχείο και έχουμε την πράξη στο κέντρο πάντα και αριστερά δεξιά τα δύο στοιχεία που λαμβάνουν μέρος στην πράξη τους πίνακες και τα διανύσματα, τότε ο συμβολισμός του στοιχείο προς στοιχείο μπαίνει πάντοτε στο αριστερό σκέλος. Έτσι λοιπόν έχω ένα ψ καινούργιο, απαλλαγμένο από τις πολύ ψηλές τιμές. Σε εκείνες τις θέσεις έχει μηδενικά. Ρώτησε ο συνάδελφός σας, στο πλότιτι θα γίνει, στο πλότιτι θα βάλει εκεί μια τελεία. Διότι εγώ του έχω πει να κάνει τελείουλες εκεί. Η πλότιτι κάνει, εξ ορισμού δημιουργεί ένα γράφημα με τελείες στη θέση των σημείων ζευγών τιμών. Έχει ψήχη, ψήχη, ψήχη. Αλλά είναι μόνο ένα σημείο. Ενώ όλα τα άλλα... Εδώ δεν έχουμε βέβαια περιοχή σχολιάζευση. Αν είχαμε περίπτωση όπου είχαμε πολλά, θα φαίνονταν. Εδώ δεν έχουμε. Είναι μόνο ελάχιστες τιμές. Για αυτό και κοιτάξτε τι θα εμφανιστεί. Η γνωστή μορφή της τριγωνομετρικής συναρτησης της εφαπτομένης. Αυτό γνωρίζουμε εμείς ως μορφή της τριγωνομετρικής συναρτησης της εφαπτομένης. Θα μπορούσαμε να χρησιμοποιήσουμε, λέει ο συνάδελφός σας, μία ίφ. Βεβαίως. Αλλά η χρήση μιας ίφ θα συνεπάγονταν ότι θα έπρεπε να γράψουμε κώδικα. Ενώ εμείς εδώ σε μία γραμμή το κάναμε όλο. Αυτή είναι η διαφορά. Δεν είναι μόνο θέμα κομψότητας. Είναι θέμα αποτελεσματικότητας. Είμαστε πολύ πιο γρήγοροι. Βάθουμε επίσης την πορεία αργότερα κάποια στιγμή όταν θα μιλήσουμε για υπολογιστική πολυπλοκότητα. Είναι κοστοβόρα. Κοστίζει πάρα πολύ σε υπολογιστικό χρόνο. Ερωτήσεις βάθος. Ουσιαστικά θα μπορούσαμε... Εδώ είναι τρεις γραμμές η γραφική παράσταση. Πρώτη γραμμή. Χ, ορίζω το διάστημα των τετμημένων. Χ, σωστά. Αμέσως μετά υπολογίζω το ψ. Και μετά πλωτάρω. Δεν χρειάζεται να κάνω κάτι άλλο. Να δούμε και ένα δεύτερο παράδειγμα σε αυτή την περιοχή παραδειγμάτων. Ας το πούμε έτσι. Έστω ότι πάλι, επιθυμώ να υπολογίσω την μη τον οχύ προσχύ. Κάτι θα σας θυμίζει αυτή η παράσταση. Όταν ήμουν μαθητής, ήταν εφαρμογής στο σωστό βιβλίο της άλγευρας και μέρος της ύλης σε των πανελλαδικών εξετάσων εποχές αρχαιώτης. Από μίον 4π έως 4π. Πάλι θα δημιουργήσω ένα διάνισμα τετμημένων. Του λέω, ξεκίνησε παρακαλώ από μίον 4π. Έστω βήμα π20, π10, π30, ό,τι θέλετε. Π20 έβαλα εγώ στο παράδειγμα εδώ. Έως 4π, μάλιστα. Για να υπολογίσω ποιο είναι το x του 81. Γι' αυτό και το διάλεξα βέβαια, έτσι. Το διάλεξα έτσι ώστε το x του 81 να είναι τι. Αν πάρω δηλαδή το 81ο στοιχείο αυτής της, αυτού του διανείσματος, θα δω αντιστοιχείο και μετά υπολογίσω η μύτωνο προς το στοιχείο. Θα δω το εξής για να μην σας ταλαιπωρώ. Πρώτα απ' όλα να ρωτήσω γιατί βάζουμε την τελεία εδώ. Διότι θέλω η πράξη να γίνει στοιχείο. Δεν θέλω να υπολογίσω το... Έχω το διάνισμα μου x, με τις χίες τιμές. Της βάζω ως ανίσοδο, της ταΐζω στην συνάρτηση, η μύτωνο. Σωστά, έχω χίλια μύτωνα. Θέλω κάθε μία από αυτές τις τιμές του ημυτώνου να τη διαιρέσω με κάθε μία από αυτές τις τιμές του x. Άρα θέλω διαίρεση στοιχείο προς τοιχείο. Του λέω λοιπόν, η μύτωνο x τελεία προς x, ως προς τα διανείσματα. Και θα πάει και θα κάνει τη διαρέση στοιχείο προς τοιχείο. Οπότε λοιπόν, εάν υπολογίσω αυτό το ψ και βρω ποιο είναι το ψ στη θέση 81, θα βρω ότι έχω ουσιαστικά μια διαρέση... τελοπιτάλ, σας λέει κάτι, κάποιοι θέλουν να ξεχάσουν. Έτσι λοιπόν, το συγκεκριμένο ημύτωνο του x στη θέση 81, προς την αντίστοιχη τιμή του x, σημαίνει να είναι το x στη θέση 81, ίσο με τι αυτό που μας δημιουργήθηκε. 0, διότι έχουμε η μύτωνο του 0, που είναι πόσο? 0 προς 0. Άρα, πόσο είναι το ημύτωνο του 0 προς 0, ωέω. Τι θέλω λοιπόν εγώ. Γνωρίζουμε ότι δεν ορίζεται, αλλά βεβαίως γνωρίζουμε πώς. Το ημύτωνο του x προς x, το όριο αυτής της συνάρτησης, καθώς το x είναι στο 0, είναι ίσο με... Οπότε, τι θέλω πάλι εδώ να αντικαταστήσω όσα στοιχεία του x είναι 0, γιατί μου δημιουργούν πρόβλημα. Έτσι. Και θα τα αντικαταστήσω με κάτι πολύ κοντά στο 0. Γιατί όμως? Διότι δεν θέλω να χάσω τις τιμές στην γειτονιά του 0, διαφορετικά θα κάνω άσχετα πράγματα. Δηλαδή, εδώ δεν θέλω πλά να κουρέψω, θέλω να αναπαράξω τιμές που θα είναι πολύ κοντά. Και για ποιον λόγο το κάνω αυτό ουσιαστικά? Διότι εγώ ξέρω, αν ο υπολογιστής δεν ξέρει, ότι ισχύει αυτή εδώ η σχέση. Άρα, γιατί οι τιμές του x πολύ κοντά στο 0, αλλά όχι 0, αυτή η σχέση την ισχύει στο 1. Οπότε, λοιπόν, πώς θα το κάνω? Κόλαση! Γιατί τώρα, ήταν που ήταν στραβό το κλίμα, τώρα, το δάγκωσαν γκάιδαροι, δράκοντες, οι πάντες. Και όμως, προσοχή, τι κάνουμε εδώ? Του λέω, x διπλό ίσον του 0. Πρώτα απ' όλα, παρατηρώ αυτή τη σχέση. Είναι σαν να παρατηρείς ένα ωραίο τοπίο. Προσπαθείς να το αποκωδικοποιήσεις. Στην τούτο που μου έτυχε σήμερα. Βλέπω, αρχικά, έναν διπλό ίσον. Άρα, είναι λογική σύγκριση. Ωραία. Ας δούμε, λοιπόν, αυτή η λογική σύγκριση τι θα παράξει. Τι μας λέει, όλα τα στοιχεία του x, πάρτα και συγκρινετά. 1 προς 1 με το 0. Για όσες περιοχές, για όσα x είναι 0, τότε θα παράξεις 1. Για όσα δεν είναι 0, θα παράξεις 0, αναγκαστικά. Αυτό είναι το αποτέλεσμα της λογικής σύγκρισης. Έτσι δεν είναι. Είτε 0 θα παραχθεί, είτε 1. Οπότε, λοιπόν, ποιο είναι το αποτέλεσμα, να το εφαρμόσουμε ως εξής. Έστω ότι έχω εγώ το διάνισμα x, ίσο με 0, μειών π, 1, 3. Το x διπλό ίσον του 0, τι θα παράξει ως αποτέλεσμα, θα παράξει το ακόλουθο διάνισμα. Είσαι 0, μάλιστα. Είσαι 0, όχι. Είσαι 0, όχι. Είσαι 0, όχι. Θα παράξει αυτό το διάνισμα. Αυτό το διάνισμα τώρα το βλέπουμε να πολλαπλασιάζεται με το EPS. Σας λέω ότι δεν το ξέρετε, το έχω αναφέρει, αλλά δεν περιμένω να το θυμάστε ακόμη. Η τριβή θα μας φέρει σε αυτό το σημείο. Ότι το EPS είναι κάτι σαν η ακρίβεια της μηχανής. Είναι μια σταθερά κάθε υποχριστή. Είναι μια πολύ μικρή ποσότητα. Αλλά όχι όμως μηδέν. Είναι μια πολύ μικρή ποσότητα, απίερος μεγαλύτερο το μηδέν. Οτιδήποτε πολύ μικρό δεν είναι μηδέν, είναι απίερος μεγαλύτερο από το μηδέν. Είναι κάτι, ας πούμε, στην περιοχή του 10 στη μειών 20. Ωραία. Άρα, τι κάνω εγώ, πολλαπλασιάζω το αποτέλεσμα του λογικού ελέγχου, που είναι αυτό εδώ το διάνισμα που σας δείχνω, με το EPS. Ποιο θα είναι το αποτέλεσμα? Το πολλαπλασιάζω. Προφανώς θα γίνει στοιχείο προ στοιχείο πολλαπλασιασμός εδώ. EPS. Μηδέν, μηδέν, μηδέν. Παίρνω λοιπόν, αυτό είναι το τελικό αποτέλεσμα της πράξης. του x διπλό ίσον του μηδέν, άρα σύγκριση λογική με το μηδέν επί EPS. Και το προσθέτω στο αρχικό x. Ποιο θα είναι το αποτέλεσμα? Το τελικό x θα είναι μηδέν συν EPS, EPS. Μίον π συν μηδέν, μίον π. Ένα συν μηδέν, ένα. Τρία συν μηδέν, τρία. Τι κατάφερα λοιπόν έτσι, αντικατέστησα όλα τα μηδενικά που είχα αρχικά στο x, με μια πολύ μικρή τιμή που δεν είναι πάντως μηδέν. Και έτσι έχω εξασφαλίσει το γεγονός προς το x πλέον είναι απειλαγμένο μηδενικό. Ερώτημα. Λέει εδώ ο συνάδελφός σας, και πολύ σωστά και έλεγα τώρα θα το ρωτήσει, κανένας δεν θα το ρωτήσει. Ρωτάει εδώ. Έχω το αποτέλεσμα μιας πράξης λογικής. Ποιο είναι αυτό το διάνισμα, δεν είναι σωστόν. Το πολλαπλασιάζω με κάτι άλλο, που στη γενική του μορφή είναι πάλι διάνισμα. Άρα, τι θα έπρεπε να βάλω για να είναι στοιχείο προς στοιχείο πολλαπλασιασμός. Μια τελεία. Εδώ. Και ευχαριστώ για την παρατήρηση. Και περίμενα να δω τι θα γινόταν. Είναι αριθμός και θα λειτουργήσει έτσι. Θα λειτουργήσει και έτσι. Όμως, η καλή πρακτική είναι πάντοτε όταν θέλω να κάνω πράξεις στοιχείο προς στοιχείο να βάζω το σύμβολο της τελείας που θα επιβάλλει πλέον στον υπολογιστή να κάνει έτσι τις πράξεις. Γιατί, διότι με αυτόν τον τρόπο δεν θα το ξεχάσω όταν θα χρειαστεί να το κάνω πραγματικά μεταξύ διανισμάτων όπου δεν θα έχω στοιχείο προς... Δεν είναι λάθος. Το αποτέλεσμα, αν το πληκτρολογήσετε, θα είναι ορθό. Και βεβαίως, εξαιτίας του γεγονότος ότι το ημύτωνο του EPS προς EPS, το ημύτωνο μιας πολύ μικρής ποσότητας προς την τιμή της πολύ μικρής ποσότητας είναι 1, έτσι έχω και ένα link και σας παραπέμπω και στον κανόν του τελοπιτάλ, να μπορέσω να υπολογίσω με αυτόν τον τρόπο όλες τις τιμές του ημυτώνου των αρχικών τιμών X μέσα στο διάνισμά μου. Βλέπετε λοιπόν πόσο εύκολα μπορώ να κάνω τέτοιου είδους... να δρέξω τέτοιους διαδικασίες και βέβαια κάποιος θα μπορούσε ή κάποια να παρατηρήσει πως τελικά είναι σαν να προσπαθώ να αποφύγω, συμβατικούς τρόπους προγραμματισμού και δομές. Από εδώ το έχω, από εκεί το έχω, δεν έχω χρησιμοποιήσει δομές ακόμη. Δεν το κάνω τυχαία, προφανώς το κάνω επίτηδες, γιατί θέλω να σας δώσω αυτό το μήνυμα, να περάσω αυτό το μήνυμα, το οποίο θα γίνει και πρακτική εμπειρία μέσω της εξάσκησης, ότι όταν έχουμε αυτές τις δυνατότητες, είναι κρίμα να τις σπαταλούμε, πηγαίνοντας σε πιο συμβατικούς, αν θέλετε, τρόπους, επολίες μου ερωτήματα, είδα δύο τουλάχιστον. Να δω, μισό. Ένα σίγουρα έχω εντοπίσει. Παρακαλώ, ναι. Το έστισα εγώ, έτσι, ήταν σικέ, ήταν στιμμένο, ήξαρα ότι... Ρωτάω στην αδερφό σας ότι εδώ, φίλε μου, εσύ το έστισες στο παράδειγμα έτσι, ώστε το 21ο στοιχείο του χ να είναι μηδέν. Πώς θα μπορούσα να το ξέρω αυτό, θα ήθελα την βοήθεια του κοινού. Μια απάντηση εδώ. Άρα, λοιπόν, μία απάντηση, είπαμε ότι οι κυρίες είναι πρακτικές ανάμεσα σε πολλά άλλα. Είναι ότι, ναι, μα το κάνω εδώ. Δηλαδή, ανεξάρτητα με το αν είναι το 21ο ή οποιοδήποτε άλλο, στη διπλή αυτή η σύγκριση θα παράξει ένα διάνισμα, αυτό εδώ το διάνισμα, το οποίο θα έχει μηδενικά εκεί όπου η σύγκριση είναι false και άσως εκεί όπου η σύγκριση είναι true. Οπότε, λοιπόν, θα ξέρει ο υπολογιστής, δεν χρειάζεται καν να γνωρίζω εγώ που είναι αυτές οι τιμές, τα σημεία όπου το αρχικό χ διάνισμα έχει τιμές μηδενικές. Ο κύριος... Μπορούμε να κάνουμε πολλά, λοιπόν. Να χρησιμοποιήσουμε τη φάιν, να κάνουμε αυτήν εδώ τη σύγκριση, έχουμε πολλές λύσεις. Εδώ, λοιπόν, έχουμε αρκετές λύσεις στα χέρια μας και αυτό είναι πάρα πολύ σημαντικό. Οπότε, λοιπόν, οι λογικές εκφράσεις, τι έχουμε δει σε αυτή την ώρα, επιτελούν και έριους ελέγχους, είναι απαραίτητες για την αποφυκή συχνολογικών λαθών. Άρα, ένα άλλο μήνυμα για εμάς είναι το εξής. Επειδή ποτέ δεν μπορείς να είσαι σίγουρος ότι όλα όσα θεωρείς ότι έχεις προγραμματίσει σωστά στον αργόριθμό σου, είναι όντως έτσι, διότι η δημιουργία ενός αργορίθμου είναι σαν να πηγαίνεις σε διάλογο με έναν εξωγήινο. Ο εξωγήινος είναι η μηχανή. Έχεις απέναντί σου ένα δημιούργημα που δεν μιλά τίποτα και δεν καταλαβαίνει τίποτα σε σχέση με αυτό που ξέρεις. Εσύ πηγαίνεις κουβαλώντας ένα ολόκληρο γνωσιακό υπόβαθρο. Χρόνια σπουδών, άλγευρας, φυσικής, επιστήμης γενικά. Κάπως πρέπει τη δική σου εμπειρία να τη μεταφέρεις και γνώση, με τρόπο τέτοιο ώστε να μην υπάρχουν αμφισυμείες. Εδώ λοιπόν, αφελώς εμείς σκεπτόμενοι, το πρόβλημα και το λάθος δεν ήταν του υπολογιστή. Ήταν δικό μας. Εμείς θεωρήσαμε ότι ο υπολογιστής θα ήξερε πως, ναι, δεν ορίζεται το ημίτονο του μηδενός. Αφτερεσία. Γιατί να αφτερετήσουμε. Ένα άλλο μήνυμα εδώ που θέλω να σας περάσω είναι ποτέ μην κάνετε υποθέσεις. Ποτέ μην θεωρείτε κάτι δεδομένο και γνωστό. Στήστε τον αργόριθμό σας έτσι ώστε ό,τι και να γίνει, το αποτέλεσμα της πράξης να είναι σωστό. Κάνετε αυτούς τους λογικούς ελέγχους για παράδειγμα. Ώστε αν εξάζεται με το τι έχει συμβεί με το χ, να ξέρετε ότι θα υπολογιστεί. Και βέβαια, να θυμίσω λίγο και την find. Αυτό είναι μαγικό τετράγωνο από την εκκλησία της Αγράδα Φαμίλια στην Βαρκελόνη. Μια εκκλησία που ο Μέγας Γκαουντί ξεκίνησε, αλλά δεν οκληλήρωσε. Την έκτιζε 15 χρόνια, 20 χρόνια, 20 χρόνια. Και μας θυμίζει με έναν τρόπο πολύ διαφορετικό το ότι υπάρχει και η συνάντηση Magic στο MATLAB. Την έχουμε ξαναδεί. Έστω, λοιπόν, Magic 4. Σημαίνει ότι θα δημιουργήσω έναν μαγικό πίνακα όπως αυτόν, 4x4, που το άθλισμα γραμμών, στυλών, κτλ. είναι σταθερός αριθμός. Εδώ είναι 8, 14, 22, 22. Λοιπόν, και έστω ότι θέλω όσες τιμές του πίνακα αυτού, το χρησιμοποιώ χάρη παραδείγματος, όσες τιμές του πίνακα αυτού είναι μεγαλύτερες του 8 να γίνουν 100. Πώς θα το κάνω, προσέξτε. Θα του πω βρέσ' μου, βρέσ' μου τι, όσα στοιχεία του πίνακα είναι μεγαλύτερα από το 8, το αποτέλεσμα εδώ, θυμάστε ποιο θα είναι. Να το τρέξουμε διανοητικά. Πείτε μου ποιο θα είναι το αποτέλεσμα. Η κυρία με το μπλε, μπλε, τέλος πάντων δεν βλέπω. Είναι θέσεις, άρα εδώ, πες μου τις θέσεις. Οπότε, λοιπόν, αυτή η πράξη ποια θα είναι. Το αποτέλεσμα αυτής της πράξης στο συγκεκριμένο παράδειγμα. Άρα, 1. Μετά. Άρα, η φάιντ θα βρει μόνο τις θέσεις. Άρα, το αποτέλεσμα θα είναι 1. Μετά, 3, 4, 5, 6, 8. Αυτή η αριθμή θα είναι το αποτέλεσμα της φάιντ. Η φάιντ, θυμίζω, εντοπίζει τις θέσεις στον πίνακα, για τις οποίες είναι true η σχέση που χρησιμοποιούμε στη σύγκριση. Και πώς μετρά τις θέσεις, αναστείλες. Πάντα. Άρα, το αποτέλεσμα της φάιντ στο συγκεκριμένο παράδειγμα θα είναι 1, 3, 6, 8, 10, 12, 13, 15. Όπως επίσης, αν πούμε στον υπολογιστή μας να μας δείξει το περιεχόμενο του στοιχείου που βρίσκεται στην 15η θέση, το α του 15, ξέρετε τι θα πει. Δεν θα ξαφνιεστεί όπως εμείς εντεχομένως, γιατί εμείς θα πούμε α του 15 σαν να πει 12x2. Τι πίνεις και δεν μας δίνεις. 3, 4, 12, 13, 14, 15. Αυτό είναι το στοιχείο νούμερο 15. Άρα, λοιπόν, παράγει η φάιντ ένα διάνυσημα τιμών, που είναι θέσεις, για τις οποίες ισχύει μια σχέση. Αυτές οι θέσεις είναι ότι πρέπει να τις χρησιμοποιήσουμε για να το πούμε εκεί όπου αυτό είναι true, βάλε εκατό. Η φάιντ σημαίνει συνάντηση με η. Λέει η συνάδελφό σας, η φάιντ είναι μια συνάντηση με η. Ναι, είναι μια συμπυκνωμένη, ας πούμε, τέτοιου είδους συνάντηση. Δεν υπάρχει πίσω της η ή κάτι άλλο, όμως. Θα μπορούσαμε να το κάνουμε για το η. Γιατί να το κάνουμε με η, αφού έχουμε τη φάιντ. Λέει η συνάδελφό σας, είναι πιο κατανοητό το η. Συμφωνώ απόλυτα. Για αυτό και προσπαθώ να εξηγήσω το πώς θα κάνουμε χρήση αυτών των λογικών συναρτήσεων, έτσι ώστε και τις λογικές δομές να χρησιμοποιούμε και τις λογικές συναρτήσεις, ανάλογα με τη φύση του προβλήματος. Αλλά προσπαθούμε γιατί να αποφεύγουμε τα κατερομεί. Πάλι, το ερώτημα είναι προσπαθούμε να αποφύγουμε τις δομές. Ναι. Για ποιον λόγο, διότι είναι κοστοβόρες σε επίπεδο υπολογιστικού χρόνου και διότι καθιστούν τον κώδικα πιο μεγάλο και πιο πολύπλοκο πολλές φορές. Εφόσον εξηγηθούμε με τη χρήση των λογικών συναρτήσεων και των τελεστών, τότε το αποτέλεσμα είναι πολύ πιο άμεσο. Έτσι, λοιπόν, μπορούμε να του πούμε το α του i, να είναι εκατοάρα θα του πούμε ότι οι τιμές του α, που έχουν θέσεις που μας βρήκε η φάιντ, να γίνουν ίσες με το εκατό. Εναλλακτικά, απευθείας αυτό. Το α, οι τιμές του α, για τις οποίες ισχύει ότι το α είναι μεγαλύτερο του οκτώ, να είναι ίσες με το εκατό. Και αυτό τώρα είναι όντως δύσκολο κατανοητό στην αρχή, γι' αυτό και επιμένω και πάλι και θέλω να το δούμε. Τι του λέμε, σε μία σειρά έχουμε ορίσει τον πίνακα α, ωραία. Και μετά ξαφνικά βλέπετε εσείς μπροστά σας αυτό που λέει α του α μεγαλύτερο του οκτώ και λέτε εγώ τα παρατάω, θα πάω να γίνω ψαράς. Δεν είναι αυτά για μένα. Δεν είναι πιο εύκολο όταν είσαι ψαράς, πιο δύσκολο είναι. Αλλά δεν έχει σχέση με πίνακες. Συνήθως. Τίποτα δεν είναι σίγουρος σε αυτό το σύμπαν. Πώς λειτουργεί, πώς λειτουργεί. Έχει το α όρισμα, είναι μέσα σε παρένθεση, έχω σε παρένθεση μία παράσταση, βεβαίως. Άρα αυτή η παράσταση για να έχει νόημα για το α θα πρέπει να μου δείχνει θέση στοιχείων. Σωστά. Ποια είναι η παράσταση α μεγαλύτερο του οκτώ. Τι θα μου δώσει αυτή η παράσταση, τις θέσεις των στοιχείων του α για τις οποίες ισχύει αυτή η θέση. Άρα θα μου δώσει τους αριθμούς που λέγαμε. Ένα, τρία, έξι, οχτώ και τα λοιπά. Άρα εδώ, αυτή εδώ η παράσταση, ξέχασα τις σκυμβολίες μου σήμερα, την έχω πάθει δηλαδή μεγαλοπρεπώς, μεταφράζεται στο εξής. Λέμε α του α μεγαλύτερο του οκτώ ίσον εκατό. Είναι σαν να του λέμε α του ένα, τρία, έξι, οχτώ, όσα στοιχεία τέλος πάντων, όντως είναι μεγαλύτερα του εκατό. Ίσον του εκατό. Πηγαίνουμε λοιπόν και του λέμε σε ποιες θέσεις θα βάλει την τιμή, θα αντικαταστήσει τις υφστάμερες τιμές, την τιμή εκατό. Λέει εδώ ο συνάδελφός σας, το α μεγαλύτερο του οχτώ τι αποτέλεσμα θα έχει. Κάποιοι προσέχουν, καλό αυτό. Ρε εσείς, μην καταπίνετε αμάση τότε σας δίνουμε. Α μεγαλύτερο του οχτώ, τι αποτέλεσμα θα έχει. Θα έχει ως αποτέλεσμα έναν πίνακα, πίνακα δεν θα είναι. Θα έχει τόσες διαστάσεις, δύο, θα είναι τέσσερα επί τέσσερα, ο οποίος θα έχει μηδενικά εκεί όπου αυτό είναι false και θα έχει άσους εκεί όπου αυτό είναι true. Άρα, τι θα δώσει το αποτέλεσμα εδώ. Ας το δημιουργήσουμε και πάλι εκ του μηδενός. Ο πίνακας μας, ο Μάτζικα 4 είναι ο α. Για να δούμε λοιπόν, find του, είχες πει α μεγαλύτερο του οχτώ. α μεγαλύτερο του οχτώ. Find λοιπόν έχει αυτό το αποτέλεσμα που βλέπετε, παράγει δηλαδή ως αποτέλεσμα ένα διάνισμα. Τι περιέχει αυτό το διάνισμα, τις θέσεις 1, 3, 6, 8, 10, 12, 13, 15. Τις θέσεις του α για τις οποίες ισχύει η σχεσιακή σύγκριση. Εάν λοιπόν εμείς ζητήσουμε να βρούμε τα στοιχεία του α και μάλιστα επειδή μπορεί να σας μπερδεύει αυτό, μπορώ το αποτέλεσμα της find να το δώσω ως περιεχόμενο στην β. Έχω έναν καινούργιο πίνακα τον β που έχει ως στοιχεία τις θέσεις του α. Άρα ο α του β τώρα ποιος είναι, είναι όλα τα στοιχεία που είναι μεγαλύτερα από οχτώ. Άρα αν του πω ότι θέλω τα στοιχεία του α που είναι μεγαλύτερα του οχτώ να γίνουν όλα εκατό, έχω κάνει τη δουλειά που θέλω. Και όλα αυτά μπορώ να τα κάνω με μία κίνηση βέβαια. Χρησιμοποίησα το β χάριν ευκολίας. Για να δούμε ποιο είναι το αποτέλεσμα, ποιο είναι, ποια είναι η πράξη που μου δίνει το περιεχόμενο του β. Είναι η find του α μεγαλύτερη του οχτώ. Μια παρένθεση ακόμη είχα βάλει, ορίστε. Να λοιπόν ο τρόπος με τον οποίο μπορώ να λειτουργήσω, όμως μπορώ να λειτουργήσω και διαφορετικά. Ποιος είναι ο άλλος τρόπος με τον οποίο θα μπορούσα να λειτουργήσω. Να θυμίσω ότι μπορώ να συγκρίνω κάθε στοιχείο και το αποτέλεσμα είναι τι είπαμε, σύγκριση στοιχείο προ στοιχείο, πίνακας, ίδιος με τον αρχικό, με μηδενικά κι άσους, άρα η σύγκριση α μεγαλύτερη από οχτώ θα μου παράξει αυτό εδώ το διάνυσμα. Να κλείσω πόρτα γιατί έχουμε θόρυβο. Μπορώ να χρησιμοποιήσω τώρα αυτό το διάνυσμα πάλι ως δίκτη για το α. Βεβαίως, δηλαδή, να του πω τώρα σε ίσον α μεγαλύτερο του οχτώ, τι συνέβη. Εγώ θέλω να δώσω το αποτέλεσμα της λογικής σύγκρισης ως είσοδο σε μια μεταβλητή στην σε. Έχω λοιπόν το σε άρα, έχω τώρα το διάνυσμα σε, τον πίνακα σε, που έχει ακριβώς τις ίδιες διαστάσεις με τον πίνακα α, αλλά έχει άσους εκεί όπου τα στοιχεία του είναι μεγαλύτερα από το οχτώ. Δηλαδή, πρακτικά, να του πω ότι θέλω να μου δώσεις τα στοιχεία του α, για τα οποία δεν είναι μηδενικά στοιχεία του σε, θα μου δώσει ουσιαστικά όλα τα στοιχεία για τα οποία ισχύει αυτή η σύγκριση. Αυτό λοιπόν που θέλω εγώ είναι το εξής, να του πω ότι θέλω τα στοιχεία του α, για τα οποία ο πίνακα α είναι μεγαλύτερος του οχτώ, να γίνουν ίσα με το εκατό. Γιατί είναι εκατό, διότι τα έχω πεταφράσει ήδη, έτσι. Πάλι δεν το προσέχετε, σας πιάνω, απρόσφυκτους, δεν έκανα τη μετατροπή πιο πριν, με το παράδειγμα. Οπότε πρέπει πάλι να αρχικοποιήσω. Έχω λοιπόν εκ νέου, ο α μου ο αρχικός, τώρα αν του πω ότι θέλω τον πίνακα α, για τον οποίο κάθε στοιχείο του α έχει ελεγχθεί ως προς τα αν είναι μεγαλύτερο του οχτώ, τι θα μου πει? Να τα τα στοιχεία που θέλεις. Και αν του πω ότι θέλω όλα αυτά τα στοιχεία να γίνουν ίσα με εκατό, θα το κάνει απευθείας. Έχω λοιπόν δύο τρόπους τουλάχιστον, χωρίς να χρησιμοποιήσω καμία λογική δομή. Πρώτος τρόπος, χρησιμοποιώ την find, δημιουργώ ένα διάνισμα με θέσεις από ένα έως δεκαέξι εδώ, δεκαέξι στοιχεία έχει ο α και μετά αναθέτω σε κάθε θέση την τιμή εκατό. Δεύτερος τρόπος, χρησιμοποιώ τη λογική σύγκριση μεγαλύτερο, δημιουργώ έναν πίνακα ίδιο με τον αρχικό τον α, μόνο όμως που αυτός ο πίνακας έχει μηδενικά και άσους και του λέω στα σημεία όπου υπάρχουν άσοι βάλε στον αρχικό πίνακα την τιμή εκατό. Βλέπουμε ότι έχουμε τουλάχιστον δύο τρόπους, ξαναλέω χωρίς να χρειαστεί να χρησιμοποιήσουμε καμία από τις λογικές μας εκφράσεις. Για να μην αφήσω παραπονεμένες και παραπονεμένους αυτούς οι οποίοι έχουν μια τάση και ροπή προς τις δομές επανάληψης και ελέγχου, για να επισκεφθούμε τις δομές επανάληψης συγκεκριμένα, όπου είδαμε δύο εκφάνσεις αυτών, μία με χρήση της for και μία με χρήση της while. Και στις δύο περιπτώσεις κάνουμε έναν λογικό έλεγχο, η διαφορά είναι ότι την for την χρησιμοποιούμε όταν γνωρίζουμε τον αριθμό των επαναλήψεων, την while όταν αυτό δεν είναι γνωστό. Μπορώ να μετατρέψω λοιπόν τα for loops σε while loops. Για να το δούμε. Ιδού ένα παράδειγμα. Θέλω για i από 1 έως 10 με βήμα 2 να εμφανίσω πολύ απλά, παιδαριώδες θα μου πουν κάποιοι, το i τετράγωνο. Πόσες φορές θα το κάνω, όσες φορές επιτάσει η χρήση του δίκτη. Για i1, το επόμενο τιμή του δίκτη θα είναι προφανώς η 1 συνβήμα. 1, 3, 5, 7, 9. Πέντε φορές μπορώ αυτό να το μετατρέψω σε δομή ισοδύναμη με χρήση της while. Βεβαίως τι θέλω εδώ, να πάρω την αρχική διαδικασία δηματικής αύξησης του i και να τη μετατρέψω σε λογική σχέση. Άρα λοιπόν θέλω να εκτελείται η πράξη όσο το i είναι μικρότερο ίσο του 10. Μόνο που σε αυτή την περίπτωση δεν έχω κάποιον ο οποίος να μου αυξάνει τον δίκτη i. Άρα τον έχω εντάξει μέσα στο loop και βέβαια για να μπορέσει να ξεκινήσει τον έχω αρχικοποιήσει. Αυτή λοιπόν είναι η βασική διαφορά που εντοπίζουμε όταν θέλουμε να μεταφράσουμε μία δομή for σε μία δομή while. Αρχικοποιούμε τον δίκτη. Γενικά συμβουλή είναι το να αρχικοποιείτε κάθε μεταβλητή που χρησιμοποιείτε και εντάσσουμε τον δίκτη μέσα στην δομή επανάληψης. Αυτό μπορεί να γίνει και σε τέτοιες περιπτώσεις. Προσέξτε επιτρέπονται αυτού του είδους τα for loops. Το είδαμε πιο πριν. Μπορώ να χρησιμοποιήσω διανύσματα και για δίκτες. Άρα κοιτάξτε εδώ κάτι παράξενο. Θέλω η πράξη να γίνει για συγκεκριμένες τιμές του i, τις οποίες μου ορίζει το περιεχόμενο του διανύσματος i. Δηλαδή θέλω η πράξη να γίνει για 2, 4, 1, 6. Αυτές τις τιμές δεν μπορώ να τις πετύχω με τη διαδικασία του αρχή-βήμα-τέλος. Έχω λοιπόν ένα διανύσμα τιμών που θα το χρησιμοποιήσω ή θέλω να το χρησιμοποιήσω για να είμαι ακριβής ως τιμές δίκτη. Του λέω λοιπόν για i, προσέξτε, για i ίσον το διανύσμα θα πάρει μία προς μία όλες τις τιμές του διανύσματος, με κάνει τις πράξεις, τον υπολογισμό του να εμφανίσει το i τετράγωνο και αν αυτό θέλω να το μεταφράσω σε δομή while, στην ίδια δομή με χρήση της while, τότε πρέπει να του πω ότι όσο το i είναι μικρότερο ίσον του NOE, όχι ο γνωστός ίσος σε κάποιους βιβλικός ήρωας, αλλά είναι μια εντολή που μου δίνει τον αριθμό των στοιχείων, number of elements. Έχω υπολογίσει, εννοείται πιο πριν το έχω κόψει, τον αριθμό των στοιχείων του διανύσματος και όσο το i είναι μικρότερο από τον αριθμό των στοιχείων του διανύσματος, τότε υπολόγησε το i τετράγωνο και πήγαινε στην επόμενη τιμή. Οπότε προφανώς ο υπολογισμός αυτός θα γίνει έως ό,τι φτάσουμε σε αυτές τις τιμές διανυσμάτων βεβαίως. Ρωτάω συναδελφό σας, προσέξτε για να επαναλάβω, ρωτάω συναδελφό σας, ότι εδώ εμείς έχουμε ορίσει το i σαν διανύσμα. Πραγματικά, ναι, έχουμε χρησιμοποιήσει ένα διανύσμα για να πούμε στην δομή να παίρνει στοιχεία δίκτη από εκεί. Αυτό που θα κάνει όμως, και αυτό θέλω να σας δείξω εδώ, είναι ότι θα πάρει ένα προς ένα τα στοιχεία του διανύσματος και θα τα χρησιμοποιήσει ως τιμές στο δίκτη. Άρα λοιπόν θα πάρει την πρώτη, τη δεύτερη, την τρίτη, την τέταρτη τιμή, χωρίς να χρειάζεται εμείς να λάβουμε οποιαδήποτε πρόνοια για να μεταβεί από τη μία τιμή στην άλλη. Πηγαίνουμε λοιπόν να δούμε κάτι τώρα που αποτελεί συνέχεια των πραγμάτων που βλέπαμε, τις αριθμητικές μεθόδους. Είδαμε μέχρι τώρα χρήση λογικών σχεσιακών τελεστών, είδαμε τις δομές. Πώς μπορούμε να τα χρησιμοποιήσουμε όλα αυτά σε αριθμητικές μεθόδους επίλυσης προβλημάτων. Άρα λοιπόν, πρώτα απ' όλα να δούμε πού χρειαζόμαστε αριθμητικές μεθόδους επίλυσης προβλημάτων στον κόσμο του μηχανικού και της μηχανικής είναι πάρα πολύ έντονη η παρουσία όλων των αναλυτικών αριθμητικών τρόπων υπολογισμών. Και η γνώση αυτών είναι πραγματικά απαραίτητη. Λειτουργούν οι αριθμητικές μέθοδοι υπολογίζοντας ποσότητες βάσης σχέσεων. Ουσιαστικά μεταφράζουμε γνωστές μας σχέσεις από την περιοχή της φυσικής, της χημίας των μαθηματικών σε διακριτοποιημένες σχέσεις με τρόπο που θα μάθετε στο μάθημα της αριθμητικής ανάλυσης και χρησιμοποιούμε μετά υπολογιστικές τεχνικές. Άρα λοιπόν, δεν θα μπούμε στο πρόγραμμα της αριθμητικής ανάλυσης. Θα δούμε όμως κάποια πράγματα που αποφορούν το αργοριθμικό και προγραμματιστικό μέρος. Έστω λοιπόν, κλασικό παράδειγμα γνωστό ήδη από λυκιακά χρόνια. Έστω ότι έχω χίλιους αριθμούς, ο κάθε ένας μεταξύ του ένα και του ενός εκατομμυρίου, διατεταγμένους από το μικρότερο στο μεγαλύτερο. Μπορώ να απαντήσω στο ερώτημα του εάν ο 123456 περιλαμβάνεται σε αυτούς. Προφανώς, η ύπαρξη της διάταξης διευκολύνει την απάντηση πάρα πολύ, έτσι δεν είναι. Ακριβώς επειδή οι αριθμίοι μας αριθμοί είναι διατεταγμένοι από το μικρότερο προς το μεγαλύτερο, μπορώ με πολύ λίγες συγκρίσεις να βρω εάν ο ζητούμενος αριθμός ανήκει στη λίστα. Πώς το κάνω αυτό? Ελέγχω ένα προς ένα όλους τους αριθμούς. Ελέγχω τον πρώτο, ελέγχω τον επόμενο, έως ότου βρω τον αριθμό της λίστας. Αυτό θα το κάνω πολύ πιο εύκολα, ξαναλέω, εάν η λίστα έχει ήδη ιεραρχισμένους τους αριθμούς, διότι δεν χρειάζεται να τους ελέγξω όλους. Διαφορετικά, αν είναι ανακατεμένοι αριθμοί, μοιάζει το πρόβλημα με το να έχω τον κατάλογο των ανοματεπονήμων σας ή με το να έχω τα ονόματα των αρχείων που θα ανεβάσετε ως απάντηση στο πρώτο θέμα και να μην έχετε ακολουθήσει τις οδηγίες που λένε το πώς θα ονομάσετε τα πάντα, έτσι ώστε να μας αναγκάζεται να ψάχνουμε σε ένα προς ένα, σε αυτά τα 200 αρχεία, ποιος έχει κάνει τι. Το είπα εμέσως, ε? Η μέθοδος της διχοτόμησης είναι μια από τις πιο γνωστές μεθόδους που χρησιμοποιούμε όταν θέλουμε να βρούμε στοιχεία μέσα σε λίστες και ουσιαστικά συνεπάγεται πως χωρίζουμε τη λίστα σε δύο ίσα τμήματα και συγκρίνουμε τον αριθμό που θέλουμε με κάθε ένα από αυτά τα τμήματα. Από το μικρότερο και από το μεγαλύτερο αριθμό του κάθε τμήματος επιλέγουμε αυτό που περιλαμβάνει το ζητούμενο και πάμε παρακάτω. Έτσι λοιπόν πρακτικά, εάν έχουμε αυτούς τους χίλιους αριθμούς διατεταγμένους και ψάχνουμε έναν συγκεκριμένο, πώς μπορούμε να το κάνουμε, να βρούμε τον μεσαίο αριθμό και να πούμε, ο αριθμός που ψάχνω είναι μικρότερος ή μεγαλύτερος αν η αριθμή μου είναι διατεταγμένη από τον μικρότερο ως τον μεγαλύτερο. Συγκρίνω αυτόν που αναζητώ με τον μεσαίο αριθμό της λίστας κι αν είναι αυτός ο αριθμός που ψάχνω μικρότερος, το οποίο είναι στο πρώτο, θα πάω στο πρώτο μισό, αν όχι στο δεύτερο μισό. Πετάω λοιπόν το ένα μέρος, κρατάω το μισό, το κόβω πάλι στη μέση. Επαναλαμβάνω τη σύγκριση με τα δύο τμήματα. Το κόβω πάλι στη μέση. Πόσες συγκρίσεις λέτε να χρειάζω μεταξύ χιλίων. Σκεφτείτε ότι κόβω τους 1.500, τους 500 σε 250, σε 125, χονδρικά σε 60, σε 30, σε 15, σε 7, σε 3, μετά την 8η επανάληψη, χονδρικά, τον έχω βρει, αν είναι εκεί μέσα. Ή έχω αποφανθεί, ως προς το ότι δεν βρίσκεται. Η μέθοδος λοιπόν της διχοτόμησης είναι εξόχως χρήσιμη, διότι σε 8 βήματα μπορώ να βρω έναν αριθμό, που διαφορετικά θα απαιτούσε 1.000 βήματα. Μάξιμου, έτσι, αν ήταν τελικά ο χιλιοστός από αυτούς, που σύγκρινα ένα προς ένα από τη λίστα των χιλίων. Και βέβαια η λογική της μεθόδου της διχοτόμησης είναι πολύ χρήσιμη, αν μπορούμε να τη χρησιμοποιήσουμε σε αριθμητικά προβλήματα επίλυσης. Έχουμε τη δυνατότητα να τη χρησιμοποιήσουμε αυτή τη λογική. Για να δούμε. Προβλήματα επίλυσης εξισώσεων έβρεσης τιμών. Έχουμε κάτι που μας βοηθά, το θεόριμα Μπολζάνο, το οποίο μας λέει ότι όταν έχω μια συνεχή συναρτηση, μιας μεταβλητής, ας το κάνουμε εδώ, η οποία μεταξύ δύο σημείων α και β αλλάζει πρόσημο, τότε είναι καταδικασμένη να δμηδενίζεται μεταξύ των σημείων αυτών και λόγω της συνέχειας. Και άρα θα υπάρχει τουλάχιστον μία ρίζα μεταξύ των α και β. Αυτή λοιπόν η διαδικασία μπορεί να μας βοηθήσει, μπορεί να μας βοηθήσει με τρόπο ανάλογο με αυτόν που χρησιμοποιήσαμε για να αντικοτομήσουμε λίστες, στο να αντικοτομούμε διαστήματα τιμών και να ψάχνουμε το εάν υπάρχει η ρίζα μιας εξίσωσης εκεί μέσα. Διότι βεβαίως υπάρχουν εξισώσεις που δεν έχουν αναλυτική επίλυση. Παραδείγματα. Πρώτα απ' όλα, ποιος είναι, σε επίπεδο πολυονημικών εξισώσεων, ποιος είναι ο βαθμός του πολυονήμου για τον οποίο μπορούμε να έχουμε αναλυτικές λύσεις. Μέχρι και τέσσερα. Από ποιον απ' εδείχθη? Από τον ΑΠΕΛ στη διδακτορική του Διατρυβείου, όταν ήταν 20 κάτι. Όχι, άλλος ήταν αυτός. Αυτός ήταν ο Εβάρεστος Γκαλουά. Ένθερμος θεασώτης της Δημοκρατίας και στη φάση της Γαλλικής Επανάστασης. Ο αστικός μύθος λέει ότι η μονομαχία έγινε για τα μάτια μιας κοπέλας. Η πραγματικότητα ιστορική φαίνεται πως είναι ότι η μονομαχία έγινε για πολιτικούς λόγους. Η αλήθεια είναι ότι ο Εβάρεστος Γκαλουά, θεμελιωτής της θεωρίας ομάδων, μιας από τις πιο σημαντικές και ενδιαφέρουσες μαθηματικές δημιουργίες του 19ου αιώνα, πέθανε σε μια ηλικία κοντά στα 20, αφού πρώτα απέτυχε να γίνει δεκτός στην Εκολπολιτεκνική. Θεωρήθηκε από τους καθηγητές ως αειδεία σκουπίδι, δεν σε θέλουμε, τι σε εσύ. Είπε υπερβολικά άναρχος για να μπει στα καλούπια. Έγραψε τις τελευταίες ημέρες που ήταν, επειδή είχε φυλακισθεί κιόλας, τις τελευταίες ημέρες της ζωής του είχε γράψει ένα πυκνό κείμενο 20 σελίδων γύρω από τα βασικά στοιχεία της θεωρίας ομάδων και τα άφησε σε έναν φίλο του λέγοντας ότι «Ναι, θα ήθελα να τα στείλεις στον ΚΑΟΣ, γιατί αυτός θα καταλάβει ότι έχω δίκιο». Λέγω ότι ο Μακαρίτης είναι τρελός, εγώ δεν θα έχω ενοχλήσει τον μεγάλο ΚΑΟΣ για τέτοιους πράγματα, έτσι τα χαρτιά του ΚΑΛΟΑ έμειναν για κάποια χρόνια στο συρτάρι έως ότου κάποιος άλλος τα δημοσίωσε και τότε συνειδητοποίησαν ότι «Ναι, είχε απόλυτο δίκιο». Για να κλείσω αυτή την παρένθεση, είναι ενδιαφέρουσα η ιστορία. Λοιπόν, πάμε τώρα να δούμε εμείς τι σημαίνει δεν είναι συνεχής χα. Εδώ τι παίχνουμε. Εδώ τι έχουμε, προδόσαμε και Παναλαδικές, το έχουμε ξεχάσει, το ξέρω, το έχουμε βάλει πίσω μας, δεν υπάρχει, δεν υφίσταται, κάναμε διαγραφή μνήμης. Παρ' όλα αυτά, όμως, εδώ έχουμε το παράδειγμα συνάρτησης που είναι συνεχής πλευρικά. Δεν ξέρω αν έχετε μάθει οπλευρικές συνέχειες, δηλαδή δεν ορίζεται στο μηδέν, αλλά είναι δεξιά και αριστερά του μηδένου συνεχής. Πάμε τώρα να δούμε πώς θα χρησιμοποιήσουμε αυτό το θεόριμα. Επειδή λοιπόν έχουμε πολυονημικές εξισώσεις πάνω του τετάρτου βαθμού, που δεν μπορούν να λύθουν αναλυτικά, και έχουμε τέτοια εμείς οι μηχανικοί προβλήματα, όπου βέβαιος ας πούμε η εντροπία ενός αερίου εκφράζεται με πολυόνιμο υψηλότερο βαθμό, έχουμε επίσης προβλήματα όπου εμπλέκονται πολυονημικές εξισώσεις με τριγονομετρικές, ασφαλώς στη μετάδοση θερμότητας θα δείτε σχέσεις οι οποίες δεν επιλύονται αναλυτικά. Και εμπλέκουν πολυονημικά στοιχεία με τριγονομετρικά στοιχεία. Πώς θα βρείτε τα σημεία στα οποία μη ταινίζονται όλα αυτά, δεν θα τα βρείτε. Not an option for an engineer. Ο μηχανικός είναι αυτός που βρίσκει λύσεις. Άρα, για να δούμε μία από τις πολλές μεθόδους, προσέξτε πώς έχει το πράγμα, γνωρίζετε λοιπόν το θεόριμα Μπολζάνο. Άρα, εάν η τιμή της συνάρτησης αλλάζει μεταξύ των άκρων του διαστήματος μέσα, στο οποίο υποκτευόμαστε ότι υπάρχει η ρίζα, χρωμάτισα αντίστοιχα, αν δηλαδή το γινόμενο των τιμών είναι μικρότερο το μηδέν, τότε προφανώς είναι τερόσημα και τότε προφανώς αλλάζει πρόσημο. Τότε βαφτίζω χ1 το αριστερό, αν θέλετε, σκέλος, χ2 το δεξί σκέλος, λέω ότι αρχικά η λύση βρίσκεται στη μέση, ελέγχω και επαναλαμβάνω μέχρι να βρω τη λύση τα αξής βήματα, ελέγχω εάν όντως η τιμή της root μηδενίζει, δεν μηδενίζει τότε, ελέγχω αν το γινόμενο της αριστερής τιμής επί την root είναι μικρότερο από το μηδέν, τότε αυτό τι σημαίνει, ότι αλλάζει πρόσημο στο αριστερό μισό για εσάς, έτσι έχω το διάστημά μου α, β, έτσι α, β. Οπότε λοιπόν είναι ετερόσημη συνάρτηση εδώ, βρίσκω την root στη μέση και λέω είσαι root επί α ετερόσημη, αν ναι τότε θα βαφτίσω εσένα β, άρα η root θα γίνει η β, θα γίνει το δεξιάκρο, διαφορετικά θα γίνει η α το δεξιάκρο, λογικό. Με αυτό τον τρόπο λοιπόν εντοπίζω το ημιδιάστημα στο οποίο βρίσκεται η λύση και ξανακόβω στη μέση και ξανακόβω στη μέση, έως ότου βρεθώ σε μία τιμή όπου τι θα συμβεί η root μπορεί να μην γίνει ποτέ, μάλλον η εύτης root μπορεί να μην γίνει ποτέ ακριβώς μηδέν. Αυτό θέλουμε εμείς, θέλουμε μια εφικτή ρεαλιστική λύση που για έναν μηχανικό μπορεί να είναι μία τιμή επαρκώς κοντά στο μηδέν ώστε να θεωρηθεί λύση. Άρα αυτή εδώ η σύγκριση πώς θα μεταφραστεί για εμάς που έχουμε ήδη περάσει πέντε εβδομάδες το μάθημα της πληροφορικής στο φοβερό και τρομερό τμήμα των μηχανολόγων μηχανικών. Πλέον γνωρίζουμε ότι αυτή η σύγκριση δεν έχει ιδιαίτερο νόημα διότι πρέπει να μας τύχει το λαχείο για να πέσουμε στην περίπτωση που η εύτης root θα είναι ακριβώς μηδέν. Έτσι δεν είναι. Και αν είναι στην γειτονιά του μηδενός και τι σημαίνει γειτονιά αν για εμάς είναι επαρκές το να είναι στο μηδέν σύμπλιν δέκα στιγμήον έκτη ας πούμε δέκα στιγμήον τρίτη ανάλογα με τη φύση του προβλήματος και την ακρίβεια που επιδιώκουμε. Έτσι δεν είναι. Άρα λοιπόν θα βάλουμε εδώ μια άλλη σύγκριση. Το κρατάμε αυτό για την υλοποίηση του αλγορίθμου γιατί διότι αυτό θα το συναντήσουμε μπροστά μας και ευτυχώς προνοήσαμε να το βάλουμε και στις ασκήσεις του εργαστηρίου που θα κάνετε αυτή τη εβδομάδα. Άρα ήδη το θεώρημα μάλλον τη μέθοδο της διχοτόμησης θα τη δούμε από σήμερα ξεκινώντας στα εργαστήρια αυτής της εβδομάδας. Ερώτημα. Λέω ότι βαφτίζω το αx1, βαφτίζω το βx2. Οπότε λοιπόν ξεκινώ. Υπολογίζω αν αυτό είναι μηδέν. Δεν είναι. Υπολογίζω αν το εφ του α επί εφ του ρούτ είναι μικρότερο από το μηδέν. Εάν αυτό συμβαίνει, τότε σημαίνει ότι μπορώ να περιορίσω το αρχικό μου διάστημα αβ στο α. Και μετά λοιπόν θα του πω ότι τη θέση του x2 εδώ μέσα θα την πάρει το ρούτ για να κάνω τον υπολογισμό με αυτό. Έχω παράδειγμα. Πιστεύω ότι είναι πιο εύκολο έτσι. Έστω ότι έχω αυτή την εξίσωση. Τρίτου βαθμού, έχω αναλυτική σχέση από τον διαβόητο Καρντάνο. Την εποχή που ο Καραβάτσιος ζωγράφιζε με τον μοναδικό του τρόπο κουβαλώντας ένα μαχαίρι και μονομαχώντας τα κακαγόγια της Ιταλίας, ο Καρντάνο έπαιμε εξισώσεις μονομαχώντας με στίχημα στους πάτωνες και προστάτες, με καλεμπόρους που έκαναν εισαγωγές και εξαγωγές συγκυρών στην Ιταλία και ήθελαν ανθρώπους που ήξαρα να λύνουν τριτοβάθμιες εξισώσεις γιατί με αυτόν τον τρόπο υπολόγιζαν όμβους πιο γρήγορα και άρα οι εμπορικές συναλλαγές ήταν πιο προσοδοφόρες. Έχω λοιπόν αυτή την τριτοβάθμια εξίσωση. Για να δούμε. Έστω το α είναι 0, το β1 έστω, το ενδιάμεσό τους είναι 0,5, το ε είναι 0,1, το ε είναι 4, το χ, το ε του κεντρικού σημείου είναι 0,125. Τι βλέπω λοιπόν εγώ ότι το 0,125 είναι θετικό όπως είναι το ε του β, άρα στο επόμενο βήμα τι θα κάνω, θα βάλω στη θέση του β το 0,5. Έτσι, ακριβώς επειδή και αυτό είναι θετικό όπως και αυτό θα μαζέψω προς την πλευρά που βρήκα ότι υπάρχει η λύση. Οπότε λοιπόν αυτό δεν μου λέει ο αλγόριθμος. Σύγκρινε είναι το ε του α επί το ε του σε αρνητικό ή το ε του β επί το ε του σε. Είναι το ε του α επί το ε του σε και επειδή είναι το ε του α επί το ε του σε βάλετε θέση του β το χ του σε. Το ξανακάνεις αυτό και βρίσκεις νέα τιμή, ε του α πάλι μειών 1 δεν άλλαξε, το ε του β τώρα 0,125 αυτό που είχα υπολογίσει πιο πριν, το ε του χ σέντερ του κεντρικού είναι μειών 0,7. Άρα τώρα βλέπετε πια δύο πάντοτε βάφω με κόκκινο, αυτά που αντιστοιχούν στις τιμές που δημιουργούν το καινούριο διάστημα μέσα στο οποίο θα κινούμε. Οπότε λοιπόν τώρα επειδή το ε του α επί το ε του χ σέντερ είναι θετικό δεν αλλάζει εκεί πρόσημο, αλλά το ε του β επί το ε του χ σέντερ είναι αρνητικό αλλάζει εκεί πρόσημο, το καινούριο α θα πάρει τιμή του χ σέντερ, 0,25 λοιπόν. Με αυτόν τον τρόπο κινούμαστε και πάλι και στο επόμενο βήμα παρατηρήστε εντωμεταξύ ότι καθώς προχωρούν τα βήματα οι τιμές αρχίζουν και παίζουν μεταξύ του μηδέν και του αριστερά και δεξιά του μηδενός και αρχίζουν και μειώνονται σε απόλυτη τιμή. Οπότε σε κάποιο βήμα ήδη φτάνουμε στο να έχουμε τιμή της συνάρτησης στο χ σέντερ ίση με 0,0168. Αν αυτό είναι κάτι επαρκώς κοντά στο μηδέν για εμάς μπορώ να το βαφτίσω λύση ή διαφορετικά να συνεχίσω. Τελικά λοιπόν το χ είναι 0,472834 και μπορώ να ορίσω μια ακρίβεια τη διαφορά μεταξύ δυο τιμών. Μπορώ να έχω λοιπόν τουλάχιστον δύο κριτήρια. Είτε το να πω ότι θέλω η διαφορά μεταξύ δυο τιμών του χ που βρίσκω να είναι κάτω από ένα όριο, είτε η f του χ να είναι πολύ κοντά πάλι κάτω από ένα όριο σε σχέση με το μηδέν. Πώς σας φαίνεται? Είναι και δεν είναι. Να το δούμε ολόκληρο. Αν το κατακτήσουμε εδώ πιστεύω ότι δεν θα έχουμε πρόβλημα. Λοιπόν, ξεκινώ. Μου λέει κάποιος πάρε την εξίσωση και βρίσκω εγώ κάνοντας μια απλή γραφική παράσταση ότι κάπου εκεί μεταξύ μηδέν και ενός έχει μία λύση. Δεν ξέρω όμως ποια είναι η λύση. Άρα βρίσκω, εφαρμόζω τον αργόριθμο. Τι μου λέει ο αργόριθμος. Βρες το f του α, πόσο είναι μειονένα. Βρες το f του β, πόσο είναι τέσσερα. Βρες και το μεσαίο τους. Το μεσαίο είναι α συμβήτα δεύτερο 0,5. Το f του μεσαίου 0,125. Α, τι μου λέει ο αργόριθμος μετά. f του α, ποιο φ του μεσαίου είναι αρνητικό. Είναι. Άρα αυτά τα δύο θα αποτελέσουν το νέο σου διάστημα. Το αρχικό σου διάστημα ήταν το 0,1. Το επόμενό σου διάστημα όμως θα είναι το 0,0,5. Γιατί αυτά τα δύο δίνουν αρνητικό. Τα χρησιμοποιώ εδώ. Κάνω την ίδια δουλειά. Και βρίσκω τώρα ότι το f του β επί f του μεσαίου μου δίνει αρνητικό. Άρα αυτά τα δύο θα αποτελέσουν το καινούριο διάστημα. Να λοιπόν κρατάω το f του β σταθερό πλέον. Στη θέση του α βάζω το 0,25. Επαναλαμβάνω την ίδια διαδικασία και βρίσκω πάλι ότι το f του β επί f του μεσαίου είναι ετερώσιμο. Αυτό σημαίνει ότι αυτό είναι το καινούριο διάστημα στο οποίο πρέπει να περιοριστώ. Και έτσι κρατώ πάλι το ίδιο f του β και βάζω στη θέση του f του α το προηγούμενο κεντρικό. Με αυτόν τον τρόπο συνεχίσω να δουλεύω και φτάνω εδώ ώστε τελικά να εντοπίσω την λύση στο 0,472834. Αυτό τον αργόριθμο λοιπόν θα τον υλοποιήσουμε και στα πλαίσια του εργαστηρίου. Πώς σας φαίνεται, ερωτήσεις, απορίες, σε τι κατάσταση είμαστε. Ξαναλέω, ποια είναι η λογική μας. Ετερώσιμα στοιχεία. Τα χρησιμοποιώ για να υπολογίσω τις τιμές. Υπολογίζω το μεσαίο, πολύ καλά. Το μεσαίο στοιχείο, την τιμή της τάτησε, το μεσαίο γκρίνω με το ένα άκρο και με το άλλο άκρο. Και ανάλογα με το πού βρίσκω ετεροσυμία, κρατάω αυτά τα δύο καινούργια άκρα. Τη μια φορά θα βρω εδώ ετεροσυμία, την άλλη θα βρω εκεί και καθώς το κάνω αυτό, συνεχώς μικραίνει το διάστημα, γιατί πάντοτε από βήμα σε βήμα κόβω στη μέση. Κόβω στη μέση, κόβω στη μέση, και κάποια στιγμή οι πλευές του διαστήματος πλησιάζουν πολύ μία την άλλη. Εάν θέλω, μπορώ να χρησιμοποιήσω την απόσταση αυτών των δύο σημείων ως κριτήριο έβρεσης της λύσης. Πιο ασφαλές είναι να χρησιμοποιήσω ως κριτήριο έβρεσης της λύσης την απόσταση του μηδενός από τη τιμή της συνάρτησης για F του C, του X του C, του κεντρικού σημείου. Στο εργαστήριο, λοιπόν, θα σας δοθεί αυτή η συνάρτηση, την οποία δεν μπορείτε να λύσετε, αναλυτικά. Είναι οικοζυνουσχή συγχή, απλούστατη, αλλά δεν λύνεται. Δεν υπάρχει αναλυτικός τρόπος επίλυσης, έτσι δεν είναι. Οπότε, λοιπόν, θα σας δοθεί στο εργαστήριο αυτή η συνάρτηση. Θέλω την προσοχή σας, γιατί θέλω να είμαστε προετοιμασμένοι στο εργαστήριο. Κάνοντας τη γραφική παράσταση της συνάρτησης αυτής, θα δούμε ότι σε μια περιοχή, εδώ είναι το μηδέν παρεπιπτόντος, και μεταξύ μίον 1 και 1, σίγουρα υπάρχει μία λύση. Το πρόβλημα, ξέρετε, είναι στις περιπτώσεις των πολυονομικών συναρτήσεων, που μπορεί να έχουν περισσότερες από μία λύσης εκεί πέρα. Οπότε, αυτή η μέθοδος θα βρει μία λύση, αλλά θα προσπεράσει άλλες. Και θέλω να πω ότι σκεφτείτε να έχετε μία τέτοιου είδους κατάσταση. Έχω δηλαδή μία συνάρτηση, η οποία συμπεριφέρεται με τον εξής τρόπο. Και εγώ ψάχνω για λύση σε αυτό το διάστημα. Άλφα, βίτα. Είναι συνεχής και παραγωγίσιμη, βεβαίως. Και μάλιστα, για να το κάνω πιο σαφές, το βίτα είναι εδώ. Είναι το ευτού αλφοθετικό, μάλιστα. Είναι το ευτού βίτα αρνητικό, μάλιστα. Αλλάζει πρόσημο μεταξύ αλφα και βίτα, βεβαίως. Υπάρχει τουλάχιστον μία λύση. Στην συγκεκμένη περίπτωση υπάρχουν μία, δύο, τρεις, τέσσερις, πέντε λύσεις. Τι θα βρει η μέθοδος. Μία από αυτές. Στο εργαστήριό μας, λοιπόν, επανέρχομαι. Θα ξεκινήσουμε με αυτό το παράδειγμα. Πώς θα δουλέψουμε. Πρώτα απ' όλα, θα πρέπει να σκεφτούμε ότι θέλουμε έναν αριθμό μεταβλητών. Πόσες μεταβλητές θα ορίσουμε και ποιες. Το αποφασίζουμε πάντοτε, όταν θέλουμε να δημιουργήσουμε τον αργοριθμό μας. Έτσι δεν είναι. Αυτό είναι ένα ερώτημα. Μέσος μετά, αρχικοποιήσεις. Μετά θα πάμε από τον αργόριθμό στον κώδικα, θα επιλέξουμε το είδος της επανάληψης και θα δούμε ποια είναι η αποδεκτή απόκλυση της λύσης. Πάμε στα του μαθήματος. Είμαστε, λοιπόν, στην αρχή της τρίτης ώρας. Ξεκινήσαμε τη γνωριμία μας με τη μέθοδο της διχοτόμησης που βασίζεται στο θεόριμα Μπολζάνο. Είδαμε ένα παράδειγμα. Και τώρα ασχολούμαστε με ένα άλλο παράδειγμα το οποίο θα αποτελέσει και στόχο ανάπτυξης του αργορίθμου σε μορφή κώδικα στο εργαστήριο αυτής της εβδομάδας. Είναι η συνάρτηση συνειμήτων X-X. Είχα αφήσει την όλη διαδικασία στο σημείο όπου έπρεπε να αποφασίσουμε το πόσες και ποιες μεταβλητές. Θα έπρεπε να προνοήσουμε για τις αρχικοποιήσεις, να διαλέξουμε τις επαναλήψεις που θα επιτελεστούν και την αποδεχτή απόκλυση της λύσης. Για να δούμε λοιπόν, θέλουμε προφανώς πόσες μεταβλητές. Δεν έχουμε δύο άκρα στο διάστημά μας, άρα θέλουμε τουλάχιστον δύο μεταβλητές, την A και την B. Και επίσης τι άλλο θέλουμε. Θέλουμε μια μεταβλητή για την λύση. Ας την βαφτίσουμε root πιο εύκολο στη συνενόησή μας. Μπορούμε επίσης να έχουμε και μια μεταβλητή για την ακρίβεια. Βολεύει να βαφτίσουμε την ακρίβεια με ένα συγκεκμένο τρόπο, να αναθέσουμε την τιμή της σε μια συγκεκμένη μεταβλητή, γιατί έτσι τη χειριζόμαστε καλύτερα. Και επίσης μπορούμε να έχουμε και μια απόκλυση. Όλα αυτά τα βάζω εγώ σε αυτό το παράδειγμα επίλυσης. Δεν είναι ο μοναδικός τρόπος, είναι ένας από τους τρόπους. Έχω λοιπόν μια αρχικοποίηση των διαστημάτων, τιμή του α-1, τιμή του β-1. Το μόνο που αξίζει πιστεύω σχολιασμού, είναι ο τρόπος με τον οποίο ορίζω το ακιούραση. Η αρχική, εγώ επιλέγω εδώ, δεν είναι ο μόνος τρόπος, είναι ένας τρόπος. Ως ακιούραση το εξής, την διαφορά μεταξύ της λύσης και του ημιαθρίσματος των άκρων του διαστήματος. Άρα, έχω την εκάστοτε λύση. Αφαιρώ το ημιαθρίσμα. Στην αρχή αυτό είναι ίσο με το 1, έτσι δεν είναι. Και έχω εδώ και την απόκλυση, την οποία ορίζω ως 10 στην μειών έκτη. Η συνάρτησή μου τώρα. Κάπου πρέπει να βάλω την εξίσωση που θέλω να επιλύσω. Βολεύει πάρα πολύ να την βάλω μέσα σε μία συνάρτηση, ώστε να αναπτύξω την μέθοδο επιλυσής και να την ολοποιήσω σε συγκεκριμένο πρόγραμμα και κάθε φορά που αλλάζω εξίσωση, να μην αλλάζω όλο το πρόγραμμα, να πετάω τη μία συνάρτηση, να φέρνω την άλλη, να λύνω αυτή τη συγκεκριμένη. Άρα, λοιπόν, μπορώ να χρησιμοποιήσω μία συνάρτηση ακριβώς για αυτή τη δουλειά. Γι' αυτό δεν της θέλουμε τις συναρτήσεις. Και πολύ απλά να ορίσω την my function, my func, την αίφιστον χ συν κόζινος του χ, σαν μία πολύ απλή συνάρτηση. Από εκεί και πέρα, έχοντας αυτή τη συνάρτηση στο συγκεκριμένο παράδειγμα, να δούμε και ένα τμήμα κώδικα. Προφανώς, θα ξεκινήσω στη βάση ποιας συλλογικής, όσο το ακιούραση είναι μεγαλύτερο από την ακρίβεια, όσο το ακιούραση που υπολογίζω είναι μεγαλύτερο από την απόκλειση που έχω ορίσει. Τι απόκλειση όρισα? 10 στη μειονέκτη. Θα μπορούσατε να ορίσετε όποια θέλετε εσείς. Επέλεξα μία τιμή που είναι συνήθιση σε τέτοιου είδους προβλήματα. Δηλαδή, θέλω μια απόκλειση μεταξύ της λύσης και της πραγματικότητας, κοντά στο 1 εκατομμυριοστό. Εντάξει, 10 στη μειονέκτη. Οπότε, λοιπόν, όσο το ακιούραση που υπολογίζω, θυμάστε πώς υπολογίζεται, είναι η διαφορά μεταξύ της ρίζας και του ημιαθρίσματος των ορίων του διαστήματος κάθε φορά. Όσο, λοιπόν, αυτή η διαφορά είναι μεγαλύτερη από 10 στη μειονέκτη, προσέξτε πόσο πιο ωραία φαίνεται εδώ. Έχω ένα ακιούραση που το όρισα κάπου, αν αλλάξω τον ορισμό του ακιούραση, δεν αλλάζει όλο το πρόγραμμα. Δεν είναι, όπως λέμε, hard-coded, ενταγμένη σταθερά μέσα στο πρόγραμμα. Και έτσι, την απόκλειση μου μπορώ να την ορίσω στο σημείο που είδαμε και με αυτόν τον τρόπο να τις αλλάζω. Όσο, λοιπόν, ισχύει αυτή η συνθήκη, όσο αυτή η συνθήκη είναι true, τότε θα μπει, όπως λέμε, το πρόγραμμα μέσα στο while loop και θα υπολογίσει το νέο ακιούραση. Σωστά. Αμέσως μετά θα υπολογίσει τη νέα λύση. Εάν η τιμή της συνάρτησης στο ένα άκρο του διαστήματος επί τη συνάρτηση στη λύση είναι μικρότερη από το μηδέν, κάνω την αντικατάσταση ως προς το βήτα, διαφορετικά κάνω την αντικατάσταση ως προς το άλφα. Αυτό δεν κάνει ο αλγόριθμος και εδώ πρέπει να μείνουμε. Εδώ θέλω να επιμείνω. Τι κάνουμε, λοιπόν, εδώ? Βλέπουμε ότι μπαίνουμε σε αυτό το while loop, μπαίνουμε σε αυτή την επαναλαμβανόμενη διαδικασία, έχοντας μια αρχική τιμή του αλφα και του βήτα, των δύο άκρων του διαστήματος. Ξέρουμε ότι η συνάρτηση βιώνει αλλαγή προς ήμου μεταξύ αυτών των δύο. Υσχύει ο λογικός έλεγχος, άρα δεν είμαστε πολύ κοντά στη λύση, για να ισχύει ο λογικός έλεγχος. Υπολογίζουμε το accuracy, για να το έχουμε για την επόμενη φορά που θα τρέξει το while. Υπολογίζω την λύση που πάντοτε η λύση είναι το ημιάθρισμα των άκρων του διαστήματος και αμέσως μετά ελέγχω εάν η τιμή της συνάρτησης στο ένα άκρο του διαστήματος, στο αριστερό άκρο του διαστήματος, η τιμή της συνάρτησης στο κέντρο είναι αρνητική, άρα αλλάζει πρόσημο στο πρώτο μισό, στο αριστερό μισό του διαστήματος και σε αυτή την περίπτωση το δεξί άκρο θα το αντικαταστήσω με root, διαφορετικά αλλάζει στο δεύτερο μισό του διαστήματος και θα αντικαταστήσω το αριστερό άκρο με root. Ξανατρέχω την ίδια ιστορία. Τι θα συμβεί, θα ξαναϋπολογιστεί εάν ισχύει η λογική συνθήκη, εφόσον η συνθήκη ισχύει θα ξαναϋπολογιστεί η τιμή της ακιούραση με ό,τι root έχω κτλ κτλ, θα ξαναγίνει ο έλεγχος πότε θα πάψει να τρέχει αυτή η δομή επανάληψης, την στιγμή που αυτός ο έλεγχος δεν θα είναι true. Τι θα σημαίνει όμως αυτό? Αυτό θα σημαίνει ότι το ακιούραση που ορίστηκε ξαναλέω ως τι, ως η απόσταση μεταξύ της λύσης και του ημιαθρίσματος των άκρων του διαστήματος. Ότι δηλαδή είναι πάρα πολύ κοντά οι λύσεις τα άκρα του διαστήματος πρακτικά. Έχει μικρύνει πάρα πολύ το διάστημα. Άρα λοιπόν σε εκείνη τη φάση μπορώ να πω ότι βρήκα λύση. Και έτσι δεν θα υλοποιηθεί μια ακόμη επανάληψη. Ένα ερώτημα είναι το πόσες φορές θα τρέξει. Έτσι δεν είναι. Πώς μπορώ να το βρω? Μπορώ να προσθέσω εδώ έναν μετρητή μέσα στο Wild Loop. Απλά και μόνο για να μου μετρά το πόσες φορές τι. Τι θα κάνει αυτό το Ά. Εδώ θέλω πάλι την προσοχή σας. Επειδή εδώ θα αρχίσουν να χάνονται όσοι στάνονται ότι χρειάζονται διανοητικές δραμαμίνες για να αντέξουν την ταλαιπωρία. Ξαναλέω. Ποιο είναι το ακούραση. Είναι μια τιμή που ορίστηκε ως η απόσταση μεταξύ της λύσης και των άκρων του διαστήματος. Εντάξει. Μην αποσχελούμε τον εαυτό μας περισσότερο γι' αυτό. Γεγονός είναι ότι όσο μικρότερη είναι αυτή η απόσταση τόσο μεγαλύτερη είναι η ακρίβεια της λύσης. Σίγουρο. Τι χρησιμοποιώ για να κρίνω αν η απόσταση αυτή είναι μεγάλη ή μικρή. Την τιμή tall. Θυμάστε ήταν 10 στη μειονέκτη. Όσο λοιπόν αυτή η απόσταση είναι μεγαλύτερη από 10 στη μειονέκτη θεωρώ ότι δεν έχω φτάσει επαρκώς κοντά στη λύση. Άρα πρέπει να ξανατρέξω τη διαδικασία. Ποια είναι αυτή η διαδικασία. Υπολογίζω το νέο ακούραση. Υπολογίζω τη νέα λύση. Και μετά ελέγχω εάν η τιμή της συνάρτησης αλλάζει στο πρώτο μισό ή στο δεύτερο μισό του διαστήματος το οποίο βρίσκομαι εκείνη τη στιγμή και ανάλογα αλλάζω τα όρια του διαστήματος. Αυτό κάνω. Και μόλις ολοκληρώσω όλη αυτή τη φασαρία, όλη αυτή τη διαδικασία του λέω μέτρε και μια φορά ότι πέρασες από εδώ. Την επόμενη φορά θα δει μια τιμή του Ά ή Σ, έτσι. Θα ξαναπεράσει θα γίνει η τιμή τώρα τι. Η προηγούμενη ένας ή ένα θα γίνει δύο. Την επόμενη φορά που θα ξανατρέξει το ίφ θα πει η νέα μου τιμή είναι η παλαιά το δύο συν ένα τρία. Άρα όσες φορές περνά και τρέχει από την διαδικασία επανάληψης το Ά θα αυξάνει. Και στο τέλος η display τι κάνει απλά εμφανίζει την τιμή. Την πετάς στην οθόνη δεν κάνει κάτι άλλο. Οπότε λοιπόν για ακρίβεια δέκα εις την νίον πέμπτη ο αριθμός των επαναλήψεων που μετρώ είναι 18. Για ακρίβεια δέκα εις την νίον έκτη 21, δέκα εις την νίον εβδόμη 25, δέκα εις την νίον οχδόη 28, δέκα εις την νίον ενάτη 31. Όσο λοιπόν αυξάνει η ακρίβεια τόσο αυξάνει ο αριθμός των επαναλήψεων που απαιτούνται για να πιάσουμε την ακρίβεια αυτή με τη λύση μας. Η ερώτηση είναι εάν το while τελειώνει εδώ στο πρώτο end. Αυτό το end ρωτάω συναδεφό σας κάτι που αφορά την φύση της δομής. Βλέπουμε δύο περαιώσεις διαδικασιών. Η μία αφορά την δομή ελέγχου. Η άλλη αφορά την δομή επανάληψης. Επίσης πολύ καλή ερώτηση, ρωτάει συναδεφό σας γιατί αλλάζουμε τον υπολογισμό της ακιούραση. Κάθε φορά πρέπει να υπολογίζουμε την ακιούραση σε σχέση με την τιμή που έχει η root και τα α και β. Οπότε λοιπόν επειδή τα α και β και η root μεταβάλλονται μέσα στον έλεγχο και ο υπολογισμός της ακιούραση πρέπει να γίνει μέσα στον έλεγχο ώστε να ξέρουμε αν ο έλεγχος πρέπει να επαναληφθεί. Αυτό είναι σημαντικό, ρωτάει συναδεφό σας για ποιον λόγο αλλάζουμε την τιμή μιας μεταβλητής που συμμετέχει στον έλεγχο μέσα στον έλεγχο. Η απάντηση είναι ότι μόνο εάν η μεταβλητή αλλάζει μέσα στον έλεγχο μπορεί κάποια στιγμή να ολοκληρωθεί ο έλεγχος και να φύγουμε από αυτόν. Εάν δηλαδή άλλαζε κάπου εξωτερικά, τότε ο έλεγχος θα ήταν αέναος. Δεν θα άλλαζε ποτέ, μάλλον δεν θα είχαμε ποτέ τη δυνατότητα να φύγουμε από τον έλεγχο αυτό. Άρα υπολογίζουμε τη νέα τιμή της λύσης, τα νέα άκρα των διαστημάτων αντικαθιστώντας είτε το α ή το β ανάλογο με το πού είναι το πρόσιμο διαφορετικό μέσα στον έλεγχο και όλα αυτά χρησιμοποιούμε για ένα νέο υπολογισμό του ακιούραση. Ώστε την επόμενη φορά που θα τρέξει ο έλεγχος να λάβει υπόψη του αυτό το ακιούραση. Και πάλι και πάλι και πάλι. Λοιπόν, ξαναλέω ότι βλέπουμε και τον αριθμό των επαναλήψεων που απαιτούνται. Το ερώτημα βέβαια εδώ είναι πώς μπορώ τις επαναλήψεις αυτές να τις μετατρέψω από δομή while σε δομή for. Έχουμε ένα ζήτημα εδώ. Ξέρουμε σε αυτό το πρόβλημα, σε πρόβλημα αυτής της φύσης, μπορούμε να γνωρίζουμε εκ των προτέρων πόσες επαναλήψεις απαιτούνται για να βρεθούμε επαρκώς κοντά στη λύση. Δεν έχουμε τέτοια γνώση. Συνήθως αυτό που λοιπόν κάνουμε είναι, εάν θέλουμε να χρησιμοποιήσουμε την for, είναι το να ορίσουμε ένα επαρκώς μεγάλο αριθμό επαναλήψεων. Του λέμε δηλαδή για 1 έως 1 εκατομμύριο. Ελπίζοντας ότι μέσα σε όλο αυτό το διάστημα του 1 εκατομμυρίου επαναλήψεων θα βρούμε τη λύση. Συνήθως ισχύει, αλλά αυτό είναι μια, επιτρέψτε μου να πω, πιο αφελής προσέγγιση, έτσι δεν είναι. Δεν σημαίνει ότι είναι λάθος. Καθόλου. Είναι λογικό. Απλά βασίζεται σε μια άλλη λογική. Στη μια περίπτωση ελέγχουμε κάθε φορά εάν πρέπει να επαναπροσδιορίσουμε ακιούραση και ρίζα και όρια στη βάση της διαφοράς μεταξύ ρίζας και πραγματικότητας. Στην άλλη λέμε δεν ξέρουμε πόσες φορές θα γίνει αυτό, αλλά εσύ συνέχισε. Έως ότου η διαφορά αυτή γίνει μικρή. Να λοιπόν μια υλοποίηση, μία λέω, έτσι. Λέω εδώ ότι ορίζω έναν αριθμό μέγιστον επαναλήψεων, max iterations. Τον ορίζω κάπου στο πρόβλημα, πιο πέρα, μακριά από τη δομή. Για i από 1 έως μέγιστον αριθμό επαναλήψεων. Κάνε όλα τα υπόλοιπα. Μόνο που αλλάζει και κάτι άλλο και θέλω εδώ την προσοχή σας. Τι αλλάζει? Η δομή if, προσέξτε λίγο. Εάν η ακιούραση είναι μικρότερη από την απόκλειση που έχω ορίσει, τότε δεν έχουμε ξαναδεί το break. Break σημαίνει διέκοψε την δομή ελέγχου. Λήξεις. Break σημαίνει λήξεις. Διαφορετικά αντικατέστησε το β ή το α. Κατά τα άλλα, οι επαναλήψεις παραμένουν οι ίδιες. Και για μέγιστο αριθμό επαναλήψεων χίλια εδώ, μπορούμε να το κάνουμε με έναν πολύ εύκολο τρόπο. Μια επίσης πολύ καλή ερώτηση. Ρωτάω στην αδερφό σας, η break εδώ θα με βγάλει από την δομή ελέγχου ή από την δομή επαναλήψης. Να το πω ως εξής. Εάν εδώ μεταξύ του end της δομής ελέγχου και του end της δομής επαναλήψης είχα μια εντολή του τύπου εκτύπωσε είσαι και ο πρώτος. Θα εκτυπώνονταν αυτό το αποτέλεσμα ή δεν θα το βλέπαμε καθόλου. Εγώ θα ήθελα να πειραματιστούμε στο εργαστήριο πάνω σε αυτό, γιατί έτσι θα είναι πιο άμεσα το βίωμά μας. Αλλά σκεφτείτε όμως κανονικά τι θα περιμέναμε να κάνει η break. Προφανώς θα βγει από τη δομή επανάληψης, από τη δομή ελέγχου, συγγνώμη. Τώρα το αν θα βγει και από την δομή επαναλήψης, αυτό είναι κάτι διαφορετικό που πρέπει να το δούμε. Η break διακόπτει τη διαδικασία ελέγχου. Όσο στην διαδικασία επανάληψης όμως θα το δούμε λοιπόν στο εργαστήριο. Κρατήστε αυτό το ερώτημα εκεί. Και την επόμενη φορά που θα βρεθούμε εδώ, θα σχολιάσουμε και θα δώσουμε και την απάντηση. Θα έλεγα το εξής όμως, να δούμε κάτι άλλο. Χρειαζόμαστε μόνο ή μπορούμε μόνο με τη χρήση αυτών των διαδικασιών, των υπολογιστικών διαδικασιών, να βρούμε για παράδειγμα τη λύση μιας εξήσωσης. Ή έχουμε και άλλους τρόπους σε MATLAB Octave. Ευτυχώς έχουμε, όπως αναμένουμε, και άλλους τρόπους γενικά. Έχουμε πολλούς λαγούς και πολλά καπέλα και τα βγάζουμε όλα από παντού. Απευθείας υπολογισμός. Εδώ θέλω την προσοχή σας γιατί είναι κάτι καινούριο, και αφορά όχι μόνο τη χρήση της εντολής F0, αλλά και τα λεγόμενα χειριστήρια συνάρτησης. Δηλαδή, η F0 είναι μια εντολή που μας δίνει τη δυνατότητα να υπολογίσουμε τις τιμές για τις οποίες μηδενίζεται μια εξήσωση, όπως αυτή που είδαμε. Εάν, λοιπόν, έχω ορίσει εγώ τη συνάρτησή μου μέσα στο φάκελο myFunction, θυμάστε? Απλά όρισα τη function myFunction, όπου η ψ είναι x συν κόσυνος του x. Η χρήση της F0 θα γινόταν με αυτόν τον τρόπο, και τώρα πρέπει να εξηγήσω. Η χρήση του συμβόλου at, στην καθημερινή μας αποκαλούμενο παπάκι, σημαίνει ότι έχω ένα χειριστήριο συνάρτησης. Έχω ορίσει, δηλαδή, μια συνάρτηση, και το παπάκι δίνει στο MATLAB διευκρινήσε ότι πρόκειται για χειριστήριο συνάρτησης, άρα μπορώ να χειριστώ τη συνάρτηση απευθείας, online, σε εντολές όπως η F0. Και πρακτικά η σύνταξη της F0 είναι χειριστήριο συνάρτησης κόμμα διάστημα λύσεις. Να το χειριστήριο της συνάρτησής μας, δεν ονομάζεται συνάρτηση myFunction. Άρα παπάκι myFunction είναι το χειριστήριο της συνάρτησης. Ποιο είναι το διάστημα της λύσης, μειών 1-1. Τι απάντηση που θα πάρω? Η απάντηση που θα πάρω είναι η πραγματική τιμή που προσεγγίζει πάρα πολύ την λύση, η οποία υπολογίζεται με συγκεκριμένους τρόπους. Η F0 χρησιμοποιεί τη μέθοδο της δικοτόμησης, αλλά και άλλες μεθόδους αριθμητικής ανάλυσης για να υπολογίζει λύσεις. Έτσι λοιπόν ουσιαστικά χειριζόμαστε την F0. Με χειριστήρια συνάρτησης και διαστήματα λύσης. Και αυτό διότι μία συνάρτηση μπορεί να κλειθεί με συνοπτικό τρόπο με τη βοήθεια ενός χειριστήριου και το χειριστήριο κατασκευάζεται προσθέτοντας το σύμβολο at πριν από τη συνάρτηση. Και να δούμε κάποια παραδείγματα. Έστω ότι θέλω να έχω τη συνάρτηση αυτή που είχαμε δει, χ-3-2x4-sin5. Ορίζω μία μεταβλητή, την όνομα underscore handle, θα μπορούσε να είναι και οποιονδήποτε άλλο όνομα μεταβλητής εδώ, στην οποία αναθέτω με αυτό τον παράξενο τρόπο τη συνάρτηση. Τι σημαίνει αυτό? Λέω ότι αυτή η μεταβλητή είναι πλέον ένα χειριστήριο συνάρτησης. Οπότε λοιπόν, αν θέλω την τιμή της συνάρτησης για χ-91, τι θα γράψω? Όνομα handle του 91. Ξαφνικά γίνεται συνάρτηση η οποία παράγει απαντήσεις. Θα μου απαντήσεις. Είναι 753.000 κάτι η τιμή της συνάρτησης για χ-91. Η ρίζα της f του χ κοντά στο μηδέν είναι προφανώς η f0, το όνομα handle, κόμμα μηδέν. Μια άλλη χρήση της f0. Αντί του διαστήματος, στο δεύτερο μισό, μέσα στην παρένθεση ως όρισμα, μπορώ να την τροφοδοτήσω με μία τιμή στην γειτονιά της λύσης. Επαρκώς κοντά διαφορετικά δεν θα συγκλίνει ο τρόπος υποδογισμού. Και η απάντηση που θα πάρω είναι μίον 2,094,55,14,67, 54,517. Γιατί τόσα δεκαδικά ενώ συνήθως έχω λιγότερα, διότι ενδιάμεσα χρησιμοποίησα, χωρίς να σας το δείξω, την format long, μία συνάρτηση, μάλλον μία εντολή, η οποία λέει ουσιαστικά στο MATLAB, το να χρησιμοποιεί περισσότερα δεκαδικά στην απόδοση, στην απεικόνιση τιμών. Format long. Και αν θέλω να επιβεβαιώσω ότι όντως η λύση που μου βρήκε είναι ρίζα, δεν έχω την τιμή της αυτόματα στην ans. Η anser δεν εναμβάνει πάντοτε κάθε τιμή. Άρα η anser είναι η ρίζα. Βάω την τιμή της συνάρτησης στην anser. Και κοιτάξτε, είναι 1,56 επί 10 στη μίον 7. Άρα είναι 0,15 εκατομμυριοστά μακριά από το 0. Ε, επαρκώς κοντά για να θεωρηθεί η λύση. Άρα λοιπόν, για αυτό πιστεύω ότι πρέπει αυτά να τα ξαναδούμε. Λοιπόν, κάτι καινούριο εδώ, όσον αφορά τις συναρτήσεις. Έχουμε τα λεγόμενα χειριστήρια συνάρτησης. Τα χειριστήρια συνάρτησης είναι καινούριος, αν θέλετε, τύπος μεταβλητής. Διότι μπορείς να το αναθέτεις σε κάποια μεταβλητή. Και σου δίνουν τη δυνατότητα να χρησιμοποιείς και να καλέσεις μία συνάρτηση με συνοπτικό τρόπο με χρήση του χειριστήριου της. Έτσι λοιπόν, εδώ, όταν έχω μία αρχική συνάρτηση αυτής της μορφής, είναι μία απλή πολυονομική σχέση. Και θέλω να τη μεταφράσω, να τη μετατρέψω μάλλον σε χειριστήριο συνάρτησης. Αυτό που κάνω είναι ότι προσθέτω το παπάκι μπροστά, τη γράφω σε μορφή τέτοια, προσέξτε, παπάκι παρένθεση χ, γιατί, για να δηλώσω ποια είναι η τετμημένη, έτσι. Και αμέσως μετά, όλη η παράσταση χωρίς παρενθέσεις, ο προσεκτικός και με καλή ώρα συμπαρτήρητής, θα δει εδώ και την τελεία, διότι θα μπορούσα να τροφοδοτήσω την χ με διανύσματα θυμών, όχι μόνο με μονομένες θυμές. Γι' αυτό λοιπόν βάζω την τελεία για να του πω ότι ό,τι συμβεί, θα το κάνει στοιχείο προς στοιχείο. Και εδώ ισχύει, όπως είχαμε σχολιάσει στην πρώτη ώρα, είναι σωστό το αποτέλεσμα, θέλαμε να είμαστε απόλυτα σωστοί εδώ, θα έπρεπε να γράψουμε δύο τελεία χ. Α, το ξέχασα αυτό. Άρα λοιπόν, τότε θα έπρεπε να γράψω δύο επί χ τελεία στο τετράγωνο, διότι η πρώτη προτεραιότητα έχει ύψωση σε δύναμη, θα έκανε την ύψωση σε δύναμη και μετά θα πολλαπλασίαζε όλα τα στοιχεία με δύο. Οπότε λοιπόν, έχουμε το όνομα handle, πράγμα που σημαίνει ότι τώρα έχω ένα καινούριο τύπο μεταβλητής, τον τύπο τον βαφτίσαμε χειριστήριο συνάρτησης, και η διαφορά του είναι ότι μπορώ να χρησιμοποιήσω αυτή τη μεταβλητή, για να υπολογίζω, για παράδειγμα, τιμές της συνάρτησης για διάφορα χ, για χ-91, το όνομα handle του 91 λοιπόν θα μου δώσει απευθείας στη γραμμή εντολών το αποτέλεσμα, ενώ αν θέλω να υπολογίσω τη ρίζα θα χρησιμοποιήσω τη F0 και θα του πω F0 του παρένθεση παπάκι όνομα handle, όχι, F0 του όνομα handle είναι ήδη χειριστήριο. F0 του όνομα handle κόμμα, σε ποια γειτονιά θεωρώ ότι είναι η λύση, κοντά στο μηδέν. Και βέβαια για να δούμε τι βρήκε, εγώ του είπα ότι η λύση είναι κοντά στο μηδέν και τελικά βρήκε λύση στο μίον 2,09 στο μίον 2,1. Αυτή είναι η έννοια της γειτονιάς εδώ. Το επόμενο ερώτημα που θα μας απασχολήσει στο εργαστήριο είναι το εξής. Πώς όλα αυτά μπορώ να τα κάνω συναρτήσεις. Σύνηθες και σύνηθες και στην πρακτική την ηκαθημερινή μας, γι' αυτό και θα είναι και σύνηθες και στην τελική μας εξέταση. Πρέπει να πω ότι η τελική εξέταση του μαθήματος περιλαμβάνει συνήθως ένα πρόβλημα, το οποίο δίδεται σε κάποια μορφή ανάλογη με αυτή που συζητούμε εδώ και σας καλούμε να δημιουργήσετε τον αλγόριθμο και να ειλοποιήσετε τον αλγόριθμο αυτό με τη βοήθεια ενός προγράμματος. Συνήθως έχετε περίπου μία ώρα για να το κάνετε αυτό, δουλεύετε όπως στις ομάδες, είσαστε 10 εργαστήρια αλλά 10 γκρουπ των 20 ανθρώπων και στο τέλος παραδίδετε τον κώδικά σας και κρίνεστε επί αυτού. Είναι πάρα πολύ συνηθισμένο να σας ζητήσουμε συναρτήσεις εκεί. Δεν σας ζητούμε δηλαδή απλά ένα πρόγραμμα, σας ζητούμε συναρτήσεις. Πολλές φορές σας δίνουμε ένα πρόγραμμα και σας λέμε, γράψτε μια συναρτήση που να καλείται από το πρόγραμμα τάντες, σας δίνουμε το πρόγραμμα και να κάνει τη συγκεκριμένη αυτή δουλειά και έτσι πρέπει να την σχεδιάσετε και να την ειλοποιήσετε. Γι' αυτό το λόγο σας βάζουμε να εξετάζεστε με χρήση συναρτήσεων, γιατί η χρήση συναρτήσεων είναι ακρογωνιαίος λύθος στο να λύνει κανείς προβλήματα με τη βοήθεια υπολογιστών, όχι μόνο με τη βοήθεια MATLAB, σε κάθε γλώσσα, το αντίστοιχο σε FORTRAN είναι ας πούμε οι υπορρουτίνες και οι συναρτήσεις, τα ελεγόμενα υποπρογράμματα, έχουμε modules, στη C έχουμε αντίστοιχες καταστάσεις, έχουμε σε όλες τις γλώσσες αντίστοιχα υποπρογράμματα με αυτόνομο χαρακτήρα. Οπότε λοιπόν πλέον, εδώ και πολλά χρόνια, δεν υπάρχει η λογική του να χτίσουμε ένα ενιαίο μεγάλο πρόγραμμα που να τα κάνει όλα και να τα περιλαμβάνει όλα. Είναι τεράστιο λάθος. Αντιθέτως λέμε να σπάσουμε το ένα μεγάλο πρόγραμμα σε πολλά επιμέρους, ώστε να αναθέσουμε σε τμήματά του συγκεκριμένες εργασίες, ώστε αν κάτι αστοχίσει να αστοχίσει συγκεκριμένο τμήμα. Και σε πολύπλοκα πρόγραμματα όπως αυτό που, για παράδειγμα, γράφτηκε για να ελέγχει την προσελήνωση της πρώτης ελληνακάτου. Στήλαμε από εδώ μια συσκευή την εποχή που ο καλύτερος υπολογιστής που είχαμε είχε υπολογιστική ισχύ ίση με το ρολόι που φοράτε, καταμέγιστο. Δεν φοράτε αυτή την υπολογιστική ισχύ. Άρα λοιπόν εκείνη την εποχή στείλαμε ένα μηχάνημα που από εδώ είχε προγραμματιστεί έτσι ώστε να μπορεί να διαχειριστεί το σύνολο των παραμέτρων περιβάλλοντος σε ένα άγνωστο περιβάλλον. Δεν ξέραμε τι θα αντιμετωπίσουμε. Άρα ένα μηχανολογικό πρόβλημα ή ευρύτερα ένα πρόβλημα μηχανικού παράμετρη του οποίου μας ήταν άγνωστοι έπρεπε να επιλυθεί και λύθηκε με συγκεκριμένο τρόπο. Το πώς θα το λύσουμε λοιπόν θα το δούμε στο εργαστήριο αλλά αυτό που θα κάνουμε εδώ πώς θα λύσουμε το συγκεκριμένο δηλαδή να διαμορφώσουμε προσέξτε την συναρτηση, την μέθοδο της διχοτόμησης σε συναρτηση ώστε τι θέλουμε εμείς. Έρχεται ένας φίλος μας και μας λέει ρε εσύ στη σχολή μας μας έδωσαν ένα πρόβλημα που καταλήγει σε μια μυστήρια εξίσωση και δεν μπορώ να τη λύσω με τίποτα. Και εσείς να πείτε μισό το έχω. Βγάζετε το προγραμματάκι σας που λέτε ποια είναι η συναρτησία σου αυτή. Τη βάζετε σε αυτό το my function έτσι. Έχετε τη μέθοδο της διχοτόμησης έτοιμη διαφορετική από ότι τη συναρτησία σας τα βάζετε μαζί σε ένα προγραμματάκι και μέσα σε 5 λεπτά έχετε λύσει το πρόβλημα της φίλου φίλης. Με αυτόν τον τρόπο δουλεύουμε και στην πράξη. Το πώς είπαμε θα το κάνουμε θα το δούμε στο εργαστήριο. Από εκεί και πέρα να δούμε κάτι άλλο το οποίο είναι ακόμη πιο συνηθισμένο τώρα προς το τέλος. Αριθμητική ολοκλήρωση. Είναι πολλά τα ολοκληρώματα που δεν μπορούμε να υπολογίσουμε με αναλυτικό τρόπο και αναφέρομαι σε ορισμένου ολοκληρώματα είτε μιας μεταβλητής είτε πολλών μεταβλητών. Και ουσιαστικά τώρα στο δεύτερο εξάρμηνο εσείς είστε σε συναρτήσεις πολλών μεταβλητών. Τι είναι η ολοκλήρωση απλά πράγματα. Στις συναρτήσεις μιας μεταβλητής η ολοκλήρωση μπορεί να ιδοθεί ως ο υπολογισμός μιας επιφάνειας κάτω από μια καμπύλη. Γνωστό έτσι. Τι μπορώ να κάνω εδώ στον υπολογισμό ορισμένων ολοκληρωμάτων από κάτω όριο ολοκλήρωσης μέχρι άνω όριο ολοκλήρωσης. Όταν έχω καμπύλες οι οποίες με οδηγούν στο ότι δεν μπορεί να ολοκληρωθεί εδώ μπορεί. Θα μου πείτε που το ξέρεις. Έτσι όπως την βλέπω έχει δύο καμπυλότητες άρα είναι μια συναρτήσει. Αν ήταν μόνο μια καμπυλότητα θα μπορούσα να το προσωμιώσω αυτό με πολιώνυμο δεύτερου βαθμού. Έχει δύο καμπυλότητες άρα θέλω τρεις βαθμούς τουλάχιστον. Πολιωνύμου θα τα μάθετε αυτά. Μπορώ να κάνω το εξής. Πάλι με την ίδια λογική να πω γιατί να μην χωρίσω το εμβαδό σε στοιχειώδη εμβαδά. Το κάθε στοιχειώδες εμβαδό να το υπολογίσω σαν τραπέζιο. Και ποιος είναι ο τρόπος να υπολογίσω το εμβαδό. Είναι συνολικά ένα τραπέζιο. Είδες το συνολικό εμβαδό. Ενδέφερο πλευρές επί ύψος. Να οι πλευρές και το ύψος. Άρα λοιπόν σε κάθε στοιχειώδες τραπέζιο να υπολογίσω το εμβαδό και να τα αυξήσω. Θα τα αφήσω αυτά τα εμβαδά. Πόσες φορές πρέπει να επιμερήσω αυτή τη μεγάλη επιφάνεια σε μικρά. Τόσες ώστε η ακρίβεια να είναι επαρκής. Εδώ ας πούμε βλέπετε ένα παράδειγμα από α έως β και πώς μπορώ να υπολογίσω τα ύψη και τα υπόλοιπα στοιχεία. Αναλυτικά δεν θα το δούμε. Ήθελα όμως να έχετε μια εικόνα γιατί τελικά καταλήγουμε σε τέτοιου είδους σχέσεις. Καταλήγουμε δηλαδή και γι' αυτό θέλω να είσαστε υπεράνο, εννοείται, της έκπληξης που δημιουργεί η εμφάνιση μπροστά μας μιας τέτοιας σχέσης. Την βλέπουμε και λέμε τι είναι αυτό. Η απάντηση είναι πάρα πολύ απλή. Είναι αυτό που λέει. Είναι ένα άθροισμα για 1-1-1-1 κάποιων συγκεκριμένων όρων που προφανώς μας χρειάζονται. Όταν έχω να θρήσω αυτά τα εμβαδά στοιχειοδόν τραπεζίων. Άρα λοιπόν το μεγάλο ολοκλήρωμα μπορώ να το σπάσω σε επιμέρους μικρά ολοκληρώματα, μικρά εμβαδά. Να τα υπολογίσω όλα αυτά, να τα θρήσω και να έχω ένα συνολικό ολοκλήρωμα. Και έτσι για παράδειγμα μπορώ να υπολογίσω τι. Κοιτάξτε αυτό θα μπορούσε να είναι η απόκριση του αμορτισέρσας σε ένα ανώμαλο δρόμο. Αυτή λοιπόν είναι μια διαδρομή. Ας πούμε ότι είναι η διαδρομή της ανάρτησής σας, σωστά. Ποιο είναι το φυσικό μέγεθος που μας δίνει το πολλοπλασιασμός δύναμη επιμετατόπιση? Έργο. Άρα αν είχατε την δυνατότητα να υπολογίσετε όλο αυτό το εμβαδό, δεν θα ξέρατε το έργο, την ενέργεια που δαπανήθηκε. Δεν είναι ένα κρίσιμο μέγεθος όταν στείνεις ένα όχημα. Λοιπόν, χωρίς αυτό τι κάνεις? Πώς θα το υπολογίσεις, έχετε αναλυτικές και έχουμε αναλυτικές σχέσεις για τέτοιου είδους υπολογισμούς? Προφανώς και όχι. Για τέτοιου είδους λόγους θέλουμε αριθμητικές μεθόδους. Εάν εκτυπώναμε τον κώδικα του προγράμματος που ήταν υπεύθυνος για τη ρύθμιση της προσελήνωσης της σελεινακά του, αυτό έκαναν, θα είχαμε αυτό το σύνολο σελίδων. Η κυρία που το έκανε ήταν αυτή εδώ, η Μάργαρετ Χάμιλτον. Πανμέγιστη, όχι απλά, προγραμματίστρια, μηχανικός λογισμικού. Σύμφωνα με κάποιους είναι αυτή που δημιούργησε την περιοχή του software engineering. Και μάλιστα χάρη στον εξαιρετικό σχεδιασμό του κώδικά της, απαιτεύχθη μία καταστροφή κατά τη διάρκεια της προσελήνωσης. Διότι όταν πήγε η Άκατος να προσελεινωθεί, ξαφνικά λόγω του ότι υπήρχαν κάποια ραντάρ και αισθητήρια που διάβαζαν στοιχεία από το περιβάλλον για να βοηθήσουν το σκάφος να πάρει αποφάσεις για το πού και πώς θα προσελεινωθεί, η ροή πληροφοριών που εισέρχονταν στον κώδικα ήταν μεγαλύτερη, πολύ μεγαλύτερη από αυτή που είχε προβλεφθεί και έτσι ο υπολογιστής δεν είχε τη δυνατότητα να λειτουργήσει, έφτασε στα όρια του και δεν μπορούσε να λειτουργήσει και να πάρει βασικές αποφάσεις. Όμως χάρη στο σχεδιασμό της κυρίας αυτής, μπορούσε να συνεχίσει παρακάτω και να προσελεινώσει και να πατήσουμε τη σελήνη. Άρα λοιπόν, τι είδαμε σήμερα. Πρώτον, ξεκινώντας εδώ μέσα θα βρείτε χιλιάδες λογικούς ελέγχους, χιλιάδες λογικούς ελέγχους. Θα βρείτε χιλιάδες περιπτώσεις εφαρμογών τελεστών σχεσιακού και λογικού ελέγχου. Θα βρούμε δομές επανάληψης και ελέγχου, θα βρούμε αριθμητικούς υπολογισμούς όπως τους είδαμε και επίσης θα βρούμε πολλές μικρές εφαρμογές ακριβώς διότι σπάμε ένα μεγάλο πρόβλημα σε μικρότερα προβλήματα.