Επιστηµονικός Υπολογισµός Ι εύτερη εργαστηριακή άσκηση Ηµεροµηνία επιστροφής : Τετάρτη 29/12/2010 26 Νοεµβρίου 2010 Με fl (x) συµβολίζεται (όπως και στις σηµειώσεις του µαθήµατος) η αναπαράσταση σε αριθµητική κινητής υποδιαστολής (α.κ.υ.) του πραγµατικού αριθµού x. Στο δεύτερο ερώτηµα µε,, και συµβολιζονται αντίστοιχα οι υλοποιήσεις σε κάποιο σύστηµα α.κ.υ. της πρόσθεσης, του πολλαπλασιασµού, και της ύψωσης σε δύναµη αντίστοιχα. Η συµπεριφορά σε λειτουργικό επίπεδο της υλοποίησης κάθε πράξης καθορίζεται από την εκφώηνση κάθε ϕορά. Ειδικά για τον διµελή τελεστή ϑεωρούµε οτι το δεύτερο όρισµά του, έστω k, είναι πάντα ακέραιο. Αυτό συνεπάγεται οτι δεν υπάρχει σφάλµα αναπαράστασης για το k και η Ϲητούµενη δύναµη υπολογίζεται πάντα µε ακρίβεια (υποθέτουµε οτι δεν τίθεται ϑέµα υπερχείλισης για το k). Μοναδική εξαίρεση αποτελεί η ειδική τιµή 1 2, η οποία σηµατοδοτεί ουσιαστικά τον υπολογισµό της τετραγωνικής ϱίζας ενός πραγµατικού αριθµού. Ακόµα και για αυτή την τιµή όµως στα περισσότερα συστήµατα ϑεωρείται οτι ο τελεστής λειτουργεί µε συνεπή τρόπο, δηλαδή όντως υπολογίζει την τετραγωνική ϱίζα του πρώτου ορίσµατός του αντί κάποιας άλλης δύναµης. Οπου αναφέρεται σε αυτή την άσκηση η ευστάθεια, εννοείται πάντα η προς τα εµπρός ευστάθεια. Με ɛ συµβολίζεται πάντα το έψιλον της µηχανής. 1 Αριθµητική κινητής υποδιαστολής (10 µονάδες) ώστε σύντοµες απαντήσεις στα ακόλουθα ερωτήµατα : Εστω υπολογιστικό σύστηµα T στο οποίο υλοποιείται το πρότυπο IEEE 754. Για το T µπορεί να υποτεθεί οτι η παράσταση x 1 2 υπολογίζει όντως το x 1 2 ; Με άλλα λόγια, µπορεί να υποτεθεί οτι ο ϑα ερµηνεύσει σωστά την αναπαράσταση του 1 2 και ϑα υπολογίσει το x 1 2 αντί κάποιας άλλης δύναµης του x; Σύµφωνα µε το πρότυπο IEEE 754 πόσο είναι το σφάλµα των εσωτερικών αναπαραστάσεων fl (0) και fl (1); Τι συνέπεια έχει αυτό για τους υπολογισµούς ; 1
Σύµφωνα µε το πρότυπο IEEE 754, αν προστεθεί το ɛ στην µονάδα οιός αριθµός ϑα προκύψει ; Μπορεί να αναπαρασταθεί σε απλή και διπλή ακρί- ϐεια ; Εστω ο ϐρόχος x = 0; while x <= realmax fprintf(1, "x = %g\t 1/x = %g\n", x, 1/x); x = x + 1; end Είναι εγγυηµένο οτι ϑα τερµατιστεί ο ανωτέρω ϐρόχος while; Αν ναι, γιατί ; Αν όχι, τι ϑα πρέπει να γίνει ; Με realmax συµβολίζεται ο µέγιστος πραγ- µατικός αριθµός ο οποίος µπορεί να αναπαρασταθεί από το matlab. Μην εκτελέσετε τον κώδικα καθώς 1) το ερώτηµα είναι ϑεωρητικό και 2) ο χρόνος εκτέλεσης ενδέχεται να είναι τεράστιος. (Υπόδειξη : ο µετρητής x είναι πραγµατική µεταβλητή). Ποιός είναι ο δείκτης κατάστασης σε σχέση µε τις 1 και 2 για το 2 2 µητρείο ( ) 1 ɛ A = ɛ 1 Τι συµπεραίνετε ; Υπό ποιές συνθήκες το διώνυµο (1 + z) n προσεγγίζεται από τον γραµµικό όρο 1+nz; Είναι ο εν λόγω όρος η πρώτης τάξης προσέγγιση του διωνύµου ; Αν όχι, τότε ποιός είναι ; Ποιά είναι η προσέγγιση δεύτερης τάξης του διωνύµου ; (Οι προσεγγίσεις της πρώτης και δεύτερης τάξης νοούνται ως προς την σειρά MacLaurin). Εστω οτι ˆx είναι η εσωτερική αναπαράσταση του πραγµατικού αριθµού x (όχι απαραίτητα στο πρότυπο IEEE 754). Εστω ακόµα οτι y = e x και ŷ = eˆx. Να εκφράσετε το σχετικό σφάλµα του y µόνο ως προς το x και το σχετικό σφάλµα του x. Να υπολογίσετε τον δείκτη κατάστασης για την f (x) = 1 x και να εξετάσετε για ποιές τιµές του x ο υπολογισµός της f είναι ευαίσθητος σε αριθµητικά σφάλµατα. Πράξτε το ίδιο για την g (x) = ln x. Πράξτε το ίδιο για την h (x) = x. 2 Ευστάθεια και πολυώνυµα (10 µονάδες) Εστω ένα πολυώνυµο p n (x) ϐαθµού n σε δυναµοµορφή p n (x) = n β k x k k=0 2
Το σύστηµα στο οποίο αναπαρίσταται το p n (x) ακολουθεί το πρότυπο IEEE 754, δηλαδή ισχύει το υπολογιστικό µοντέλο fl (β k ) = β k (1 + θ k ), θ k u x 1 x 2 = (x 1 + x 2 ) (1 + η), η u x 1 x 2 = x 1 x 2 (1 + η), η u (u είναι η µονάδα στρογγύλευσης της µηχανής). Είναι ο υπολογισµός της τιµής του p n σε ένα δεδοµένο σηµείο x 0 ευσταθής ; (10 µονάδες) Το πολυώνυµο p n (x) του προηγούµενου ερωτήµατος αναπαρίσταται σε ένα δεύτερο σύστηµα όπου το υπολογιστικό µοντέλο είναι το ακόλουθο : fl (β k ) = β k (1 + θ k ), θ k u x 1 x 2 = x 1 (1 + ξ) + x 2 (1 + η), ξ, η u x 1 x 2 = x 1 x 2 (1 + η), η u (u είναι η µονάδα στρογγύλευσης της νέας µηχανής). Είναι ο υπολογισµός της τιµής του p n σε ένα δεδοµένο σηµείο x 0 ευσταθής ; 3 Ιδιοτιµές µητρείων Το matlab διαθέτει µια συλλογή µητρείων τα οποία χαρακτηρίζονται από ειδικές ιδιότητες. Η εν λόγω συλλογή είναι προσβάσιµη µέσω της συνάρτησης >> gallery Οπως ϑα διαπιστώσετε και από το σχετικό αρχείο ϐοήθειας, οι υποστηριζόµενοι τύποι µητρείων ανέρχονται περίπου στους τριάντα. Στην παρούσα άσκηση ϑα ασχοληθούµε µε ορισµένους από τους πλέον αντιπροσωπευτικούς όσον αφορά την αριθµητική συµπεριφορά. (15 µονάδες) Για το µητρείο το οποίο παράγεται µε την εντολή >> S = gallery( smoke, 256) υπολογείστε τις ιδιοτιµές του µε την συνάρτηση >> eig Αυτό ϑα είναι το ϕάσµα σ. Χρησιµοποιείστε την συνάρτηση >> spy για να παράγετε οπτικά την δοµή του smoke και συµπεριλάβετέ την στην αναφορά σας. Τι παρατηρείτε σχετικά µε την δοµή του ; 3
Χρησιµοποιείστε την συνάρτηση >> randn ώστε να παράγετε τα τυχαία µητρεία διαταραχής E 0 του οποίου τα στοιχεία έχουν µηδενική µέση τιµή και διασπορά ίση µε 4ɛ 2 όπου µε ɛ συµβολίζεται το έπσιλον της µηχανής. E 1 του οποίου τα στοιχεία έχουν µηδενική µέση τιµή και διασπορά ίση µε 10 10. Το ɛ ϑα το πάρετε έτοιµο από την συνάρτηση >> eps Προσθέστε το E 0 στο αρχικό µητρείο και υπολογίστε το ϕάσµα σ 0 του διατα- ϱαγµένου µητρείου. Υστερα προσθέστε το E 1 στο αρχικό µητρείο και υπολογίστε το ϕάσµα σ 1 του νέου διαταραγµένου µητρείου. Σχεδιάστε τα σ, σ 0, και σ 1 σε κοινό γράφηµα και αναφέρατε τι παρατηρείτε. Πού το αποδίδετε αυτό ; Επειδή ϑα συναντήσετε και µιγαικές ιδιοτιµές, για την απεικόνιση του ϕάσµατος ϑα χρησιµοποιήσετε την εντολή >> scatter για να παράγετε το επιθυµητό γράφηµα σε κατανοητή µορφή και για να µπορέστε να ερµηνεύσετε το αποτέλεσµα της διαταραχής. Υπολογείστε τον δείκτη κατάστασης του αρχικού µητρείου και των δύο διατα- ϱαγµένων µητρείων µε τις εντολές >> rcond >> cond και συµπεριλάβετέ τους στην αναφορά σας. Τι παρατηρείτε ; Προσέξτε οτι οι δύο συναρτήσεις δεν παράγουν το ίδιο αποτέλεσµα. Ποιά λειτουργία επιτελεί κάθε εντολή ; (15 µονάδες) Για το µητρείο το οποίο παράγεται από την εντολή >> G = gallery( grcar, 256, 5) υπολογείστε τις ιδιοτιµές του. Με την συνάρτηση >> randperm δηµιουργείστε µία τυχαία µεταθέση των γραµµών και των στηλών του µητρείου grcar και υπολογείστε τις ιδιοτιµές του νέου µητρείου. Τι παρατηρείτε ; Σχεδιάστε σε κοινό γράφηµα το ϕάσµα των δύο µητρείων. (15 µονάδες) ηµιουργείστε το µητρείο >> F = gallery( frank, 256, 1) και εκτελέστε την ίδια διαδικασία µε το µητρείο smoke. Τι παρατηρείτε ; 4
(15 µονάδες) ηµιουργείτε το µητρείο >> W = gallery( triw, 256, 1, 4) και εκτελέστε την ίδια διαδικασία µε το µητρείο grcar. Τι παρατηρείτε ; 4 Συµπιεσµένα µητρεία Προσφάτως, κυρίως λόγω των εφαρµογών την (αριθµητικής) γραµµικής άλγε- ϐρας στην ανάκτηση πληροφορίας στον παγκόσµιο ιστό, υπάρχει έντονο ερευνητικό ενδιαφέρον για τα αραιά µητρεία. Σε αυτή την άσκηση καλείστε να υλοποιήσετε µια µεθόδο αναπαράστασης και χειρισµού συµπιεσµένων µητρείων. Ο απλούστερος τρόπος συνίσταται στην χρήση τριών διανυσµάτων r, c, και v, όλα µήκους m, όπου µε m συµβολίζεται το πλήθος των µη µηδενικών στοιείων του µητρείου. Για το k µη µηδενικό στοιχείο a i,j ενός αραιού µητρείου A αποθηκεύονται : Στο στοιχείο r[k] η γραµµή i του a i,j. Στο στοιχείο c[k] η στήλη j του a i,j. Στο στοιχείο v[k] η τιµή του a i,j. (10 µονάδες) Υλοποιείστε συνάρτηση µε όνοµα sci_spgn.m στο matlab η οποία ϑα δέχεται ως ορίσµατα τις διαστάσεις του αραιού µητρείου και το πλήθος των µη µηδενικών του στοιχείων. Οι τιµές τους ϑα είναι τυχαίες και ϑα τοποθετούνται στο µητρείο σε τυχαίες ϑέσεις. Εν συνεχεία υλοποιείστε συνάρτηση µε όνοµα sci_sp3v.m στο matlab η οποία ϑα δέχεται ως όρισµα ένα αραιό µητρείο A (το οποίο έχετε δηµιουργήσει εσείς) και η οποία ϑα επιστρέφει ως έξοδο τα τρία διανύσµατα τα οποία αναπαριστούν το A. Πόση συµπίεση επιτυγχάνεται ϑεωρητικά µε αυτή την µέθοδο ; Ως µέτρο συµπίεσης ϑεωρείστε τον λόγο του πλήθους των στοιχείων του αρχικού µητρείου προς το πλήθος των στοιχείων τα οποία απαιτούνται στην συµπιεσµένη µορφή. Θεωρείστε οτι όλοι οι αριθµοί αποθηκεύονται στην ίδια µορφή, δηλαδή δεν γίνεται διάκριση του αποθηκευτικοό χώρου µεταξύ των ακεραίων και των πραγµατικών αριθµών και ϑα µετρήσετε µόνο το πλήθος των στοιχείων. ηµιουργείστε δέκα δοκιµαστικά µητρεία A 1 εως και A 10 µεγέθους 1024 1024 µε την sci_spgn.m, εφαρµόστε σε αυτά την sci_sp3v.m και υπολογείστε τον µέσο λόγο συµπίεσης. Τι παρατηρείτε ; Συµφωνούν οι µετρήσεις σας µε την ϑεωρητική πρόβλεψη ; (10 µονάδες) Υλοποιείστε στο matlab τις συναρτήσεις sci_spma.m και sci_spmm.m οι οποίες υλοποιούν πρόσθεση και πολλαπλασιασµό δύο συµπιεσµένων µητρείων. Ως ορίσµατα ϑα δέχονται µόνο τις διαστάσεις των αρχικών µητρείων και τα διανύσµατα τα οποία αντιστοιχούν σε κάθε µητρείο. Εκτελέστε πέντε προσθέσεις και πέντε πολλαπλασιασµούς χρησιµοποιώντας τα µητρεία που δηµιουργήσατε. 5
Α Οδηγίες Οπως και στην προηγούµενη άσκηση, το άριστα είναι οι 100 µονάδες αλλά δια- ϑέσιµες είναι οι 110 µονάδες. εν υπάρχει αρνητική ϐαθµολογία και προτρέπεστε να ασχοληθείτε µε όλα τα ερωτήµατα. Η χρήση του octave επιτρέπεται. Σηµειώστε το στην αναφορά σας αν το χρησι- µοποιήσατε. ώστε προσοχή όµως στην διεπαφή του µε την χρήστη καθώς ακόµα δεν είναι ιδιαίτερα εξελιγµένη. Ο κώδικας του octave είναι σε πολύ µεγάλο ϐαθµό συµβατός µε εκείνον του matlab αλλά όχι απόλυτα, οπότε προσέξτε πάρα πολύ αν χρησιµοποιείτε και τα δύο περιβάλλοντα (λ.χ. σε διαφορετικά συστήµατα). Στην εκφώνηση, όπου αναφέρεται το matlab εννοείται και το octave. Προσοχή : Το octave δεν διαθέτει την συνάρτηση gallery. Για τον λόγο αυτό στην ιστοσελίδα τυ εργαστηρίου του µαθήµατος αναρτήθηκαν τέσσερα.mat αρχεία τα οποία περιέχουν τα τέσσερα µητρεία του δεύτερου ερωτήµατος. Για να χρησιµοποιήσετε τα δεδοµένα τα οποία περιέχονται στα εν λόγω αρχεία ϑα χρησι- µοποιήσετε την εντολή >> load είτε στο σχετικό αρχείο ϐοήθειας πως λειτουργεί η ανωτέρω εντολή. Τα δύο πρώτα ερωτήµατα είναι ϑεωρητικά και ισχύει ό,τι έχει αναφερθεί για το πρώτο ερώτηµα της πρώτης άσκησης. εν λύνονται στο matlab ή στο octave αλλά µε εξισώσεις και κατά συνέπεια δεν αποτελούν λύση κώδικας ή εντολές στο matlab. Τυχαίους αριθµούς ϑα παράγετε µε την συνάρτηση >> randi(i_max,m,n) ή µε την συνάρτηση >> rand(m,n) εκτός αν προσδιορίζεται ϱητά κάποια άλλη συνάρτηση. Στις παλαιότερες εκδόσεις του matlab υποστηρίζεται µόνον η δεύτερη ενώ στις νεότερες και η πρώτη. Το i_max ϑέστε το κατά σύµβαση ίσο µε 200. Στην αναφορά σας να συµπεριλάβετε το όνοµά σας και τον αριθµό µητρώου σας. Στην αναφορά σας τα τεχνικά χαρακτηριστικά του συστήµατός σας ϑα ϐρίσκονται είτε στην αρχή της αναφοράς σας είτε στο τέλος σε µορφή παραρτήµατος. Η αναγραφή τους εντούτοις είναι προαιρετική. Οι εικόνες µε τις γραφικές παραστάσεις ϑα είναι τµήµα της αναφοράς και όχι ξεχωριστά αρεία. Για τον τρόπο δηµιουργίας τους ισχύουν οι οδηγίες της πρώτης άσκησης. 6
Ο πηγαίος κώδικας (.m αρχεία) ϑα είναι σε ξεχωριστά αρχεία. Προαιρετικά µπορεί να ϐρίσκεται στο τέλος της αναφοράς υπό µορφή παραρτήµατος. Η άσκηση παραδίδεται µόνο ηλεκτρονικά µέχρι την προκαθορισµένη ηµεροµηνία στην ηλεκτρονική διεύθυνση sci@ceid.upatras.gr µόνο (και όχι στις ηλεκτρονικές διευθύνσεις των διδασκόντων). Το ϑέµα του e-mail σας ϑα είναι sci_2010_hw02_xxxx όπου µε xxxx συµβολίζεται ο αριθµός µητρώου σας. Η αναφορά σας µαζί µε τον πηγαίο κώδικα ϑα ϐρίσκονται σε ένα συµπιεσµένο αρχείο µε όνοµα sci_2010_hw02_xxxx.rar ή sci_2010_hw02_xxxx.zip Η τελική µορφή του αρχείου σας ϑα είναι µόνον.rar ή.zip. Λόγω του µεγάλου όγκου εισερχόµενων δεδοµένων, η αναφορά παραλαβής ενδέχεται να καθυστερήσει αρκετά. Σε κάθε περίπτωση, αν η εργασία σας ϐρίσκεται στα εξερχόµενά σας, τότε σίγουρα έχει αποσταλεί (και σίγουρα έχει ληφθεί). Οι ασκήσεις αποτέλλονται από τον προσωπικό σας λογαριασµό του τµήµατος. Ανεξάρτητα από το πρόγραµµα δηµιουργίας της αναφοράς σας, αυτή ϑα πρέπει να είναι σε µορφή.pdf. Τόσο το open office όσο και το microsoft office (από την έκδοση 2007 κι έπειτα) υποστηρίζουν αυτή την δυνατότητα. Επίσης όσοι τυχόν γράφουν σε TEX ή LaTEX δεν ϑα πρέπει να έχουν καµµία δυσκολία στο ϑέµα αυτό. Για οποιαδήποτε συνάρτηση του matlab οι εντολές >> help function >> doc function παρέχουν άµεσες εξηγήσεις για τον τρόπο λειτουργίας της. Στην περίπτωση που περισσότερες από µια µορφές µιας συνάρτησης είναι διαθέσιµες, χρησιµοποιήστε την απλούστερη η οποία ταιριάζει στο πρόγραµµά σας. 7