Παράδειγμα #1 ΑΡΙΘΜΗΤΙΚΗ ΚΙΝΗΤΗΣ ΥΠΟΔΙΑΣΤΟΛΗΣ ΕΠΙΜΕΛΕΙΑ: Ι. Λυχναρόπουλος 1. Πως ορίζεται και τι σημαίνει ο όρος flop στους επιστημονικούς υπολογισμούς. Απάντηση: Ο όρος flop σημαίνει floating point operation (πράξη μεταξύ αριθμών κινητής υποδιαστολής) και ορίζεται ως ο χρόνος που χρειάζεται ένας υπολογιστής για να υπολογίσει έναν πολλαπλασιασμό και μία πρόσθεση μαζί, δηλαδή ya+*y, συν τον χρόνο που απαιτείται για την ανάκτηση από την μνήμη RAM των δεδομένων που εμπλέκονται στις δύο αυτές πράξεις. Οι ποσότητες a και είναι σταθερές και γνωστές όπως επίσης γνωστή και η αρχική τιμή της ποσότητας y. To flop αποτελεί μονάδα μέτρησης της ταχύτητας του επεξεργαστή και σημείο αναφοράς όταν συγκρίνεται η ταχύτητα υπολογισμών ανάμεσα σε Η/Υ.. Με βάση το ψευδό-κώδικα epsilon = 1 DO IF (epsilon+1 1) EXIT epsilon = epsilon/ END DO Epsilon = X epsilon προσδιορίστε το ε του υπολογιστή σας. Απάντηση: Σε Visual Fortran 6.6 (Fortran 90) το αντίστοιχο πρόγραμμα είναι: program epsilon real(8):: e e=1.0 do while (e+1.0>1.0) e=e/.0 end do e=.0*e print*, e end program epsilon To οποίο δίνει αποτέλεσμα: e=.044604950313e-016 στον ίδιο υπολογιστή. 1
3. Να υπολογισθούν οι ρίζες της αλγεβρικής εξίσωσης a b c 0 με a=1, b=3000.001, c=3. Οι υπολογισμοί να γίνουν ι) σε υποθετικό υπολογιστή πέντε σημαντικών ψηφίων και ιι) στον υπολογιστή σας για απλή και διπλή ακρίβεια. Οι σωστές ρίζες της εξίσωσης είναι 1 0.001 και 3000. Εάν το σχετικό σφάλμα είναι μεγαλύτερο του 1%, εφαρμόστε τον εναλλακτικό τύπο: 1, c b b 4ac Αφού αποδείξτε τον εναλλακτικό τύπο, εξετάστε το σχετικό σφάλμα των αποτελεσμάτων και εξηγήστε γιατί τα αποτελέσματα βελτιώνονται σημαντικά. Απάντηση: Απόδειξη του δεύτερου τύπου: 1 c c b b 4 ac 4 4 4 4 4 b b ac b b ac b b ac b b ac c b b 4 ac c b b 4 ac b b ac c b b 4 ac b b 4 ac 4 4 ac a a b b ac c c b b 4 ac 4 4 4 4 ac 4 b b 4 ac b b ac b b ac b b ac c b b 4 ac c b b b b ac c b b 4 ac b b 4 ac b b 4 ac 4 ac a a.
Η εφαρμογή των τύπων θα γίνει: Α) Σε υποθετικό υπολογιστή 5 σημαντικών ψηφίων Β) Σε πραγματικό υπολογιστή με Πρόγραμμα Visual Fortran 6.6 (Fortran 90) για real(4) και real(8) τύπους Α. b b 4ac I) Τύπος 1, σε υποθετικό υπολογιστή 5 σημαντικών ψηφίων a Θα έχουμε διαδοχικά: α = 1.0000, b = 3000.0, c = 3.0000 b = 9000000 4αc = 1.000 Σε αυτό το σημείο διακρίνουμε περιπτώσεις ανάλογα με τον τρόπο λειτουργίας του υποθετικού υπολογιστή: 1) Αν λειτουργεί με στρογγυλοποίηση παίρνουμε b -4αc = 8999988 = 0.8999988 * 10 7 = 0.90000 * 10 7 = 9000000 b 4ac 9000000 3000.0 3000.0 3000.0 3000.0 3000.0 Οπότε 1 0 και 3000.0.0000.0000 Υπολογίζουμε τα σχετικά σφάλματα: 0 ( 0.001) 1 1*100% 100% 0.001 3000 ( 3000) 0*100% 0% 3000 ) Αν λειτουργεί με αποκοπή παίρνουμε b -4αc = 8999988 = 0.8999988 * 10 7 = 0. 89999 * 10 7 = 8999900 b 4ac 8999900 999.9833 0.9999833*10 0.9999*10 999.9 4 4 3000.0 999.9 Οπότε 1 0.050000.0000 3000.0 999.9 και 999.95 999.9.0000 Υπολογίζουμε τα σχετικά σφάλματα: 3
0.05 ( 0.001) 1 49*100% 4900% 0.001 999.9 ( 3000) 5 3.333333*10 *100% 0.003333% 3000 ΕΙΝΑΙ ΠΡΟΦΑΝΕΣ ΟΤΙ ΤΟ ΣΧΕΤΙΚΟ ΣΦΑΛΜΑ ΤΗΣ ΤΙΜΗΣ ΤΗΣ ης ΡΙΖΑΣ ΕΙΝΑΙ ΑΝΤΙΣΤΟΙΧΟ ΜΕ ΤΗΝ ΑΚΡΙΒΕΙΑ ΤΟΥ Η/Υ, ΕΝΩ ΑΝΤΙΘΕΤΑ ΤΟ ΣΧΕΤΙΚΟ ΣΦΑΛΜΑ ΤΗΣ ΤΙΜΗΣ ΤΗΣ 1 ης ΡΙΖΑΣ ΕΙΝΑΙ ΣΗΜΑΝΤΙΚΑ ΜΕΓΑΛΥΤΕΡΟ. c ΙΙ) Τύπος 1, σε υποθετικό υπολογιστή 5 σημαντικών ψηφίων. b b 4ac Θα έχουμε διαδοχικά: α = 1.0000, b = 3000.0, c = 3.0000 b = 9000000 4αc = 1.000 Σε αυτό το σημείο διακρίνουμε ξανά περιπτώσεις ανάλογα με τον τρόπο λειτουργίας του υποθετικού υπολογιστή 1) Αν λειτουργεί με στρογγυλοποίηση παίρνουμε b -4αc = 8999988 = 0.8999988 * 10 7 = 0.90000 * 10 7 = 9000000 b 4ac 9000000 3000.0 6.0000 Οπότε 1 0.0010000 και 3000.0 3000.0 6.0000 6.0000 Δεν υπολογίζεται 3000.0 3000.0 0 0.001 ( 0.001) 1 0*100% 0% 0.001 ε : Δεν υπολογίζεται ) Αν τώρα ο υπολογιστής λειτουργεί με αποκοπή παίρνουμε b -4αc = 8999988 = 0.8999988 * 10 7 = 0. 89999 * 10 7 = 8999900 4 4 b 4ac 8999900 999.9833 0.9999833*10 0.9999*10 999.9 4
6.0000 Οπότε 1 3000.0 999.9 6.0000 και 60 3000.0 999.9 3 1.0000167*10 0.0010000 Υπολογίζουμε τα σχετικά σφάλματα: 0.001 ( 0.001) 1 0*100% 0% 0.001 60 ( 3000) 0.98*100% 98% 3000 ΟΠΩΣ ΑΝΑΜΕΝΕΤΑΙ, Ο ΕΝΑΛΛΑΚΤΙΚΟΣ ΤΥΠΟΣ ΒΕΛΤΙΩΝΕΙ ΣΗΜΑΝΤΙΚΑ ΤΟ ΣΧΕΤΙΚΟ ΣΦΑΛΜΑ ΤΗΣ ΤΙΜΗΣ ΤΗΣ 1 ης ΡΙΖΑΣ, ΕΝΩ ΑΝΤΙΘΕΤΑ ΑΛΛΟΙΩΝΕΙ ΤΕΛΕΙΩΣ ΤΗΝ ΤΙΜΗ ΤΗΣ ης ΡΙΖΑΣ. Β. Ι) Τύπος 1, b b 4ac με πρόγραμμα σε FORTRAN 90 a program rizes double:: a,b,c,d,1,,e1,e,1anal,anal 1anal=-0.001 anal=-3000 a=1 b=3000.001 c=3 D=b*b-4*a*c 1=(-b+sqrt(D))/(*a) =(-b-sqrt(d))/(*a) e1=abs((1-1anal)/1anal)*100 e=abs((-anal)/anal)*100 print*, 1,e1 print*,,e end program rizes 5
Για real (4): 1=-9.888133E-04 e1=1.17187% = -3000.000 e= 0% Για real(8): 1=-1.000000007707058E-003 e1=3.9790391316344e-006% = -999.9999765649 e= 7.8150493814E-007% ΙΙ) 1, c με πρόγραμμα σε FORTRAN 90 b b 4ac Δημιουργούμε το αντίστοιχο πρόγραμμα αλλάζοντας στο προηγούμενο τους τύπους για τον υπολογισμό των 1 και ως εξής: 1=-(*c)/(b+sqrt(D)) =-(*c)/(b-sqrt(d)) Για real (4): 1=-1.0000000E-03 e1=0% = -3035.573 e=1.185758% Για real(8): 1=-1.00000000781503E-003 e1=3.968494680166583e-006 = -999.99997687883 e=7.7070581083794e-007 ΒΛΕΠΟΥΜΕ ΟΤΙ ΤΩΡΑ ΤΑ ΑΠΟΤΕΛΕΣΜΑΤΑ ΒΕΛΤΙΩΝΟΝΤΑΙ ΣΗΜΑΝΤΙΚΑ. ΑΥΤΟ ΟΦΕΙΛΕΤΑΙ ΣΤΟ ΓΕΓΟΝΟΣ ΟΤΙ Η Η/Υ ΧΡΗΣΙΜΟΠΟΙΕΙ ΠΕΡΙΣΣΟΤΕΡΑ ΣΗΜΑΝΤΙΚΑ ΨΗΦΙΑ. ΒΕΒΑΙΩΣ ΚΑΙ ΠΑΛΙ ΥΠΑΡΧΕΙ ΑΠΩΛΕΙΑ ΑΚΡΙΒΕΙΑΣ ΑΝΑΛΟΓΑ ΜΕ ΤΟΝ ΤΥΠΟ ΠΟΥ ΧΡΗΣΙΜΟΠΟΙΟΥΜΕ. Συνοψίζοντας όλα τα προηγούμενα αποτελέσματα έχουμε: Σε υποθετικό υπολογιστή με 5 σημαντικών ψηφίων: Με Στρογγυλοποίηση Τύπος: 1, 1= 0 e1= 100% = -3000.0 e= 0% Με Αποκοπή 1= -0.050000 e1= 4900% = -999.9 e= 0.003333% b b 4ac c Τύπος 1, a b b 4ac 1= -0.0010000 e1= 0% =?? e=?? 1= -0.0010000 e1= 0% = -60 e= 98% 6
Πρόγραμμα σε πραγματικό υπολογιστή: Fortran 90 Real(4) Real(8) Τύπος: 1, 1=-0.0009888133 e1=1.17187% = -3000.000 e= 0% b b 4ac c Τύπος 1, a b b 4ac 1=-0.0010000000 e1= 0% = -3035.573 e= 1.185758% 1=-0.001000000007707058 e1=0.0000039790391316344% = -999.9999765649 e= 0.00000078150493814% 1=-0.00100000000781503 e1= 0.000003968494680166583% = -999.99997687883 e= 0.00000077070581083794% Συμπερασματικά, λοιπόν, παρατηρούμε ότι ο εναλλακτικός τύπος βελτιώνει σημαντικά το σχετικό σφάλμα στη ρίζα 1. Αυτό είναι αναμενόμενο αφού παρακάμπτεται η ανάγκη υπολογισμού της ποσότητας b. Αντίθετα, όταν ο εναλλακτικός τύπος εφαρμόζεται στον υπολογισμό της ρίζας η ποσότητα αυτή ξαναεμφανίζεται και μάλιστα στον παρανομαστή με συνέπεια το σχετικό σφάλμα των υπολογισμών να είναι υποδεέστερο της ακρίβειας του Η/Υ. ΕΠΟΜΕΝΩΣ ΕΦΑΡΜΟΖΟΥΜΕ ΤΟΝ ΒΑΣΙΚΟ ΤΥΠΟ ΓΙΑ ΤΟΝ ΥΠΟΛΟΓΙΣΜΟ ΤΟΥ ΚΑΙ ΤΟΝ ΕΝΑΛΛΑΚΤΙΚΟ ΤΥΠΟ ΓΙΑ ΤΟΝ ΥΠΟΛΟΓΙΣΜΟ ΤΟΥ. 1 7