ΑΡΙΘΜΗΤΙΚΕΣ ΜΕΘΟΔΟΙ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΘΗΜΑ 1 ο 1
Εισαγωγή Έντυπα εγχειρίδια ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, ΑΚΡΙΒΗΣ Γ.Δ., ΔΟΥΓΑΛΗΣ Β.Α. Αριθμητική ανάλυση με εφαρμογές σε matlab & mathematica, Παπαγεωργίου Γεώργιος Σ.,Τσίτουρας Χαράλαμπος Γ. Ηλεκτρονικά εγχειρίδια www.teiser.gr/icd/staff/dvarsam/nummeth/nummeth_main. htm Διαφάνειες Συμπληρωματικά φυλλάδια E-book 2
Εισαγωγή Αριθμητική Ανάλυση Μετατροπή μαθηματικών προβλημάτων σε ισοδύναμα προβλήματα που επιλύονται αριθμητικά με την βοήθεια υπολογιστή Προβλήματα Επίλυσημηγραμμικώνεξισώσεων Προσέγγιση συναρτήσεων Παραγώγιση Ολοκλήρωση Επίλυση διαφορικών εξισώσεων Βελτιστοποίηση συναρτήσεων 3
Εισαγωγή Αριθμητική Ανάλυση (Εφαρμοσμένα μαθηματικά) Εφαρμογή σε Επιστήμη των Η/Υ Υπολογιστική Νοημοσύνη Επιχειρησιακή Έρευνα Κρυπτογραφία Εξόρυξη Δεδομένων Στατιστική κ.α. 4
Εισαγωγή Αριθμητική Ανάλυση Δημιουργία κατάλληλης μεθόδου (Αλγόριθμος) Υλοποίηση της μεθόδου σε υπολογιστή Μια μέθοδος είναι κατάλληλη όταν προσεγγίζει «αρκετά καλά» το αποτέλεσμα με το μικρότερο υπολογιστικό κόστος, αλλά και την μικρότερη δέσμευση μνήμης. 5
Εισαγωγή Αριθμητικά συστήματα Αριθμητική κινητής υποδιαστολής Σφάλματα Κατάσταση προβλημάτων Θεωρία διαφορών 6
Αριθμητικά Συστήματα Κάθε αριθμός μπορεί να παρασταθεί ως εξής n a b a b... a b a b... με n ab i 0 ai in b i n1 0 1 n1 0 1 a i είναι τα ψηφία του αριθμού και b είναι η βάση του. 7
Αριθμητικά Συστήματα Το ακέραιο μέρος του αριθμού είναι n n1 0 a b a b... a b n 0 ab i in i n1 0 Το κλασματικό μέρος του αριθμού είναι 1 a b... 1 ab i i1 i 8
Αριθμητικά Συστήματα Η αριθμητική παράσταση του αριθμού είναι a a a. a n n1 0 1 b το σύμβολο. είναι η υποδιαστολή του αριθμού που διαχωρίζει το ακέραιο με το κλασματικό μέρος ενός αριθμού Ανάλογα με την τιμή του b, δηλαδή, της βάσης ονομάζουμε και το αριθμητικό σύστημα. Πχ. b=2, Δυαδικό αριθμητικό σύστημα b=10, Δεκαδικό αριθμητικό σύστημα 9
Αριθμητικά Συστήματα Ένας αριθμός έχει πεπερασμένη παράσταση όταν για k a 0, i k, k1, k2, i n Σημαντικά ψηφία ενός αριθμού ονομάζονται όλα τα ψηφία του αριθμού εκτός των μηδενικών ψηφίων που βρίσκονται στην αρχή του αριθμού. 10
Αριθμητικά Συστήματα Παραδείγματα (σημαντικά ψηφία) 1 2 3 4 5 0.0997 0.099700 410.7 5.70 0.0079 11
Αριθμητικά Συστήματα Μετατροπές αριθμών από ένα αριθμητικό σύστημα σε άλλο Μετατροπή ακεραίου από βάση b σε δεκαδικό σύστημα Μετατροπή κλασματικού από βάση b σε δεκαδικό σύστημα Μετατροπή ακεραίου από δεκαδικό σύστημα σε βάση b Μετατροπή κλασματικού από δεκαδικό σύστημα σε βάση b 12
Αριθμητικά Συστήματα Μετατροπή ακεραίου από βάση b σε δεκαδικό σύστημα 53473 58 38 48 78 38 8 4 3 2 1 0 38 78 48 385 22331 10 13
Αριθμητικά Συστήματα Μετατροπή ακεραίου από βάση b σε δεκαδικό σύστημα y a0 y an p 1 for i n 1,...,0 for i 1,..., n yai b* y p p* b end y ya * p end i 14
Υλοποίηση σε MATLAB function y=b2dec(,b) c=num2str(); n=length(c); for i=1:n a(i)=str2num(c(n-i+1)); end y=a(n); for i=n-1:-1:1 y=a(i)+b*y; end function y=b2dec(,b) c=num2str(); n=length(c); for i=1:n a(i)=str2num(c(n-i+1)); end y=a(1); p=1; for i=2:1:n p=p*b; y=y+a(i)*p; end 15
Αριθμητικά Συστήματα Μετατροπή κλασματικού από βάση b σε δεκαδικό σύστημα y 0 for i end k,..., 1 y a y *1/ b i Παράδειγμα.53.671875 8 10 16
Αριθμητικά Συστήματα Μετατροπή ακεραίου από δεκαδικό σύστημα σε βάση b(αλγόριθμος της Διαίρεσης) i 0 while 0 a mod b / b ii1 end i Παράδειγμα 369 561 10 8 17
Αριθμητικά Συστήματα Μετατροπή κλασματικού από δεκαδικό σύστημα σε βάση b y b* i 1 while y end a i i 0 y i1 y y y * b Παράδειγμα.875.111 10 2 18
Αριθμητικά Συστήματα Στην μετατροπή πεπερασμένου κλασματικού δεκαδικού σε βάση b ένας αριθμός μπορεί να μετατραπεί σε αριθμό με άπειρα ψηφία και το αντίστροφο. Στην μετατροπή μη πεπερασμένου κλασματικού δεκαδικού σε βάση b ένας αριθμός μπορεί να μετατραπεί σε αριθμό με άπειρα ψηφία. 19
Παραδείγματα Να μετατραπεί ο παρακάτω αριθμός σε δεκαδική βάση 1101 13 2 10 Να μετατραπεί ο παρακάτω αριθμός σε δεκαδική βάση.11.75 2 10 20
Παραδείγματα Να μετατραπεί ο παρακάτω αριθμός σε δυαδική βάση 11 1011 10 2 Να μετατραπεί ο παρακάτω αριθμός σε δυαδική βάση.372.01011... 10 2 21
Αριθμητική Κινητής Υποδιαστολής Κάθε μη μηδενικός πραγματικός αριθμός σε αριθμητικό σύστημα με βάση b μπορεί να γραφεί στην κανονική μορφή κινητής υποδιαστολής. d d... b d 0 Παράδειγμα.00598.59810 e 1 2 1 2 10 3 111.001.111001 2 2 22
Αριθμητική Κινητής Υποδιαστολής Οι αριθμοί που αποθηκεύονται στην μνήμη του Η/Υ πρέπει να είναι πεπερασμένοι Αριθμοί Μηχανής Τη βάση του συστήματος b Την ακρίβεια t, δηλαδή το πλήθος των δεκαδικών ψηφίων του κλάσματος των αριθμών. Το κάτω φράγμα L και το άνω φράγμα U του εκθέτη e του b(l,u ακέραιοι με ). d d... d b d 0 e 1 2 t 1 L U 23
Αριθμητική Κινητής Υποδιαστολής b t L U b 1t IEEE simple IEEE double IEEE etended 2 24 125 128 1.210 2 53 1021 1024 2.210 2 64 16381 16384 1.110 7 16 19 24
Αριθμητική Κινητής Υποδιαστολής Αριθμοί μηχανής με (b, t, L, U) Μέγιστο θετικό στοιχείο d b1, 1 it, eu i δηλαδή, σε σύστημα με (10, 3, -5, 5) Ελάχιστο θετικό στοιχείο L.100...0b min.100 10 δηλαδή, 5 ma.999 10 5 Mantissa ήσημαντικάψηφία 25
Αριθμητική Κινητής Υποδιαστολής Αριθμοί μηχανής με (b, t, L, U) Υπερχείλιση (overflow) Υπεκχείλιση (underflow) Ο μικρότερος αριθμός συνήθως αντικαθίσταται από το 0, το οποίο είναι το μηδέν της μηχανής ή το έψιλον 1 while 11 end /2 26
Αριθμητική Κινητής Υποδιαστολής Αριθμοί μηχανής με (b, t, L, U) Στρογγύλευση fl(.) Έστω ο αριθμός. d d... d d... b d 0 θα γίνει με e 1 2 t t1 1 e fl. d1d2... d t b d1 0 dt, if dt 1 5 d t dt 1, if dt 1 5 27
Αριθμητική Κινητής Υποδιαστολής Αριθμοί μηχανής με (b, t, L, U) Αποκοπή fl(.) Έστω ο αριθμός. d d... d d... b d 0 θα γίνει e 1 2 t t1 1 fl. d d... d b d 0 e 1 2 t 1 28
Αριθμητική Κινητής Υποδιαστολής Αριθμοί μηχανής με (b, t, L, U) Πράξεις fl(fl()*fl(y)) Για την εκτέλεση της πράξης *y μετατρέπουμε τα και y σε αριθμούς μηχανής fl() και fl(y) και εκτελούμε την πράξη fl()*fl(y) Το αποτέλεσμα της παραπάνω πράξης δεν είναι αριθμός μηχανής (υποθέτουμε ότι δεν έχουμε υπερχείλιση ή υπεκχείλιση) και το μετατρέπουμε σε αριθμό μηχανής fl(fl()*fl(y)) 29
Παραδείγματα Έστω (b, t, L, U)=(10,5, 10,10) και οι αριθμοί: =5891.26 y=0.0773414 Να βρεθούν ο μεγαλύτερος και ο μικρότερος θετικός αριθμός μηχανής Να βρεθεί το άθροισμα +y με τους αριθμούς μηχανής με στρογγύλευση και με αποκοπή. 30
Παραδείγματα Έστω (b, t, L, U)=(10,5, 10,10) και οι αριθμοί: a=1 b=0.00003 c=0.00003 Να γίνουν οι πράξεις a+(b+c) (a+b)+c 31
Σφάλματα Σφάλματαστααρχικάδεδομένα Διαδιδόμενο σφάλμα Σφάλμα αποκοπής Σειρά Taylor Σφάλμα στρογγυλοποίησης 32
Τύποι σφαλμάτων Απόλυτο σφάλμα * Απόλυτο σχετικό σφάλμα r * 100% * Προσεγγιστική Λύση Πραγματική Λύση 33
Τύποι σφαλμάτων Διαφορές των τύπων σφαλμάτων Παράδειγμα 1 * 101100 1 101m άρα 101100 100m r 0.01 ή 1% 100 Παράδειγμα 2 * 1000110000 1 10001m άρα 1000110000 10000m r 0.0001 ή 0.01% 10000 34
Σφάλματα Αποκοπής Σφάλμα αποκοπής (truncation error) είναι το σφάλμα που δημιουργείται από την αποκοπή όρων σε αλγοριθμικές διαδικασίες Παραδείγματα (Τύπος Taylor) 2 m h h m f 0 h f 0 hf 0 f 0 f 0 2! m! 2 3 4 5 e 1 2! 3! 4! 5! 3 5 7 9 11 sin 3! 5! 7! 9! 11! MATLAB 35
Σφάλματα Στρογγυλοποίησης Σφάλμα στρογγυλοποίησης (round-off error) είναι το σφάλμα που δημιουργείται από την στρογγυλοποίηση κ δεκαδικών ψηφιών Παραδείγματα 3.1415923... 4 1.3333333... 3 MATLAB 36
Σφάλματα Στρογγυλοποίησης Το άνω φράγμα του σφάλματος στρογγυλοποίησης (round-off error) είναι 1 10 k 2 όπου κ ο αριθμός των δεκαδικών ψηφίων Δυο αριθμοί που η διαφορά τους είναι μικρότερη από το παραπάνω σφάλμα, έχουν ακρίβεια μεταξύ τους κ δεκαδικά ψηφία. 37
Σφάλματα Στρογγυλοποίησης Δυο αριθμοί έχουν ακρίβεια κ σημαντικών ψηφίων όταν η διαφορά τους (αφού στρογγυλοποιηθούν σε κ σημαντικά ψηφία) είναι ίση με μηδέν. Δηλαδή, όταν για το σχετικό σφάλμα των δυο αριθμών ισχύει r * 0.510 k 1 38
Σφάλματα Στρογγυλοποίησης Παράδειγμα 3.141592, y 3.14, y 0.001592 0.510 Παράδειγμα 2 y r 0.0005070 0.510 999999, y 999996, y 30.510 y r 3.00000310 0.510 0 2 6 5 39
Σφάλματα Στρογγυλοποίησης Παράδειγμα 0.000012, y 0.000009, y 0.000003 0.510 y r 0.25 0.510 0 5 40
Διαδιδόμενο Σφάλμα Καταστροφική ακύρωση σημαντικών ψηφίων Παρατηρείται στις περιπτώσεις υπολογισμού μικρών αριθμών από πράξεις μεγάλων αριθμών. Έστω (b,t,l,u)=(10,5,-10,10) 451852000, y 451851000, y 1000 z fl fl fl y 0 41
Διαδιδόμενο Σφάλμα Έστω (b,t,l,u)=(10,10,-10,10) 7892.888369292610 y 7891.888313007910 2 y.562847000010 μπορούμε να αποφύγουμε το πρόβλημα με χρήση ταυτοτήτων 1 1 1 y.562846829410 2 2 2 42
Παραδείγματα Υπολογισμός ημιαθροίσματος δυο αριθμών a0.982, b0.987, t 3 1 ab... 0.980 2 1 a ba... 0.984 2 43
Παραδείγματα Υπολογισμός αθροίσματος S n 1 n k 1 k 2 1 k n Sn t 10 n S t 10 9 1.900000000 99 1.990000003 999 1.999000003 9999 1.999899972 n 9 1.900000000 99 1.990000000 999 1.999000000 9999 1.999900000 44
Κατάσταση Προβλημάτων Καλής Κατάστασης Κακής Κατάστασης Πολυωνυμική εξίσωση του Wilkinson f 1 2 20 0 a a a 20 19 19 1 0 Συστήματα εξισώσεων 2y 3 0.51.001y 1.5 y, 3,0 0 2y 3 0.4991.001y 1.5 y, 1,1 MATLAB 45
Ευστάθεια Αλγορίθμων Ευσταθή (stable) Ασταθή (unstable) 46
Παραδείγματα 47