ΑΡΙΘΜΗΤΙΚΕΣ ΜΕΘΟΔΟΙ ΓΙΑ ΠΡΟΒΛΗΜΑΤΑ ΜΗΧΑΝΙΚΗΣ ΕΦΑΡΜΟΓΕΣ ΜΕ ΧΡΗΣΗ MATLAB ΔΕΥΤΕΡΗ ΕΚΔΟΣΗ [ΒΕΛΤΙΩΜΕΝΗ ΚΑΙ ΕΠΑΥΞΗΜΕΝΗ] Συγγραφείς ΝΤΑΟΥΤΙΔΗΣ ΠΡΟΔΡΟΜΟΣ Πανεπιστήμιο Miesota, USA ΜΑΣΤΡΟΓΕΩΡΓΟΠΟΥΛΟΣ ΣΠΥΡΟΣ Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης ΣΙΔΗΡΟΠΟΥΛΟΥ ΕΥΜΟΡΦΙΛΗ Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης
ΚΕΦΑΛΑΙΟ 1 ΕΙΣΑΓΩΓΗ 1.1 Πρόλογος Η επίλυση ενός προβλήματος στην επιστήμη και τη μηχανική ακολουθεί διάφορα στάδια. Το πρώτο στάδιο αφορά την διατύπωση του προβλήματος σε μορφή μαθηματικών εξισώσεων με βάση κάποιες παραδοχές. Η φάση αυτή καλείται μοντελοποίηση και δεν είναι αντικείμενο μελέτης του βιβλίου αυτού. Ακολουθεί η επίλυση των εξισώσεων του μοντέλου, η οποία μπορεί να είναι απλή ή πολύπλοκη. Κάποιες κατηγορίες εξισώσεων (συνήθως γραμμικές) έχουν αναλυτική λύση, η οποία μπορεί να βρεθεί με αναλυτικές μεθόδους. Ω- στόσο, η πλειοψηφία των προβλημάτων που συναντώνται στην πράξη δεν επιδέχονται αναλυτική λύση, ή η αναλυτική λύση που υπάρχει απαιτεί υπολογισμούς που είναι δύσκολο αν όχι αδύνατο να γίνουν (φανταστείτε να προσπαθείτε να επιλύσετε αναλυτικά ένα σύστημα 100 γραμμικών αλγεβρικών εξισώσεων με 100 αγνώστους!). Η ανάπτυξη των ηλεκτρονικών υπολογιστών κατέστησε δυνατή, μεταξύ άλλων, την επίλυση προβλημάτων που δεν επιδέχονται αναλυτική λύση και διευκόλυνε την εκτέλεση υπολογισμών που αλλοιώς θα ήταν αδύνατοι. Η χρήση των ηλεκτρονικών υπολογιστών
Εισαγωγή για την επίλυση μαθηματικών προβλημάτων στηρίζεται στην ύπαρξη μεθόδων που επιτρέπουν την επίλυση σύνθετων προβλημάτων στη βάση μιας αλληλουχίας στοιχειωδών μαθηματικών πράξεων που μπορούν να προγραμματιστούν στον υπολογιστή. Αυτές οι μέθοδοι είναι γνωστές ως αριθμητικές μέθοδοι. Το αντικείμενο του βιβλίου είναι η θεωρία και η εφαρμογή μερικών βασικών αριθμητικών μεθόδων με σκοπό την επίλυση πολύπλοκων μαθηματικών εξισώσεων οι οποίες περιγράφουν πραγματικά προβλήματα σε διάφορα πεδία της επιστήμης και της μηχανικής. Η προσέγγιση που ακολουθείται στο βιβλίο είναι η εξής: γίνεται ε- στίαση σε γενικές κατηγορίες μαθηματικών προβλημάτων (εξισώσεων) που προκύπτουν από πραγματικά προβλήματα και συζητώνται κατάλληλες αριθμητικές μέθοδοι για την επίλυσή τους. Η αξιολόγηση των μεθόδων αυτών βασίζεται κύρια σε θέματα ταχύτητας υπολογισμών, απαιτήσεων μνήμης του υπολογιστή και ακρίβειας της λύσης. Για κάθε αριθμητική μέθοδο συζητείται ο αντίστοιχος αλγόριθμος, δηλαδή η αλληλουχία των απλών βημάτων που πρέπει να εκτελέσει ο υπολογιστής κατά την εφαρμογή της μεθόδου. Τέλος, καλύπτεται ο προγραμματισμός του κάθε αλγορίθμου, δηλαδή η μετατροπή του σε μια σειρά εντολών που να μπορεί να "καταλάβει" ο υπολογιστής. Για το τελευταίο απαιτείται η υιοθέτηση μιας γλώσσας προγραμματισμού (FORTRAN, C, κλπ) ή ενός περιβάλλοντος προγραμματισμού (MATLAB, Mathematica, κλπ). Στο βιβλίο αυτό υιοθετείται το υπολογιστικό περιβάλλον MATLAB το οποίο έχει καθιερωθεί παγκόσμια ως μια εύχρηστη πλατφόρμα υπολογισμών και γραφικών παραστάσεων για προβλήματα μικρής και μεσαίας πολυπλοκότητας σαν αυτά που θα αντιμετωπισθούν. Η εξοικείωσή σας με το MATLAB θα σας φανεί χρήσιμη και ευρύτερα, καθώς το υπολογιστικό αυτό περιβάλλον έχει υιοθετηθεί σε πολλά πεδία (π.χ. Φαινόμενα Μεταφοράς, Ρευστοδυναμική, Δυναμική και Ρύθμιση Συστημάτων, Επεξεργασία Σημάτων κλπ).
ΚΕΦΑΛΑΙΟ 1 1. Προβλήματα που θα εξεταστούν Στο βιβλίο εξετάζονται οι παρακάτω κατηγορίες προβλημάτων: Συστήματα γραμμικών αλγεβρικών εξισώσεων, π.χ. a11x1 a1 x b1 a1x1 ax b ή, στην πιο γενική μορφή, Ax b. Συστήματα μη-γραμμικών αλγεβρικών εξισώσεων, π.χ. 3 11 33 0 ax a x ax 5 4 1 5 6 0 ax ax a a si( x ) a cos( x ) a ta( x ) a 0 7 1 8 9 3 10 όπου α 1, α, α 3, α 4, α 5, α 6, α 7, α 8, α 9, α 10, είναι κάποιες σταθερές ή, στην πιο γενική μορφή, f( x ) 0. Συνήθεις Διαφορικές Εξισώσεις (ΣΔΕ) Προβλήματα Αρχικών Τιμών, π.χ. dy dt 1 dy dt ay by 1 cy dy y (0) y 1 1 1,0 ή, στην πιο γενική μορφή, y (0) y,0 3
Εισαγωγή dy dt f( y, t), y( t0) y 0 Συνήθεις Διαφορικές Εξισώσεις (ΣΔΕ) Προβλήματα Οριακών Τιμών, π.χ. d c D dx f (, c T) 1 d T a f (, c T) dx c c(0) c0 0 x x1 T(0) T T(1) T 0 1 Μερικές Διαφορικές Εξισώσεις (ΜΔΕ), π.χ. y t y a x t 0 y y (x) 0 x 0 y 0 x 1 y 0 x αρχική συνθήκη οριακές συνθήκες 1.3 Παράσταση αριθμών στον υπολογιστή Η αναπαράσταση ενός πραγματικού αριθμού στον υπολογιστή γίνεται με πεπερασμένη ακρίβεια. Για να κατανοηθεί αυτό καλύτερα, θα γίνει αναφορά σε μερικές βασικές έννοιες παράστασης αριθμών. 4
ΚΕΦΑΛΑΙΟ 1 Συστήματα αρίθμησης Στην γενική περίπτωση συστήματος αρίθμησης πραγματικών αριθμών με βάση τον θετικό ακέραιο b, όπου b>1, ισχύει: dd1... dd1d0. d1... dm 1 1 0 db d1b... db d1b d0b 1 m d1b db... dm b d i db i m i Το τμήμα αριστερά από την υποδιαστολή (radix poit) με τα +1 ψηφία, αντιστοιχεί στο ακέραιο μέρος του αριθμού και το τμήμα δεξιά από την υποδιαστολή με τα m ψηφία, αντιστοιχεί στο κλασματικό μέρος του αριθμού. Θεωρητικά θα μπορούσε η βάση α- ρίθμησης b να είναι κλασματικός αριθμός (π.χ. b = 1/), αρνητικός αριθμός (π.χ. b = -) ή και μιγαδικός αριθμός (π.χ. b = +1 i). Τα πιο συνηθισμένα συστήματα αρίθμησης χρησιμοποιούν ως βάση τους αριθμούς 10,, 8, 16. Δεκαδικό (decimal) σύστημα αρίθμησης Το γνωστό δεκαδικό σύστημα χρησιμοποιεί ως βάση τον αριθμό b = 10 και τα ψηφία 0, 1,, 3, 4, 5, 6, 7, 8, 9. Εισήχθηκε από Ινδούς και Άραβες μαθηματικούς εδώ και πάνω από χίλια χρόνια. Προφανώς η χρήση του 10 ως βάσης σχετίζεται με το γεγονός ότι τα δάκτυλα των χεριών του ανθρώπου είναι δέκα. Σύμφωνα με αυτό θα ισχύει 5
Εισαγωγή d d... d d d. d d... d 1 1 0 1 m 1 1 0 1 1 0 1 m d1 10 d 10... dm10 d 10 d 10... d 10 d 10 d 10 Δυαδικό (biary) σύστημα αρίθμησης Το δυαδικό σύστημα χρησιμοποιεί ως βάση τον αριθμό b = και τα ψηφία 0, 1. Για πρώτη φορά χρησιμοποιήθηκε από τον Leibitz το 1703. Επιλέχθηκε και χρησιμοποιείται πλέον παγκοσμίως για αναπαράσταση αριθμών και εκτέλεση πράξεων σε υπολογιστές, επειδή οι βασικές λογικές μονάδες του είναι ηλεκτρονικά στοιχεία τα οποία μπορούν να βρίσκονται είτε στη θέση off (0), είτε στη θέση o (1). Ουσιαστικά, όταν δοθεί σε έναν ηλεκτρονικό υπολογιστή ένας α- ριθμός του δεκαδικού συστήματος, αυτός τον μετατρέπει στο δυαδικό σύστημα και εκτελεί όλες τις πράξεις χρησιμοποιώντας δύο ψηφία. Σύμφωνα λοιπόν με τα γνωστά θα ισχύει d d... d d d. d d... d 1 1 0 1 m 1 1 0 1 1 0 1 m d1 d... dm d d... d d d Αντίστοιχα ορίζονται τα άλλα συστήματα αρίθμησης. Για b = 16, χρησιμοποιούνται τα ψηφία 0, 1,, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Μετατροπές ανάμεσα σε διάφορα συστήματα αρίθμησης Αν έχετε δύο συστήματα αρίθμησης με βάσεις b 1 και b και θέλετε να μετατρέψετε κάποιον αριθμό που είναι εκφρασμένος στο ένα σύστημα στο άλλο, χρησιμοποιείτε απλά την εξίσωση 6
ΚΕΦΑΛΑΙΟ 1 (1.1) i1 i d i b 1 1 di b m1i11 mi Θα εξετασθεί η περίπτωση δεκαδικού και δυαδικού συστήματος με ένα παράδειγμα. Προφανώς για τα 10 ψηφία του δεκαδικού συστήματος η αντιστοίχιση θα είναι: 0 1 3 4 5 6 7 8 9 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 Για μετατροπή από δυαδικό σε δεκαδικό τα πράγματα είναι απλά. Απλά πρέπει να γίνουν οι πράξεις. Π.χ. για τον δυαδικό αριθμό (1001101.001) θα ισχύει 6 5 4 3 1 1001101.001 1 0 0 1 1 0 0 1 3 1 0 0 1 1640301618 1 1 1 14 0 110 0 1 77.15 4 8 Έστω τώρα ο δεκαδικός αριθμός στο δεκαδικό σύστημα (36.31) 10. Προφανώς =, m = 3 και 1 0 1 3 36.31 10 3 10 6 10 3 10 10 1 10 10 = 0010 1010 0011 1010 0110 1010 0011 1010 0010 1010 0001 1010 11101100.010100... 1 0 1 3 7
Εισαγωγή 3 Οι μετατροπές από /προς δυαδικό οκταδικό και δυαδικό δεκαεξαδικό είναι απλές επειδή 8 και 16. Κάθε ψηφίο του οκταδικού συστήματος αντιστοιχεί σε μια τριάδα ψηφίων του δυαδικού συστήματος. Για παράδειγμα (5.6) 8 = ((010) (101). (110)). Αντίστοιχα κάθε ψηφίο του δεκαεξαδικού συστήματος αντιστοιχεί σε μια τετράδα ψηφίων του δυαδικού συστήματος. Για παράδειγμα (Β.3) 16 = ((0010) (1011). (0011)). 4 Αναπαράσταση ενός αριθμού σε ηλεκτρονικό υπολογιστή Όπως έχει ήδη γραφεί, στους ηλεκτρονικούς υπολογιστές χρησιμοποιείται το δυαδικό σύστημα αρίθμησης. Στοιχειώδης μονάδα μνήμης είναι το bit που μπορεί να πάρει μόνον τιμές: 0 ή 1. Η αμέσως υψηλότερη μονάδα μνήμης είναι το byte που περιλαμβάνει 8 bits. Τα bytes οργανώνονται σε words. Συνήθως κάθε word περιέχει 4 ή 8 ή 16 bytes και επομένως συνήθως κάθε word περιέχει 3 ή 64 ή 18 bits. Αν υποτεθεί ότι για την αναπαράσταση σε δυαδικό σύστημα αφιερώνεται μια μονάδα μνήμης με t bits, τότε προφανώς μπορούν να αναπαρασταθούν t αριθμοί. Συνήθως γίνεται η σύμβαση ότι η αρίθμηση των bits γίνεται από δεξιά προς τα αριστερά (0 για πρώτο από δεξιά, t 1 για πρώτο από αριστερά). Το τελευταίο bit (πρώτο αριστερά, t 1) χρησιμοποιείται ως πρόσημο (0 για θετικό πρόσημο και 1 για αρνητικό πρόσημο). Με τον παραπάνω τρόπο είναι δυνατόν να αναπαρασταθούν όλοι οι ακέραιοι που βρίσκονται t1 t1 στο κλειστό διάστημα, 1. Η ασυμμετρία οφείλεται στο γεγονός ότι το 0 προσμετράται στις θετικές τιμές. 8
ΚΕΦΑΛΑΙΟ 1 Αν ως αποτέλεσμα κάποιας μαθηματικής πράξης προκύψει αριθμός έξω από τα παραπάνω όρια, ο υπολογιστής συνήθως θα αντιδράσει διαπιστώνοντας υπερχείλιση (overflow). Ο παραπάνω τρόπος αναπαράστασης είναι κατάλληλος μόνον για ακέραιους και καλείται αναπαράσταση σταθερού σημείου (fixed poit represetatio). Για την αναπαράσταση πραγματικών αριθμών που στην γενική περίπτωση περιλαμβάνουν και κλασματικό μέρος χρησιμοποιείται η αναπαράσταση κινητής υποδιαστολής (floatig poit represetatio). Η σύμβαση που θεωρείται ότι ισχύει προβλέπει ότι κάθε πραγματικός αριθμός x περιγράφεται με την βοήθεια ενός ζεύγους αριθμών e και f, έτσι ώστε να ισχύει eq 1 x e, f f b, f 1 (1.) b όπου b είναι η βάση του συστήματος αρίθμησης και q είναι μια θετική ακέραια σταθερά (expoet offset). O αριθμός e λαμβάνεται ως θετικός ακέραιος και χαρακτηρίζεται ως εκθέτης (expoet) και ο αριθμός f ως συντελεστής (matissa). Λόγω της ανίσωσης που ισχύει εξασφαλίζεται ότι η παραπάνω αναπαράσταση είναι μοναδική και ονομάζεται κανονικοποιημένη (ormalized). Αν η ανίσωση δεν ισχύει, η αναπαράσταση λέγεται μη κανονικοποιημένη (uormalized). Η τιμή της σταθεράς q λαμβάνεται έτσι ώστε να μπορούν να αναπαρασταθούν αριθμοί με θετικούς και αρνητικούς εκθέτες σε μια επιθυμητή περιοχή. Αναπαράσταση σταθερού σημείου Για κάθε αριθμό ο υπολογιστής κρατάει κάποιο "χώρο στη μνήμη του", δηλαδή έναν αριθμό δυαδικών ψηφίων (ή bits). Ο αριθμός των bits εξαρτάται από το είδος του αριθμού που χρειάζεται να αναπαρασταθεί: 9
Εισαγωγή - Ακέραιοι: 16 bits (t = 16) ένα για το πρόσημο 15 για τον αριθμό 16 bits μπορούν να αναπαραστήσουν μια κλίμακα ακεραίων μεταξύ 15 = 3,768 και 15 1 = 3,767. Ακέραιοι που ανήκουν σε αυτό το διάστημα αναπαριστώνται με απόλυτη ακρίβεια. - Μεγάλοι ακέραιοι: 3 bits (t = 3) Στη περίπτωση αυτή μπορούν να αναπαρασταθούν με απόλυτη ακρίβεια ακέραιοι μεταξύ 31 =,147,483,648 καί 31 1 =,147,483,647. Αναπαράσταση κινητής υποδιαστολής (πρότυπο ΙΕΕΕ) πρόσημο (S) εκθέτης (E) συντελεστής (F) Απλή ακρίβεια 1 8 3 ( 3 bits) Διπλή ακρίβεια 1 11 5 ( 64 bits) Τετραπλή ακρίβεια 1 15 11 (18 bits) 10
ΚΕΦΑΛΑΙΟ 1 17 19 39 38 Για μεταβλητές απλής ακρίβειας (3 bits) ο εκθέτης μπορεί να πάρει τιμές από 0 έως 55. Αν ληφθεί q = 16, τότε στην πραγματικότητα οι εκθέτες μπορούν να πάρουν τιμές από 16 έως +19. Επομένως μπορούν να αναπαρασταθούν αριθμοί στο διάστημα, 5.910, 6.810. Αριθμοί μεγαλύτεροι από 6.8x10 +38 θα προκαλέσουν υπερχείλιση και αριθμοί μικρότεροι από 5.9x10-39 θα προκαλέσουν υποχείλιση (uderflow). Αν S είναι η τιμή του bit που αντιστοιχεί στο πρόσημο (θέση 31), Ε είναι η τιμή που αντιστοιχεί στον εκθέτη (θέσεις 3 έως 30), F είναι η τιμή που αντιστοιχεί στον συντελεστή (θέσεις 0 έως ), τότε συναντώνται οι εξής περιπτώσεις: 1. Αν Ε = 55 και F 0, τότε ο αριθμός είναι NaN (Not a Number). Είναι το αποτέλεσμα αδύνατης πράξης, π.χ. τετραγωνική ρίζα αρνητικού αριθμού.. Αν Ε = 55 και F 0. Είναι το αποτέλεσμα υπερχείλισης., τότε ο αριθμός είναι ( 1) S, δηλαδή 3. Αν 0 < Ε < 55 και F 0, τότε ο αριθμός είναι S E17 ( 1) 1. F Για παράδειγμα,, όπου ο F λαμβάνεται σε δυαδική μορφή. 0 10000000 01000000000000000000000=+.5 1 10000000 01000000000000000000000=-.5. 4. Αν Ε = 0 και 0 S E16 F, τότε ο αριθμός είναι ( 1) 0. F αριθμός αυτός μπορεί να είναι μη κανονικοποιημένος. 5. Αν Ε = 0 και F 0, τότε ο αριθμός είναι ( 1) S 0. δηλαδή 0. Είναι το αποτέλεσμα υποχείλισης με το κατάλληλο πρόσημο. Στους ηλεκτρονικούς υπολογιστές επομένως πράξεις σαν τις παρακάτω είναι επιτρεπτές:. Ο 11
Εισαγωγή ( ) ( ) ( ) ( x) ( ) ( ) 1.4 Είδη σφαλμάτων x είναι πεπερασμένος αριθμός 1 0 ( ) ( ) NaN Στην αριθμητική ανάλυση γίνεται λόγος για προσέγγιση στην ακριβή λύση ενός προβλήματος. Παραδείγματος χάριν ο αριθμός έχει άπειρα δεκαδικά ψηφία. Επομένως η ακριβής τιμή αυτού του αριθμού πρέπει να προσεγγισθεί με έναν άλλον αριθμό, ο οποίος έχει πεπερασμένο αριθμό δεκαδικών ψηφίων. Αν x είναι η ακριβής τιμή ενός * αριθμού και x η προσέγγισή του, τότε ορίζονται τα εξής μεγέθη: Απόλυτο σφάλμα e x x x * * x x Απόλυτο σχετικό σφάλμα, x 0 * * x x e x Όριο ανοχής ή ακρίβεια προσέγγισης είναι ο μη αρνητικός α- ριθμός σ για τον οποίο ισχύει * xx ή * * x x x Σχετική ακρίβεια προσέγγισης είναι ο μη αρνητικός αριθμός ε για τον οποίο ισχύει και συνεπώς * x x x x x x * * * * Σφάλμα αποκοπής (Trucatio error) Όπως έχει ήδη γραφεί κατά την επίλυση οποιουδήποτε πραγματικού προβλήματος συναντώνται διάφορα στάδια. Κάθε στάδιο μπορεί να αποτελέσει πηγή σφαλμάτων. Στο πρώτο στάδιο της μοντελοποίησης συναντώνται τα σφάλματα μοντελοποίησης, δηλαδή σφάλματα 1
ΚΕΦΑΛΑΙΟ 1 τα οποία προκύπτουν από λανθασμένες παραδοχές κατά την διατύπωση του μοντέλου. Τα σφάλματα αυτά δεν εξετάζονται στο βιβλίο αυτό. Κατά το δεύτερο στάδιο της μετατροπής του μαθηματικού μοντέλου σε αριθμητικό μοντέλο υπεισέρχεται το σφάλμα αποκοπής. Αυτό συμβαίνει σε περιπτώσεις επίλυσης αλγεβρικών εξισώσεων με επαναληπτικές διαδικασίες, ή επίλυσης διαφορικών εξισώσεων οι οποίες από την φύση τους έχουν ως λύση συνεχείς συναρτήσεις. Υπάρχουν περιπτώσεις κατά τις οποίες το μαθηματικό και το αντίστοιχο αριθμητικό μοντέλο μπορούν να επιλυθούν με έναν πεπερασμένο καθορισμένο αριθμό πράξεων. Τέτοιο είναι το παράδειγμα της επίλυσης γραμμικών αλγεβρικών εξισώσεων με απαλοιφή Gauss. Στις περιπτώσεις αυτές δεν υπεισέρχεται κάποιο σφάλμα α- ποκοπής. Σε περίπτωση ύπαρξης σφάλματος αποκοπής, η ταχύτητα με την οποία αυτό τείνει στο μηδέν, καθώς οι παράμετροι του αριθμητικού μοντέλου μεταβάλλονται, καλείται τάξη σύγκλισης της μεθόδου (order of covergece). Αυτή χρησιμοποιείται για σύγκριση εναλλακτικών αριθμητικών μεθόδων και για την διερεύνηση της συμπεριφοράς μιας μεθόδου. Στην γενική περίπτωση συγκρίνεται η συμπεριφορά του σφάλματος αποκοπής με την συμπεριφορά συγκεκριμένων συναρτήσεων όπως k, e, 10 log / κλπ. Συγκεκριμένα το σφάλμα αποκοπής e(x) χαρακτηρίζεται ως τάξης O f( x ), όπου f(x) είναι κάποια από τις παραπάνω συναρτήσεις, αν ex ( ) lim xl f ( x ) (1.3) Το x είναι η παράμετρος της μεθόδου, που συνήθως είναι ο αριθμός των σημείων ή βημάτων της αριθμητικής μεθόδου. Στην περίπτωση αυτή L, δηλαδή λαμβάνεται το όριο καθώς. Η περίπτωση αυτή ισχύει για επίλυση διαφορικών εξισώσεων οριακών συνθηκών ή μερικών διαφορικών εξισώσεων με χρήση πεπερασμένων διαφορών. Στην περίπτωση διαφορικών εξισώσεων αρχικών 13
Εισαγωγή τιμών το x ταυτίζεται με το βήμα ολοκλήρωσης h, το οποίο στην περίπτωση αυτή τείνει στο μηδέν. Η μείωση του σφάλματος αποκοπής κατά την χρήση μιας συγκεκριμένης μεθόδου, συνεπάγεται αύξηση του αριθμού υπολογισμών με κίνδυνο, όπως θα φανεί στην συνέχεια, αύξησης του σφάλματος στρογγυλοποίησης. Το πρόβλημα ανάγεται στην εύρεση νέων αριθμητικών μεθόδων που μειώνουν ταυτόχρονα και το υπολογιστικό κόστος και το σφάλμα. Παρακάτω δίνεται ένα τέτοιο χαρακτηριστικό παράδειγμα. Έστω ότι χρειάζεται να επιλυθεί ένα σύστημα γραμμικών αλγεβρικών εξισώσεων ως προς αγνώστους. Από την θεωρία είναι γνωστό ότι ένας τρόπος υπολογισμού είναι ο γνωστός κανόνας του Cramer. Αυτός απαιτεί τον υπολογισμό +1 οριζουσών +1 τετραγωνικών πινάκων διαστάσεων x. Αποδεικνύεται ότι απαιτούνται 1 1! πολλαπλασιασμοί, που είναι τάξης.5 e. 161 Για = 100, αυτό σημαίνει 9.3 10 πολλαπλασιασμούς! Όπως θα αποδειχθεί σε επόμενο Κεφάλαιο, αν κάνει κάποιος χρήση της απαλοιφής Gauss για την επίλυση του ίδιου συστήματος, θα απαιτηθούν τάξης 3 3 πολλαπλασιασμοί. Για = 100, αυτό σημαίνει ότι απαι- 6 10 τούνται τάξης πολλαπλασιασμοί, δηλαδή υπάρχει μια δραματική μείωση των απαιτούμενων 3 πολλαπλασιασμών. Σφάλμα στρογγυλοποίησης (Roudoff error) Έχει ήδη αναφερθεί ότι αν έχετε σε έναν υπολογιστή μια λέξη με t bits, τότε ο μέγιστος αριθμός διαφορετικών πραγματικών αριθμών που μπορούν να αναπαρασταθούν είναι t. Έστω x 1 και x (x 1 < x ) είναι δύο διαδοχικοί από τους t αυτούς αριθμούς. Προφανώς όλοι 14
ΚΕΦΑΛΑΙΟ 1 οι άπειροι πραγματικοί αριθμοί που παρεμβάλλονται ανάμεσα στους x 1 και x δεν μπορούν να αναπαρασταθούν με ακρίβεια. Όλοι αυτοί οι αριθμοί στρογγυλοποιούνται είτε στον x 1, είτε στον x, είτε στον πλησιέστερο. Εισάγεται έτσι ένα σφάλμα το οποίο καλείται σφάλμα στρογγυλοποίησης. Το σφάλμα αυτό δεν περιορίζεται στην αναπαράσταση των αρχικών δεδομένων ενός προβλήματος. Υπεισέρχεται σε κάθε μαθηματική πράξη (πρόσθεση, αφαίρεση, πολλαπλασιασμό, διαίρεση, ύψωση σε δύναμη κλπ). Θα εξετασθεί συνοπτικά το σφάλμα στρογγυλοποίησης σε αριθμητική κινητής υποδιαστολής με ένα απλό παράδειγμα. Υποθέστε ότι έχετε έναν υπολογιστή που χρησιμοποιεί το δεκαδικό σύστημα και διαθέτει ένα ψηφίο για τον εκθέτη και τρία ψηφία για τον συντελεστή. Προφανώς ο μικρότερος μη μηδενικός θετικός πραγματικός αριθμός που μπορεί να αναπαρασταθεί θα είναι ο 0.100 x 10-9. Ο αμέσως μεγαλύτερος θα είναι ο 0.101 x 10-9. Όλοι οι πραγματικοί αριθμοί μεταξύ αυτών έστω ότι στρογγυλοποιούνται στον πλησιέστερο. Είναι προφανές ότι θα προκύψει ένα σφάλμα στρογγυλοποίησης το οποίο θα είναι μεταξύ 0 και 0.005 x 10-9 = 5 x 10-1. Αντίστοιχα ο μέγιστος θετικός πραγματικός αριθμός που μπορεί να αναπαρασταθεί θα είναι ο 0.999 x 10 9. Ο αμέσως μικρότερος θα είναι ο 0.998 x 10 9. Όλοι οι πραγματικοί αριθμοί μεταξύ αυτών έστω ότι στρογγυλοποιούνται στον πλησιέστερο. Είναι προφανές ότι θα προκύψει ένα σφάλμα στρογγυλοποίησης το οποίο θα είναι μεταξύ 0 και 0.005 x 10 9 = 5 x 10 6. Παρατηρείται έτσι ένα πολύ μεγάλο εύρος τιμών για το απόλυτο σφάλμα στρογγυλοποίησης. Για τον λόγο αυτό ίσως έχει πιο πολύ νόημα να αναφέρεται κάποιος στο σχετικό σφάλμα στρογγυλοποίησης. Για έναν πραγματικό αριθμό x που εμφανίζει σφάλμα στρογγυλοποίησης δx, στον δοσμένο υπολογιστή θα ισχύει: x x 3 5 10 (1.4) 15
Εισαγωγή Η σχέση (1.4) μπορεί να γενικευθεί για οποιοδήποτε σύστημα που χρησιμοποιεί βάση b και t bits για τον συντελεστή: t 1 ( t1) x b b b (1.5) x Σε έναν πραγματικό επομένως υπολογιστή που χρησιμοποιεί το δυαδικό σύστημα (b = ), θα ισχύει t. Για μεταβλητές απλής α- κρίβειας, που αφιερώνουν 3 bits για την περιγραφή του συντελεστή t 3 7 θα ισχύει 1.1910. Για μεταβλητές διπλής ακρίβειας, που αφιερώνουν 53 bits για την περιγραφή του συντελεστή θα t 53 16 ισχύει 1.110. Η φυσική σημασία του αριθμού είναι ότι είναι ο ελάχιστος θετικός πραγματικός αριθμός που αν προστεθεί στον αριθμό ένα παράγει ως αποτέλεσμα αριθμό μεγαλύτερο από ένα ή εναλλακτικά είναι ο μέγιστος θετικός πραγματικός αριθμός που αν προστεθεί στον αριθμό ένα παράγει ως αποτέλεσμα αριθμό ίσον με ένα. Προηγουμένως έχει γίνει αναφορά σε απόλυτο και σχετικό σφάλμα. Το πότε θα χρησιμοποιείται το ένα ή το άλλο, εξαρτάται από το σχετικό μέγεθος και των αριθμών που εμπλέκονται. Για παράδειγμα έστω τα ζεύγη των αριθμών (ο πρώτος αριθμός σε κάθε ζεύγος θεωρείται ακριβής) 100000000, 100000001, 0.0000010, 0.0000011. Το πρώτο ζεύγος εμφανίζει απόλυτο σφάλμα 1 και σχετικό σφάλμα 1 10 8. Το δεύτερο ζεύγος εμφανίζει απόλυτο σφάλμα 1 10 7 και 7 110 1 σχετικό σφάλμα 10. Προφανώς μεγαλύτερο πρόβλημα 6 10 υπάρχει στο δεύτερο ζεύγος και όχι στο πρώτο. Προφανώς επίσης αν σε κάποια περίπτωση η ακριβής τιμή είναι μηδενική, τότε δεν μπορεί να χρησιμοποιηθεί το σχετικό σφάλμα. 16
ΚΕΦΑΛΑΙΟ 1 Μια άλλη μέθοδος μέτρησης του σφάλματος κατά τον αριθμητικό υπολογισμό είναι η χρήση της έννοιας των σημαντικών ψηφίων (sigificat figures), που σημαίνει πόσα ψηφία είναι σωστά κατά την δεκαδική αναπαράσταση (συμπεριλαμβάνονται ψηφία ακέραιου και κλασματικού μέρους και αγνοούνται τα μηδενικά στο αριστερό μέρος). Για παράδειγμα, ο αριθμός 33.7 έχει 3 σημαντικά ψηφία και ο αριθμός 0.0110 έχει 4 σημαντικά ψηφία (αγνοούνται τα δύο πρώτα μηδενικά, αλλά δεν αγνοείται το μηδέν στο τέλος του αριθμού). Συγκεκριμένα, με απλή ακρίβεια επιτυγχάνεται προσέγγιση σε 7 περίπου σημαντικά ψηφία, ενώ με διπλή ακρίβεια σε 14-16 σημαντικά ψηφία. Έστω οι δύο αριθμοί του δεκαδικού συστήματος 1345.67 και 0.000134, οι οποίοι είναι σωστοί μέχρι το τελευταίο δεκαδικό ψηφίο (ακρίβεια έξι και τριών αντίστοιχα σημαντικών ψηφίων). Προφανώς το απόλυτο σφάλμα είναι μικρότερο από 0.005 και 0.00000005 αντίστοιχα. Το σχετικό σφάλμα είναι της τάξης 4.05 10 7 και 4.0518 10 4 αντίστοιχα. Ο δεύτερος αριθμός εμφανίζεται πιο ακριβής, αλλά το πρόβλημα σχετίζεται με το τι πράξεις θέλει να κάνει κάποιος με αυτούς τους αριθμούς. Αν τους προσθέσει, τότε το σφάλμα του αθροίσματος καθορίζεται κυρίως από το σφάλμα του πρώτου αριθμού. Αν θελήσει να βρει τους αντίστροφούς τους, τότε αυτοί θα εμφανίζουν ένα απόλυτο σφάλμα της τάξης του 3 10 10 και του 10 αντίστοιχα και ένα σχετικό σφάλμα της τάξης του 4.1 10 6 και του. 10 3 αντίστοιχα. Γενικά, αν x1 x είναι η πρόσθεση με χρήση αριθμητικής κινητής υποδιαστολής, τότε θα ισχύει ότι x x x x err (1.6) 1 1 1 Υποτίθεται ότι τα x1, x αναπαρίστανται σωστά στον υπολογιστή και το σφάλμα υπεισέρχεται κατά την στρογυλλοποίηση του αθροί- 17
Εισαγωγή σματος. Αντίστοιχες εξισώσεις ισχύουν και για τις πράξεις της α- φαίρεσης, του πολλαπλασιασμού και της διαίρεσης. Ιδιότητες αλγεβρικών πράξεων που ισχύουν στα καθαρά μαθηματικά, δεν ισχύουν εν γένει στην αριθμητική ανάλυση (πράξεις με χρήση αριθμητικής κινητής υποδιαστολής). Έτσι ενώ στα καθαρά μαθηματικά ισχύουν 1. abcab c,. abcaba c, 3. abcab c, στην αριθμητική ανάλυση παίζει ρόλο η σειρά των πράξεων. Αυτό μπορεί να φανεί με κατάλληλα παραδείγματα θεωρώντας ότι οι πράξεις γίνονται στον θεωρητικό υπολογιστή που έχει ήδη αναφερθεί. Για την πρώτη σχέση θεωρήστε Τότε, και a b c 0 0 0.45610, 0.1310, 0.18 10. 0.456 10 0.13 10 0 0.18 10 0 a bc 0.45610 0.50010 0.44010 3 a b c 0.45610 0.1310 0 0.1810 0 Για την δεύτερη σχέση θεωρήστε 0 0 0.18 10 0.18 10 0. a b c 1 0 0 0.00 10, 0.6 10, 0.60 10. Τότε, a bc 0.0010 0.0010 0.400 10 1 18
ΚΕΦΑΛΑΙΟ 1 και 0.00 10 1 0.600 10 0 0.00 10 1 0.60 10 0 abac Για την τρίτη σχέση θεωρήστε 1 1 0.10 10 0.10 10 0. a b c Τότε, το αριστερό μέρος θα δώσει 7 7 10 10, 10, 10. a b c 7 7 10 7 3 4 10 10 10 10 10 10 (σωστό) και το δεξιό μέρος θα δώσει 7 7 10 14 10 a b c 10 10 10 10 10 0 (λάθος). 14 Λόγω υποχείλισης 10 0. Έστω τώρα ότι πρέπει να υπολογισθεί το άθροισμα + 1 πραγματικών αριθμών x 1, x,, x, x +1. Ο πιο απλός τρόπος βασίζεται στην χρήση της αναδρομικής σχέσης s s x, i,3,...,, 1, s x (1.7) i i1 i 1 1 Αν βασισθεί κάποιος σε στατιστική ανάλυση του σφάλματος μπορεί να αποδείξει ότι το σφάλμα στρογγυλοποίησης μετά από αθροίσεις E έχει ένα άνω φράγμα όπου x max xi, i 1,,...,, 1 E 3 x (1.8). Αν όλοι οι όροι είναι ίσοι, τότε το σχετικό σφάλμα στρογγυλοποίησης θα έχει ένα άνω φράγμα E S 3 (1.9) 19
Εισαγωγή Η εξίσωση (1.9) φανερώνει ότι το σχετικό σφάλμα θα αυξάνεται γραμμικά ως προς τον αριθμό των όρων που αθροίζονται. Επίσης μπορεί να αποδειχθεί ότι οι πρώτες αθροίσεις συμβάλλουν στο ολικό σφάλμα περισσότερο, από ό,τι οι τελευταίες. Αυτό οδηγεί στο ότι αν πριν την άθροιση γίνει μια ταξινόμηση των όρων σε αύξουσα σειρά μεγέθους, τότε υπάρχει η προσδοκία το σφάλμα να είναι μικρότερο. Εκτός από την αναδρομική σχέση (1.7) για τον υπολογισμό αθροίσματος + 1 όρων, θα μπορούσε κάποιος να ακολουθήσει την εξής μεθοδολογία: 1. Να πάρει όλους τους αριθμούς και να τους χωρίσει σε δυάδες με την επιφύλαξη, αν ο αρχικός αριθμός όρων είναι περιττός, να περισσεύει ένας απλός αριθμός.. Να βρεί όλα τα αθροίσματα των δυάδων και να τα ανεβάσει ένα επίπεδο. Στο ίδιο επίπεδο ανεβάζει τον πιθανό απλό αριθμό του προηγούμενου επίπεδου. 3. Ακολουθεί την μεθοδολογία του βήματος 1 στο νέο επίπεδο. 4. Ακολουθεί την μεθοδολογία του βήματος στο νέο επίπεδο. 5. Ακολουθώντας την ίδια μεθοδολογία αναγκαστικά θα φθάσει σε ένα επίπεδο στο οποίο θα υπάρχει ένας μόνον αριθμός, ο οποίος θα είναι και το ζητούμενο άθροισμα. Με τον τρόπο αυτό υπολογισμού του αθροίσματος μπορεί να αποδειχθεί ότι οι εξισώσεις οι αντίστοιχες με τις (1.8), (1.9) είναι και E log ( ) x (1.10) E log ( ) S (1.11) 0
ΚΕΦΑΛΑΙΟ 1 Επομένως με τον καινούριο τρόπο άθροισης το σφάλμα στρογγυλοποίησης μπορεί να μειωθεί σημαντικά. Επιπλέον δεν παίζει πλέον ρόλο η διάταξη των όρων πριν την άθροιση, που έπαιζε ρόλο κατά τον προηγούμενο τρόπο υπολογισμού του αθροίσματος. Γενικά μιλώντας, ο χρήστης αριθμητικών μεθόδων πρέπει να είναι υποψιασμένος ότι δύο εκφράσεις που είναι αλγεβρικά ταυτόσημες, δεν σημαίνει ότι θα είναι και ίσες μετά τους αριθμητικούς υπολογισμούς σε έναν ηλεκτρονικό υπολογιστή. Γενικά η εκτίμηση του σφάλματος στρογγυλοποίησης και ο τρόπος διάδοσής του μέχρι την λήψη των τελικών αποτελεσμάτων είναι από τα πιο δύσκολα προβλήματα της αριθμητικής ανάλυσης. 1.5 Κατάσταση προβλήματος και αριθμητική ευστάθεια Έστω ότι πρέπει να υπολογισθεί μια βαθμωτή πραγματική συνάρτηση μεταβλητών x 1, x,, x : y f x, x,..., x, x 1 1 όπου στα δεδομένα x 1, x,, x είναι δυνατόν να υπάρχουν σφάλματα στρογγυλοποίησης ε 1, ε,, ε αντίστοιχα. Για τον υπολογισμό της συνάρτησης προφανώς πρέπει να γίνει ένας αριθμός αλγεβρικών πράξεων (αθροίσεις, αφαιρέσεις, πολλαπλασιασμοί, διαιρέσεις, ύ- ψωση σε δύναμη κλπ). Μπορεί να ξεκινήσει κάποιος και να εκτιμήσει το πιθανό σφάλμα στο τελικό αποτέλεσμα, δηλαδή στην τιμή του y, βασιζόμενος στα αρχικά σφάλματα και τα σφάλματα που εισάγονται σε κάθε βήμα υπολογισμών. Η διαδικασία αυτή καλείται προς τα εμπρός ανάλυση σφάλματος (forward error aalysis) και συνήθως οδηγεί σε απαισιόδοξη εκτίμηση σφάλματος, δηλαδή το υπερεκτιμά. O Wilkiso (1994) εισήγαγε την έννοια της προς τα πίσω ανάλυσης σφάλματος (backward error aalysis). Σύμφωνα με αυτήν, αντί να εκτιμάει κάποιος το σφάλμα στο τελικό αποτέλεσμα, εκτι- 1
Εισαγωγή μάει ποιο μπορεί να είναι το σφάλμα στα αρχικά δεδομένα έτσι ώ- στε το παραγόμενο αποτέλεσμα να είναι ακριβές. Επιστρέφοντας στην συνάρτηση, έστω ότι η ακριβής τιμή της συνάρτησης για τα δοσμένα x 1, x,, x είναι * y f x1, x,..., x 1, x και η τιμή της συνάρτησης, όταν υπεισέρχονται σφάλματα στρογγυλοποίησης στα δεδομένα είναι y f x, x,..., x, x. 1 1 1 1 Αν τα σφάλματα στρογγυλοποίησης είναι σχετικά μικρά, τότε σε ό,τι αφορά το απόλυτο σφάλμα θα ισχύει * E y y f και σε ό,τι αφορά το σχετικό σφάλμα θα ισχύει * E y y i i f * * y y i1 xi f xi i (1.1) i1 xi x (1.13) Από την εξίσωση (1.13) φαίνεται ότι είναι δυνατόν ακόμα και αν τα i σχετικά σφάλματα των δεδομένων είναι μικρά, το σχετικό σφάλμα του αποτελέσματος να γίνει μεγάλο αν ένας τουλάχιστον xi f xi f από τους όρους είναι πολύ μεγάλος. Οι αριθμοί, f xi f xi i = 1,, καλούνται αριθμοί κατάστασης (coditio umbers). Αν όλοι οι αριθμοί κατάστασης είναι μικροί, το πρόβλημα χαρακτηρίζεται ως καλής κατάστασης (well-coditioed). Αν ένας τουλάχιστον από τους αριθμούς κατάστασης είναι πολύ μεγάλος, τότε το x i
ΚΕΦΑΛΑΙΟ 1 πρόβλημα χαρακτηρίζεται ως κακής κατάστασης (ill-coditioed). Επομένως για ένα πρόβλημα καλής κατάστασης, μια μικρή μεταβολή στα δεδομένα εισόδου, οδηγεί σε μικρή αλλαγή του τελικού αποτελέσματος. Αντίθετα, για ένα πρόβλημα κακής κατάστασης, μια μικρή μεταβολή στα δεδομένα εισόδου, οδηγεί σε μεγάλη αλλαγή του αποτελέσματος. Προβλήματα κακής κατάστασης θα εμφανιστούν στο βιβλίο στα κεφάλαια επίλυσης αλγεβρικών και διαφορικών εξισώσεων, όπου και θα μελετηθούν πιο αναλυτικά. Ως παράδειγμα μελέτης του αριθμού κατάστασης ενός προβλήματος θα εξετασθεί ο αριθμός κατάστασης που αντιστοιχεί στις μεταβλητές x και y του γραμμικού συστήματος εξισώσεων x ay 1 ax y ως προς την παράμετρο α. Προφανώς υπάρχει αναλυτική λύση η οποία δίνει 1 a 1 1 1 1 1 x a 1 a 1 a y a 1 1 a a 1. a 1 a Οι ζητούμενοι αριθμοί κατάστασης είναι a f f a, όπου f x, f y. Οι αριθμοί κατάστασης που προκύπτουν είναι αντίστοιχα: a a a a a 4a1,. 1a 1a a 1a 3
Εισαγωγή Όταν το α παίρνει τιμές μακριά από τις ρίζες του παρονομαστή, το αντίστοιχο πρόβλημα είναι καλής κατάστασης. Όταν το α παίρνει τιμές κοντά στις ρίζες του παρονομαστή, το αντίστοιχο πρόβλημα είναι κακής κατάστασης. Στην συνέχεια θα μελετηθεί το πρόβλημα της αριθμητικής αστάθειας (umerical istability) με την βοήθεια ενός παραδείγματος. Έστω ότι πρέπει να υπολογισθεί το ολοκλήρωμα x x z x 0 0 I( x) e e z dz, I ( x) e 1, x0 (1.14) για x = 1 και = 0, 1,,. Χρησιμοποιώντας ολοκλήρωση κατά παράγοντας μπορεί να προκύψει η αναδρομική σχέση 1 I 1 ( x) 1 I( x) x, 0,1,,... (1.15) Για x = 1, το ολοκλήρωμα είναι φθίνουσα συνάρτηση του και 1 lim I(1) 0. Επομένως χρησιμοποιώντας ως δεδομένο I0(1) e 1 e 1 και την αναδρομική σχέση I 1 (1) 1 I(1) 1, 0,1,,..., μπορεί να προκύψει το ζητούμενο. Τα αποτελέσματα χρησιμοποιώντας αριθμητική 4, 48 και 96 bits, όπως και η ακριβής λύση για 0,1,,... φαίνονται στον Πίνακα 1.1. 4
ΚΕΦΑΛΑΙΟ 1 Πίνακας 1.1 4-bit 48-bit 96-bit Ακριβής λύση 0 1.71880x10 00 1.718818x10 00 1.718818x10 00 1.718818x10 00 1 7.188190x10-1 7.188183x10-1 7.188183x10-1 7.188183x10-1 4.3656370x10-1 4.3656366x10-1 4.3656366x10-1 4.3656366x10-1 3 3.096910x10-1 3.0969097x10-1 3.0969097x10-1 3.0969097x10-1 4.3876480x10-1.3876388x10-1.3876388x10-1.3876388x10-1 5 1.938380x10-1 1.938194x10-1 1.938194x10-1 1.938194x10-1 6 1.69490x10-1 1.691649x10-1 1.691649x10-1 1.691649x10-1 7 1.406000x10-1 1.4041543x10-1 1.4041543x10-1 1.4041543x10-1 8 1.480160x10-1 1.33347x10-1 1.33347x10-1 1.33347x10-1 9 1.31470x10-1 1.09911x10-1 1.09911x10-1 1.09911x10-1 10.31470x10-1 9.911168x10-9.911183x10-9.911183x10-1 1.7643430x10 +1 8.80618x10-8.8080x10-8.8080x10-14 3.1961050x10 +3 7.0731765x10-7.10980x10-7.10980x10-15 4.7940570x10 +4 6.0976473x10-6.639033x10-6.639033x10-16 7.6704810x10 +5 -.4376433x10-6.7531x10-6.7531x10-17 1.303980x10 +7-1.4143994x10 00 5.863304x10-5.863304x10-0 8.919340x10 +10-1.007549x10 +4 4.9881743x10-4.9881743x10-5 5.6865470x10 +17-6.4376x10 +10 3.9818695x10-3.9938730x10-6 1.478500x10 +19-1.670178x10 +1 3.58607x10-3.840697x10-7 3.9919560x10 +0-4.5094811x10 +13-4.776047x10-3.698831x10-8 1.1177480x10 + -1.66547x10 +15 -.33793x10 00 3.5670457x10-9 3.414680x10 +3-3.6616986x10 +16-6.8388150x10 +1 3.444353x10-30 9.744050x10 +4-1.0985096x10 +18 -.056445x10 +3 3.397601x10 - Το συμπέρασμα είναι ότι το σφάλμα αυξάνεται, καθώς μεγαλώνει το, πάρα πολύ γρήγορα. Στην περίπτωση αυτή η αύξηση του αριθμού των bits μόνο προσωρινά αντιμετωπίζει το πρόβλημα. Από κάποια τιμή του και πάνω το σφάλμα αυξάνεται εξαιρετικά γρήγορα. Για το συγκεκριμένο πρόβλημα, η τιμή αυτή του για 4-bits, 5
Εισαγωγή 48-bits και 96-bits είναι αντίστοιχα 10, 16 και 7. Γιατί συμβαίνει αυτό; Αν ξεκινήσει κάποιος από την αναδρομική σχέση (1.15) και θεωρήσει ότι υπάρχει σφάλμα στρογγυλοποίησης μόνον κατά τον υπολογισμό του Ι 0 (1) και όχι κατά την εφαρμογή της αναδρομικής σχέσης, τότε προκύπτει ότι 1 1 1! 0 1! I (1.16) 0 Το πρόβλημα δηλαδή είναι ότι καθώς αυξάνεται το, το σφάλμα αυξάνεται πάρα πολύ γρήγορα λόγω της μορφής της εξίσωσης (1.16). Αυτή η χωρίς όρια αύξηση του σφάλματος χαρακτηρίζεται ως αριθμητική αστάθεια. Η αστάθεια δεν πηγάζει από την μαθηματική φύση του προβλήματος. Η ακριβής αλγεβρική λύση δεν έχει πρόβλημα αστάθειας. Το πρόβλημα προκλήθηκε από λανθασμένη επιλογή αλγορίθμου, ο οποίος χαρακτηρίζεται και ως ασταθής. Επίσης το πρόβλημα δεν σχετίζεται με τον αριθμό κατάστασης του προβλήματος. Το συγκεκριμένο πρόβλημα είναι καλώς τοποθετημένο (well-posed) και καλής κατάστασης. Ο ορισμός του καλώς τοποθετημένου προβλήματος θα δοθεί παρακάτω. Όταν προκύπτουν τέτοιες περιπτώσεις, το καλύτερο είναι η αναζήτηση αλγορίθμων που έχουν αριθμητική ευστάθεια και επιλύουν το πρόβλημα με την επιθυμητή ακρίβεια. Για παράδειγμα, για το συγκεκριμένο πρόβλημα, αν ξεκινήσει κάποιος από την ίδια αναδρομική σχέση μπορεί να πάρει I (1) 1 1 I(1), 0,1,,... 1 (1.17) Επειδή lim I (1) 0, μπορεί να θεωρήσει ότι για κάποια τιμή του Ι (1) = 0 και να υπολογίσει διαδοχικά τα Ι -1 (1), Ι - (1),, Ι 1 (1), Ι 0 (1) με την βοήθεια της (1.17). Τα παραπάνω εφαρμόσθηκαν για = 6, 11, 1 και 31 και αριθμητική 4-bits. Τα αποτελέσματα εμφανίζονται στον Πίνακα 1.. 6
ΚΕΦΑΛΑΙΟ 1 Πίνακας 1. Ι 6 (1)=0 Ι 11 (1)=0 Ι 1 (1)=0 Ι 31 (1)=0 Ακριβής λύση 0 1.718055x10 0 1.7188x10 0 1.7188x10 0 1.7188x10 0 1.7188x10 0 1 7.180555x10-1 7.18818x10-1 7.18819x10-1 7.18819x10-1 7.18819x10-1 4.361111x10-1 4.365636x10-1 4.365637x10-1 4.365637x10-1 4.365637x10-1 3 3.083333x10-1 3.096910x10-1 3.096910x10-1 3.096910x10-1 3.096910x10-1 4.333333x10-1.387638x10-1.387639x10-1.387639x10-1.387639x10-1 5 1.666667x10-1 1.938191x10-1 1.938194x10-1 1.938194x10-1 1.938194x10-1 6 0.000000 x10 0 1.69149x10-1 1.69165x10-1 1.69165x10-1 1.69165x10-1 7 1.404040x10-1 1.404154x10-1 1.404154x10-1 1.404154x10-1 8 1.333x10-1 1.3335x10-1 1.3335x10-1 1.3335x10-1 9 1.090909x10-1 1.09911x10-1 1.09911x10-1 1.09911x10-1 10 9.090909x10-9.91118x10-9.91118x10-9.91118x10-11 0.000000x10 00 9.0340x10-9.0340x10-9.0340x10-15 6.63903x10-6.63903x10-6.63903x10-16 6.751x10-6.753x10-6.753x10-17 5.86369x10-5.86330x10-5.86330x10-18 5.538847x10-5.539443x10-5.539443x10-19 5.38095x10-5.49409x10-5.49409x10-0 4.761905x10-4.988174x10-4.988174x10-1 0.000000x10 00 4.751660x10-4.751660x10-6 3.840697x10-3.840697x10-7 3.698819x10-3.69883x10-8 3.56696x10-3.567046x10-9 3.440860x10-3.44435x10-30 3.5806x10-3.39760x10 - Στην περίπτωση αυτή, όπως φαίνεται από την σχέση (1.17), το σφάλμα διαιρείται σε κάθε επανάληψη και ο αλγόριθμος είναι ευσταθής. Τα σφάλματα μειώνονται πολύ γρήγορα και λαμβάνονται αποτελέσματα με πολύ καλή ακρίβεια. Π.χ. το Ι 1 (1) υπολογίζεται ξεκινώντας από Ι 11 (1) = 0 με ακρίβεια επτά σημαντικών ψηφίων. 7
ΥΠΟΛΟΓΙΣΤΙΚΟ ΕΡΓΑΣΤΗΡΙΟ 1 Εισαγωγή στο MATLAB Σκοποί Γνωριμία με μερικά βασικά γνωρίσματα του MATLAB. Βασικές εντολές στο MATLAB για δημιουργία γραφικών παραστάσεων. Τα m-αρχεία στο MATLAB Προκαταρκτικά Το MATLAB είναι εμπορικός κώδικας που εγκαθιστά ένα ισχυρό περιβάλλον στον υπολογιστή, στο οποίο κάποιος μπορεί να αντιμετωπίσει πολλά μαθηματικά προβλήματα. Επιλέχθηκε να χρησιμοποιηθεί το MATLAB για την εφαρμογή της θεωρίας και η εξοικείωση μαζί του μπορεί να σας βοηθήσει πολύ σε ό,τι έχει σχέση με προγραμματισμό και αριθμητικές μεθόδους, αλλά και γενικότερα. Οι επόμενες σημειώσεις και ασκήσεις είναι σχεδιασμένες έτσι ώστε να σας οδηγήσουν να γνωρίσετε τις πιο βασικές δυνατότητες του MATLAB. Πέρα από αυτήν την εισαγωγή, καλό είναι να καταφύγετε και σε άλλες πηγές. Για να ξεκινήσει κάποιος, καλό είναι να ξεκινήσει από το τμήμα του Παραρτήματος που αφορά στο MATLAB. Πολύ καλός είναι και ο κόμβος της Math Works στο διαδίκτυο, http://www.mathworks.com/products/educatio/studet_versio/tuto rials/itropage.shtml H Math Works είναι η εταιρεία που διανέμει το MATLAB. Αν γίνει αναζήτηση στο διαδίκτυο με την βοήθεια μιας μηχανής αναζήτησης,
Εισαγωγή π.χ. της "Google.com", με τις λέξεις κλειδιά "MATLAB tutorial" μπορούν να βρεθούν πολλές πληροφορίες. Εφαρμογές Βασικές αριθμητικές πράξεις Για να ξεκινήσετε το MATLAB, απλά κάνετε διπλό κλικ στην εικόνα του MATLAB. Υποτίθεται ότι θα εργασθείτε με την έκδοση 6.5 ή 7. Συνήθως θα δείτε ένα παράθυρο που περιέχει τρία διαφορετικά παράθυρα: τον Χώρο Εργασίας (Workspace) που περιέχει έναν κατάλογο με όλες τις μεταβλητές που χρησιμοποιείτε κάθε φορά που εργάζεστε στο MATLAB, το Ιστορικό Εντολών (Commad History) που περιέχει όλες τις εντολές που έχετε δώσει κάθε φορά που εργάζεστε στο MATLAB και το Παράθυρο Εντολών (Commad Widow). Μπορείτε να τα διαμορφώσετε με πολλούς τρόπους, συμπεριλαμβανομένου του να μπορείτε να κλείνετε κάποια, αλλά συνήθως θα θέλετε να είναι όλα ανοικτά για να μπορείτε να παρακολουθείτε τι ακριβώς συμβαίνει όταν δίνετε διάφορες εντολές. Το MATLAB είναι μια εφαρμογή που λειτουργεί με εντολές, δηλαδή συνήθως γράφετε εντολές μετά το χαρακτηριστικό προτρεπτικό (prompt) ">>" στο Παράθυρο Εντολών. Το MATLAB κατευθύνει την έξοδο της εντολής που δώσατε πίσω στο ίδιο παράθυρο, εκτός εάν του πείτε να την κατευθύνει κάπου αλλού. Προσπαθήστε το εξής: Στο Παράθυρο Εντολών, γράψτε: >> 1 + Το MATLAB θα αποκριθεί γράφοντας: as = 3 30
ΥΠΟΛΟΓΙΣΤΙΚΟ ΕΡΓΑΣΤΗΡΙΟ 1 To MATLAB τοποθετεί το αποτέλεσμα του απλού υπολογισμού σε μια μεταβλητή με το όνομα as και την δείχνει στην οθόνη με την τιμή της. Αν γράψετε, >> as +.5 το MATLAB προσθέτει το 0.5 στην προηγούμενη τιμή που περιεχόταν στην μεταβλητή as, έτσι ώστε τώρα η as έχει καινούρια τιμή. Στο παράθυρο εντολών, θα δείτε να τυπώνεται as = 3.5000 Το MATLAB μπορεί να εκτελεί και άλλες μαθηματικές πράξεις. Για παράδειγμα, γράψτε: >> / 3 Το MATLAB θα αποκριθεί γράφοντας: as = 0.6667 Ως προεπιλογή, το MATLAB αποθηκεύει αριθμούς σε μια λέξη των 3 bit (8-byte, διπλή ακρίβεια), που θα σας δώσει προσεγγιστικά ακρίβεια 13-14 σημαντικών ψηφίων. Υπάρχουν διάφορες τυποποιήσεις που μπορεί να χρησιμοποιήσει το MATLAB για να γράψει αυτούς τους αριθμούς. Για παράδειγμα, γράψτε την εντολή, >> format log Τώρα στις επόμενες εξόδους, το MATLAB θα δείχνει όλα τα σημαντικά ψηφία. Γράψτε πάλι >> /3 και θα δείτε: as = 0.66666666666667 Μπορείτε να δείτε όλες τις δυνατές τυποποιήσεις εξόδου χρησιμοποιώντας την εντολή help format. Πράγματι, γράφοντας help ή help 31