Professional Documents
Culture Documents
Επιστημονικός Υπολογισμός I
Περιεχόμενα
1
ΠΕΡΙΕΧΟΜΕΝΑ
Το μάθημα του Επιστημονικού Υπολογισμού είναι το πλέον απαιτητικό μάθημα του CEID, απαντώντας σε κρίσιμα
ερωτήματα της Επιστήμης των Υπολογιστών, όπως:
• Ποιο είναι το πρόβλημα που πρέπει να επιλύσω και πόσο δύσκολο είναι?
• Μπορεί να λυθεί ως έχει ή απαιτείται κάποια προσέγγιση αυτού του προβλήματος?
• Τι αλγόριθμο θα χρησιμοποιήσω και πώς μπορώ να τον βελτιστοποιήσω ώστε να λάβω ασφαλέστερα αποτελέ-
σματα και με τον πιο γρήγορο τρόπο?
Επομένως χρήσιμο είναι να υπάρχει ένα background ενασχόλησης με προγραμματισμό και με τα μαθήματα της Γραμ-
μικής Άλγεβρας, της Αριθμητικής Ανάλυσης και της Αρχιτεκτονικής.
2
ΚΕΦΑΛΑΙΟ 1
1.1 Εισαγωγικά
Στον ΕΥ µας ενδιαφέρουν ο σχεδιασμός, η ανάπτυξη, και η χρήση αποδοτικών υπολογιστικών εργαλείων που βοη-
θούν στην πρακτική επίλυση των μαθηματικών μοντέλων της επιστήμης και της τεχνολογίας. Τα κύρια κριτήρια που
χρησιμοποιούνται για την αξιολόγηση των εργαλείων του επιστημονικού υπολογισμού είναι:
1. Ποιο είναι το πρόβλημα που πρέπει να επιλύσω και πόσο δύσκολο είναι?
Υπολογιστικοί πυρήνες: Blocks του προγράμματος στα οποία αναλώνεται το μεγαλύτερο μέρος εκτέλεσης του, για
παράδειγμα μια επαναληπτική δομή τριών γραμμών ανάμεσα σε εκατοντάδες γραμμές κώδικα, που εκτελείται για 106
φορές.
Υπολογιστικό μοντέλο με ιεραρχία μνήμης είναι αυτό στο οποίο αναφέρεται η θεωρία μας και αποτελείται από:
• Επεξεργαστή
• Καταχωρητές
• Κρυφή μνήμη
• Κεντρική μνήμη
• Ο επεξεργαστής αποκτά πρόσβαση στα δεδομένα αυτά με απλές εντολές φόρτωσης (load) και αποθήκευσης
(store).
• Για να μπορέσει να αξιοποιηθεί ένα δεδομένο που βρίσκεται στην κύρια μνήμη θα πρέπει να μεταφερθεί στους
καταχωρητές σε χρόνο τμετ .
3
ΚΕΦΑΛΑΙΟ 1. ΤΑΧΥΤΗΤΑ ΚΑΙ ΑΠΟΔΟΣΗ ΑΡΙΘΜΗΤΙΚΩΝ ΥΠΟΛΟΓΙΣΜΩΝ
• Όταν ένα δεδομένο βρίσκεται στην κρυφή μνήμη τότε ο χρόνος που απαιτείται για να αξιοποιηθεί είναι πολύ
μικρότερος από τμετ .
• Με το πέρας της εκτέλεσης του προγράμματος τα αποτελέσματα θα πρέπει να αποθηκευτούν στην κύρια μνήμη.
Φmin : Ο ελάχιστος αριθμός μεταφορών που απαιτούνται για την εκτέλεση ενός προγράμματος, κάτι που προϋποθέτει
επαρκή μνήμη.
Φmin
µmin : Μετρική απόδοσης, που ισούται με τον λόγο των ελάχιστων μεταφορών προς τις αριθμητικές πράξεις, Ω .
Ο χρόνος λοιπόν που απαιτείται για την υλοποίηση μιας διαδικασίας διακρίνεται σε χρόνο που απαιτείται για την εκτέ-
λεση των πράξεων ταρθ και στον χρόνο που απαιτείται για τις μεταφορές τμετ .
Συμβολισμοί : μικρά λατινικά γράμματα θα αναφέρονται σε διανύσματα (x, y, z...), μικρά ελληνικά σε βαθμωτούς (σ, κ...) και κεφαλαία λατινικά σε
μητρώα (A, B, C...) ενώ T θα είναι ο χρόνος της κάθε πράξης.
• Εξωτερικό γινόμενο
• Μητρώο ∗ Διάνυσμα (MV)
Από τον παραπάνω πίνακα φαίνεται πως οι πιο ”φτηνές” υλοποιήσεις επιτυγχάνονται με BLAS-1 και άρα τις προτιμάμε
στην περίπτωση που έχουμε άπειρη μνήμη και μας ενδιαφέρει μόνο το υπολογιστικό κόστος, ενώ όταν υπάρχει περιο-
ρισμός μνήμης (κάτι που προφανώς έρχεται πιο κοντά στα σημερινά υπολογιστικά συστήματα) τότε προτιμάμε τις πιο
αποδοτικές πράξεις που είναι οι BLAS-3 (αυξημένη τοπικότητα).
4
ΚΕΦΑΛΑΙΟ 1. ΤΑΧΥΤΗΤΑ ΚΑΙ ΑΠΟΔΟΣΗ ΑΡΙΘΜΗΤΙΚΩΝ ΥΠΟΛΟΓΙΣΜΩΝ
for i=n-r+1:n
s = s + x(i);
end
Όταν έχουμε απεριόριστη (αλλά και πιο ακριβή παράλληλα) μνήμη O(n2 ) μπορούμε άμεσα να φορτώνουμε όλα τα
δεδομένα μιας πράξης, χωρίς να προβληματιζόμαστε για την υλοποίηση. Το ερώτημα είναι αν την ίδια αυτή πράξη
μπορούμε να την υλοποιήσουμε με μικρότερης τάξης μνήμη (O(n) ή O(1) ) και να πετύχουμε και πάλι τις ίδιες ελάχιστες
μεταφορές. Προφανώς τότε θα προτιμήσουμε την μικρότερη και οικονομικότερη μνήμη.
1.7 ΖΗΤΟΥΜΕΝΑ
Να υπολογίζουμε το κόστος σε μεταφορές και πράξεις μιας αριθμητικής παράστασης. Εννοείται πρέπει να βρίσκουμε
πρώτα μια βέλτιστη μορφή αυτής της παράστασης, έτσι ώστε να χρειάζεται τις λιγότερες δυνατές πράξεις (και άρα
χρόνο) για να υλοποιηθεί.
Για παράδειγμα, γιατί να περιμένω την MATLAB να μου υλοποιήσει την πράξη Ak x σε μία ώρα ενώ με την κατάλληλη
υλοποίηση μπορώ να έχω το ίδιο αποτέλεσμα σε 5 λεπτά?
Πώς θα μπορούσα να υλοποιήσω έναν κώδικα με for που έχει default βήμα = 1 , με ένα άλλο μεγαλύτερο βήμα (ξετύ-
λιγμα βρόχου);
Μου δίνεται μια αριθμητική πράξη και σκοπός μου είναι βρω την μικρότερη δυνατή κρυφή μνήμη που μπορεί να υλο-
ποιήσει την πράξη αυτή με τις ελάχιστες μεταφορές (Φ
Φmin ).
5
ΚΕΦΑΛΑΙΟ 1. ΤΑΧΥΤΗΤΑ ΚΑΙ ΑΠΟΔΟΣΗ ΑΡΙΘΜΗΤΙΚΩΝ ΥΠΟΛΟΓΙΣΜΩΝ
1.8 ΑΠΑΝΤΗΣΕΙΣ
Σκοπός μας λοιπόν είναι όχι απλά να υπολογίζουμε το κόστος μιας αριθμητικής παράστασης σε πράξεις (Ω), αλλά να
βρίσκουμε τον τρόπο να βελτιστοποιούμε το ζητούμενο και έπειτα να υπολογίζουμε το βελτιωμένο Ω (οι μεταφορές
πολύ σπάνια μεταβάλλονται ανάλογα με την υλοποίηση).
Για τον λόγο αυτό είναι προτιμότερο να αναλύουμε πρώτα αυτό που μας δίνεται : βγάζουμε παρενθέσεις (επιμεριστική
ιδιότητα), κατεβάζουμε δυνάμεις (πχ An = A ∗ A ∗ ... ∗ A ∗ A), ενώ σε περίπτωση που μας δίνεται κώδικας πριν από
αυτά πρέπει να βρίσκουμε την έξοδο, να παράγουμε εμείς δηλαδή την αριθμητική παράσταση προς επίλυση.
Προτεραιότητα πράξεων δίνουμε με παρενθέσεις, ενώ χωρίς αυτές οι πράξεις γίνονται σειριακά από αριστερά προς τα
δεξιά και με τις γνωστές προτεραιότητες, δηλαδή πρώτα δυνάμεις, πολλαπλασιασμός, πρόσθεση/αφαίρεση...
Τι πρέπει να επιδιώκουμε : πιο οικονομικές πράξεις, όπως το εσωτερικό γινόμενο π.χ. (T (xy T x) >> T (x(y T x))) και
πράξεις μεταξύ βαθμωτών (Tαxσ > Tασx ), ενώ για πράξεις που επαναλαμβάνονται μπορούμε να χρησιμοποιούμε πολ-
λαπλασιασμό/εκθέτη π.χ. T ((x + y) + (x + y)) > T (2 ∗ (x + y)) και (x ∗ x ∗ x) > T (x3 ), αφού η ύψωση βαθμωτού
σε δύναμη θεωρείται μια πράξη ).
Τι πρέπει να αποφεύγουμε : τις ”ακριβές” πράξεις με χαρακτηριστικότερες την ΜΜ και το εξωτερικό γινόμενο καθώς
και πράξεις με το ταυτοτικό μητρώο (δηλαδή αχρείαστες πράξεις με μηδενικά).
6
ΚΕΦΑΛΑΙΟ 1. ΤΑΧΥΤΗΤΑ ΚΑΙ ΑΠΟΔΟΣΗ ΑΡΙΘΜΗΤΙΚΩΝ ΥΠΟΛΟΓΙΣΜΩΝ
3. Να τροποποιήσετε τον παρακάτω βρόχο ώστε ο υπολογισμός να χρησιμοποιεί «ξετύλιγμα βρόχου» με βήμα 5.
Ο νέος κώδικας πρέπει να λειτουργεί ορθά ανεξάρτητα από το (μη αρνητικό) μέγεθος του n. s=0.0; for j=1:n ,
s=s+x(j)*y(j) ; end
(Εισάγοντας στην Matlab το μητρώο μας επιστρέφονται δύο νέα μητρώα ίδιας διάστασης με τον , τα L και U . To
3
κόστος της LU ανέρχεται σε 2n3 πράξεις).
5. Στο υπολογιστικό σύστημα που χρησιμοποιούμε στο μάθημα και για την πράξη πολλαπλασιασμού μητρώου n×n
με διάνυσμα, το Φmin δεν είναι εφικτό εκτός αν διαθέτουμε τουλάχιστον O(n2 ) θέσεις α.κ.υ. σε κρυφή μνήμη και
καταχωρητές. (Σ/Λ)
9. Δίνονται x, y ∈ Rn , s θετικός ακέραιος και αρχικοποιημένος A κατάλληλης διάστασης και θέλουμε να υπολο-
γίσουμε το B = A + xT (xy T )s y.
a) Να γράψετε τις εντολές που υλοποιούν τα παραπάνω αποκλειστικά με πράξεις BLAS-2 και να βρείτε τα Ω,
Φmin .
b) Να κάνετε το ίδιο με BLAS-1.
c) Ποιο περιμένετε να είναι πιο γρήγορο και γιατί;
10. Έστω ότι γνωρίζετε το μέγεθος δύο διανυσμάτων (1 : AM ), (1 : AM ) και ότι είναι ίσο με το ΑΜ σας. Να
γράψετε τις εντολές για να υπολογιστεί σωστά το εσωτερικό τους γινόμενο με ξετύλιγμα βρόχου βάθους ρ + 3 ,
όπου ρ είναι το ακέραιο υπόλοιπο της διαίρεσης του τελευταίου ψηφίου του ΑΜ σας με το 3.
7
ΚΕΦΑΛΑΙΟ 2
ΑΡΙΘΜΗΤΙΚΗ ΚΙΝΗΤΗΣ
ΥΠΟΔΙΑΣΤΟΛΗΣ ΚΑΙ ΣΦΑΛΜΑΤΑ
ΥΠΟΛΟΓΙΣΜΩΝ
y = ±m ∗ β E
όπου m η ουρά , β η βάση του συστήματος (συνήθως 2) και Ε o εκθέτης.
Κανονικοποίηση Α.Κ.Υ. : Επειδή για κάθε αριθμό μπορούν να υπάρχουν πολλές αναπαραστάσεις, με την κανονικοποί-
ηση απαιτώ το πρώτο bit να είναι 1.
Τεχνική κρυμμένου bit: Αφού γνωρίζω πως το πρώτο bit είναι 1, το κρύβω και έτσι κερδίζω μια θέση bit.
Υποκανονικοποιημένοι Α.Κ.Υ. : Οι αριθμοί εκείνοι που αρχίζουν με 0. Δεν υποστηρίζουν όλα τα συστήματα υποκανο-
νικοποίηση.
Ειδικοί αριθμοί:
Εκθέτης: Με 8 bits μπορώ να κατασκευάσω 28 εκθέτες. Επειδή όμως χρειάζομαι και αρνητικούς το διάστημα σπάει
σε -127 έως 128 για την μονή ακρίβεια και σε -1023 έως 1024 για την διπλή ακρίβεια (συμπεριλαμβανομένου και του
0νικού εκθέτη).
Για μονή ακρίβεια οι εκθέτες από -126 έως 127 χρησιμοποιούνται για κανονικοποιημένους αριθμούς , ο -127 για υπο-
κανονικοποιημένους και ο 128 για ειδικούς αριθμούς.
Ομοίως για διπλή ακρίβεια οι εκθέτες από -1022 έως 1023 χρησιμοποιούνται για κανονικοποιημένους αριθμούς , ο -
1023 για υποκανονικοποιημένους και ο 1024 για ειδικούς αριθμούς.
8
ΚΕΦΑΛΑΙΟ 2. ΑΡΙΘΜΗΤΙΚΗ ΚΙΝΗΤΗΣ ΥΠΟΔΙΑΣΤΟΛΗΣ ΚΑΙ ΣΦΑΛΜΑΤΑ ΥΠΟΛΟΓΙΣΜΩΝ
Πόλωση εκθέτη: Για τον εκθέτη δεν προβλέπεται bit προσήμου, αν και έχουμε και αρνητικούς εκθέτες. Για τον λόγο
αυτό κάθε φορά που εισέρχεται στην μνήμη ένας εκθέτης προστίθεται αυτόματα το 127(ΜΑ) και 1023(ΔΑ) έτσι ώστε
να είναι πάντα θετικός, ενώ όταν χρησιμοποιηθεί πάλι αυτός ο εκθέτης αφαιρείται η αντίστοιχη πόλωση.
realmax: O μέγιστος θετικός κανονικοποιημένος α.κ.υ. που μπορεί να αναπαραστήσει το σύστημα. Οτιδήποτε πέρα
από αυτόν τον αριθμό επιστρέφει Inf (εκτός και αν χρησιμοποιείται εκτεταμένη ακρίβεια).
realmin: O ελάχιστος θετικός κανονικοποιημένος α.κ.υ. που μπορεί να αναπαραστήσει το σύστημα. Οτιδήποτε μικρό-
τερο από αυτόν τον αριθμό επιστρέφει 0 (εκτός και αν χρησιμοποιείται υποκανονικοποίηση).
Έψιλον μηχανής: Η απόσταση από τον 1 έως τον αμέσως επόμενο α.κ.υ. και μόνο αυτή: eps = 21−t
2.2 ΣΦΑΛΜΑΤΑ
Γιατί συμβαίνουν σφάλματα στον ΕΥ?
Γιατί λόγω περιορισμένης ακρίβειας , όταν χρειάζεται να αναπαρασταθεί ένας αριθμός από τον R στον F (A.K.Y.)
, πολύ πιθανό να στρογγυλοποιηθεί σε κάποια άλλη τιμή και να εισαχθεί ένα σφάλμα |δ| |δ|. Επομένως ο x του R
πλέον έχει γίνει x∗ = x(1 + δ1 ) και ομοίως ο y του R πλέον έχει γίνει y ∗ = y(1 + δ2 )).
Γιατί όταν έχουν αναπαρασταθεί όλοι οι αριθμοί από τον R στον F , ακολουθούν πράξεις που τα αποτελέσματα
τους θα χρειαστεί να στρογγυλοποιηθούν και αυτά. Επομένως ο x + y του R πλέον γίνεται (x∗ + y∗ )(1 + δ)
δ).
Χάριν απλότητας συνήθως θεωρούμε πως όλοι οι αριθμοί που χρησιμοποιούμε είναι ήδη α.κ.υ. , δηλαδή έχουν ήδη υπο-
στεί στρογγυλοποίηση και πλέον μας απασχολούν μόνο τα σφάλματα των πράξεων.
Σχεδόν όλες οι πράξεις που συμβαίνουν σε αριθμητική κινητής υποδιαστολής παράγουν σφάλματα.
Κανόνας ακριβούς στρογγύλευσης: Το αποτέλεσμα της πράξης στο σύστημα είναι σαν να εκτελείται η πράξη ακριβώς
στον R και μετά να στρογγυλοποιείται το αποτέλεσμα.
Είδη στρογγύλευσης: Προς πλησιέστερο και προς ζυγό, προς ±Ιnf , προς 0...
Μονάδα στρογγύλευσης: Ποιο είναι το μέγιστο σφάλμα που μπορεί να υπάρξει? Εξαρτάται από την μέθοδο στρογ-
γύλευσης. Στην συνηθέστερη περίπτωση της στρογγύλευσης προς τον πλησιέστερο, ισούται με το μισό του έψιλον
μηχανής, δηλαδή :
u= eps
2 = 2−t
Επομένως και το σφάλμα δ που προκύπτει (θετικό ή αρνητικό) φράζεται από αυτήν την ποσότητα :
|δ| ≤ u
Τις περισσότερες φορές λόγω των σφαλμάτων και της μετάδοσης τους, προκύπτουν γινόμενα σφαλμάτων τα οποία
φράζονται ως :
9
ΚΕΦΑΛΑΙΟ 2. ΑΡΙΘΜΗΤΙΚΗ ΚΙΝΗΤΗΣ ΥΠΟΔΙΑΣΤΟΛΗΣ ΚΑΙ ΣΦΑΛΜΑΤΑ ΥΠΟΛΟΓΙΣΜΩΝ
FMA: Όταν μας δίνεται η δυνατότητα χρήσης της αρχιτεκτονικής FMA τότε για την πράξη της πρόσθεσης και του
πολλαπλασιασμού θα έχω ένα μόνο σφάλμα (αντί για δύο), δηλαδή :
f l((x + y) ∗ z) = (x + y) ∗ z ∗ (1 + δ)
Τα σφάλματα δεν μπορούμε να τα υπολογίσουμε ποτέ ακριβώς (αλλιώς δεν θα είχαμε..)! Το μόνο που μπορούμε να
κάνουμε είναι να τα φράζουμε ως προς μια γνωστή ποσότητα.
Απόλυτο σφάλμα : |x − x∗ |
|x−x∗ |
Σχετικό σφάλμα : |x|
Συμβολισμοί :
f (x) : η εκτέλεση της πράξης σε αριθμητική άπειρης ακρίβειας, δηλαδή χωρίς σφάλμα.
ή
|fprog (x)−f (x)|
Ε.Σ.Σ = |f (x)| , για το σχετικό
Στο πρώτο ερώτημα απαντάει ο δείκτης κατάστασης προβλήματος, ενώ στο δεύτερο ο δείκτης κατάστασης αλγορίθμου
ή αλλιώς το πίσω σφάλμα.
10
ΚΕΦΑΛΑΙΟ 2. ΑΡΙΘΜΗΤΙΚΗ ΚΙΝΗΤΗΣ ΥΠΟΔΙΑΣΤΟΛΗΣ ΚΑΙ ΣΦΑΛΜΑΤΑ ΥΠΟΛΟΓΙΣΜΩΝ
Ψάχνω λοιπόν να βρω μια νέα είσοδο x∗ η οποία να είναι κοντά στην θεωρητική είσοδο x, έτσι ώστε αν αυτή υλοποιηθεί
σε αριθμητική άπειρης ακρίβειας (f (x∗ )) να είναι ίση με το υπολογισμένο αποτέλεσμα (fprog (x)).
Όταν γνωρίζω πως ένας αλγόριθμος είναι πίσω ευσταθής τότε το πίσω σφάλμα φράζεται από την μονάδα στρογγύλευ-
σης u.
λmax
ενώ ο δείκτης κατάστασης ενός συμμετρικού μητρώου είναι ο λόγος των ιδιοτιμών: λmin
Ανακεφαλαιώνοντας λοιπόν επειδή πολλές φορές είναι δύσκολο να υπολογιστεί απευθείας το εμπρός σφάλμα , το
πρόβλημα αυτό σπάει σε δύο υποπροβλήματα: τον δείκτη κατάστασης και το πίσω σφάλμα και καταλήγουμε στον πιο
σημαντικό τύπο του κεφαλαίου:
2.6 ΖΗΤΟΥΜΕΝΑ
Ασκήσεις και ερωτήσεις κατανόησης πάνω στην αριθμητική κινητής υποδιαστολής.
Μελέτη ως προς την εμπρός και πίσω ευστάθεια καθώς και εύρεση του δείκτη κατάστασης.
11
ΚΕΦΑΛΑΙΟ 2. ΑΡΙΘΜΗΤΙΚΗ ΚΙΝΗΤΗΣ ΥΠΟΔΙΑΣΤΟΛΗΣ ΚΑΙ ΣΦΑΛΜΑΤΑ ΥΠΟΛΟΓΙΣΜΩΝ
2.7 ΑΠΑΝΤΗΣΕΙΣ
Πράξεις με α.κ.υ.: Τα πάντα είναι θέμα εκθετών! Στον πολλαπλασιασμό δεν υπάρχει πρόβλημα. Στην πρόσθεση όμως,
για να μπορούν να προστεθούν δύο αριθμοί θα πρέπει να ”κανονικοποιούμε” τους εκθέτες τους. Δηλαδή, να εξισώ-
νουμε τον μικρό με τον μεγαλύτερο εκθέτη. Για να το πετύχουμε αυτό θα πρέπει να πολλαπλασιάζουμε το εκθετικό
μέρος συνέχεια με το 2 και να διαιρούμε ταυτόχρονα την ουρά με το 2. Διαίρεση της ουράς με το 2 σημαίνει πως η
υποδιαστολή ολισθαίνει προς τα αριστερά. Έπειτα ακολουθεί η πράξη μεταξύ των α.κ.υ...
Παράλληλα πρέπει να λαμβάνουμε υπόψη το περιβάλλον στο οποίο βρισκόμαστε. Όταν δεν υποστηρίζεται υποκανο-
νικοποίηση, τότε οποιοδήποτε αποτέλεσμα προκύψει στο διάστημα (0, realmin) θα επιστρέψει 0. Ομοίως όταν δεν
υποστηρίζεται εκτεταμένη ακρίβεια τότε επιστρέφεται Inf. Η MATLAB υποστηρίζει υποκανονικοποίηση και όχι εκτε-
ταμένη ακρίβεια.
Για να μπορούμε πιο εύκολα να υπολογίζουμε την μετάδοση σφάλματος (για την πράξη της πρόσθεσης), αρκεί να απα-
ντάμε στο ερώτημα: ”σε πόσες πράξεις συμμετέχει ένας όρος;”. Αυτός θα είναι και ο δείκτης του ”θ”.
Η πράξη πρόσθεσης και πολλαπλασιασμού είναι τελείως διαφορετική όσον αφορά την ανάλυση σφάλματος! Στην πρό-
σθεση όλοι οι όροι που συμμετέχουν φορτώνονται με σφάλμα, ενώ στον πολλαπλασιασμό αρκεί να τον φορτωθεί μόνο
ένας (συνήθως).
Εμπρός Σφάλμα : Αρχικά κάνω μετάδοση σφάλματος (fprog (x)) και έπειτα θέλω να μελετήσω πόσο απέχει η fprog (x)
από την f (x). Συνήθως χρησιμοποιώ το εμπρός σχετικό σφάλμα.
Σκοπός μου πάντα, είναι να φράξω το σφάλμα. Για να γίνει όμως αυτό πρέπει να απαλείφω με κάποιο τρόπο τους άγνω-
στους όρους (τα δεδομένα δηλαδή), έτσι ώστε να μένουν μόνο μόνο δ και θ , τα οποία και μπορώ να φράξω. Συνήθως
αυτό το πετυχαίνω με το να φορτώνω όλους τους όρους με το μέγιστο σφάλμα, ώστε να βγαίνει κοινός παράγοντας
και εφόσον μπορώ να απαλείψω αριθμητή και παρανομαστή, τότε μπορώ να φράξω.
Εφόσον λοιπόν οι όροι αυτοί φραχτούν χαμηλά, δηλαδή βάσει του u ή του γn τότε οδηγούμαι σε Εμπρός Ευστάθεια.
Πίσω Σφάλμα : Ξεκινάει από εκεί που τελειώνει το εμπρός σφάλμα. Έπειτα παίρνουμε το σφάλμα της εξόδου και το
”πετάμε” στην είσοδο. Πολύ σημαντικό είναι να ξέρουμε να αναγνωρίσουμε την είσοδο/δεδομένα!
Εφόσον διαλέξουμε μια νέα είσοδο x∗ για να πετύχουμε f (x∗ ) = fprog (x) , θα πρέπει να επαληθεύουμε πάντα την
τελευταία σχέση σε περίπτωση που έχει γίνει λάθος. Τέλος υπολογίζουμε το φράγμα του πίσω σφάλματος για κάθε
δεδομένο ξεχωριστά και το τελικό πίσω σφάλμα θα είναι η μεγαλύτερη τιμή.
12
ΚΕΦΑΛΑΙΟ 2. ΑΡΙΘΜΗΤΙΚΗ ΚΙΝΗΤΗΣ ΥΠΟΔΙΑΣΤΟΛΗΣ ΚΑΙ ΣΦΑΛΜΑΤΑ ΥΠΟΛΟΓΙΣΜΩΝ
2. Αν πρέπει να συγκρίνουμε την επίδοση δύο αλγορίθμων σε ένα υπολογιστικό σύστημα, τότε ο αλγόριθμος που
εκτελεί περισσότερες πράξεις πετυχαίνει περισσότερα Mflops/sec. ( Σ / Λ )
3. Αν γενικά ο δείκτης κατάστασης ενός προβλήματος είναι μικρός, τότε το υπολογισμένο αποτέλεσμα θα είναι κο-
ντά στο αποτέλεσμα που θα παίρναμε αν χρησιμοποιούσαμε αριθμητική άπειρης ακρίβειας. ( Σ / Λ )
4. Αν στο σύστημα α.κ.υ. ΙΕΕΕ επιλέξουμε στρογγύλευση προς το μεγαλύτερο, τότε θα αλλάξει το eps. ( Σ / Λ )
√
x+1−1
5. Δίνεται η συνάρτηση f (x) = x . Από τα μαθηματικά μπορείτε να επαληθεύσετε ότι το lim (f (x)) = 21 .
x→0
9. Για κάθε ένα από τα παρακάτω μητρώα να εξηγήσετε αν έχουν καλό ή κακό δείκτη κατάστασης.
a) [1010 0; 0 10−10 ]
b) [1010 0; 0 1010 ]
c) [10−10 0; 0 10−10 ]
d) [1 2; 2 4]
10. Δίνονται x, y ∈ R4 . Υποθέτουμε ότι όλα τα στοιχεία τους είναι μη αρνητικοί α.κ.υ.. ‘Εστω ο υπολογισμός:
s = 0; f or i = 1 : 4, s = s + x(i) ∗ y(i); end
13
ΚΕΦΑΛΑΙΟ 2. ΑΡΙΘΜΗΤΙΚΗ ΚΙΝΗΤΗΣ ΥΠΟΔΙΑΣΤΟΛΗΣ ΚΑΙ ΣΦΑΛΜΑΤΑ ΥΠΟΛΟΓΙΣΜΩΝ
11. Μας δίνονται α.κ.υ. και ένας αλγόριθμος για να τους αθροίσουμε. Να εξηγήσετε ποιοί από τους παρακάτω ισχυ-
ρισμούς είναι σωστοί και ποιοί λάθος:
a) Αν αλλάξουμε τον αλγόριθμο άθροισης, μπορεί να αλλάξουν το πίσω σφάλμα και το εμπρός σφάλμα. ( Σ /
Λ)
b) Αν γνωρίζουμε τους α.κ.υ. και τον αλγόριθμο άθροισης μπορούμε να υπολογίσουμε το ακριβές εμπρός
σφάλμα. ( Σ / Λ )
c) Αν οι αριθμοί είναι ομόσημοι, ένας καλός τρόπος άθροισης είναι από το μικρότερο στο μεγαλύτερο. (Σ / Λ)
12. Για την άθροιση των στοιχείων α.κ.υ. σε ένα διάνυσμα x διάστασης 8, χρησιμοποιούμε αλγόριθμο ”δέντρου” ,
δηλαδή υπολογίζουμε το αποτέλεσμα ως s = [((ξ1 + ξ2 ) + (ξ3 + ξ4 )) + ((ξ5 + ξ6 ) + (ξ7 + ξ8 ))].
Να υπολογίσετε το καλύτερο άνω φράγμα που μπορείτε για το πίσω σφάλμα του αλγορίθμου.
14. Στην ΙΕΕΕ πόσοι α.κ.υ. διπλής ακρίβειας περιέχονται μεταξύ δύο συνεχόμενων α.κ.υ. μονής;
15. Να ορίσετε με σαφήνεια τι σημαίνει πίσω ευστάθεια στον υπολογισμό της τιμής μιας συνάρτησης και να εξη-
γήσετε πώς, αν αποδείξουμε την πίσω ευστάθεια ενός αλγορίθμου, μπορούμε να αναγάγουμε την εύρεση της
απόστασης του f (x) από το υπολογισμένο fprog (x) σε ένα πρόβλημα διαταραχών.
Απάντηση: Αν ο υπολογισμός είναι πίσω ευσταθής, τότε μπορούμε να βρούμε διάνυσμα έστω xprog ∈ R , που
είναι κοντά στο x, τέτοιο ώστε f (xprog ) = fprog (x), δηλαδή ο υπολογισμός της συνάρτησης με το συγκεκρι-
μένο αλγόριθμο σε α.κ.υ. δίνει το ίδιο ακριβώς αποτέλεσμα με τον υπολογισμό της συνάρτησης στο xprog , με
αριθμητική άπειρης ακρίβειας, δηλάδη ∥f (x) − fprog (x)∥ = ∥f (x) − f (xprog )∥ , επομένως η απόσταση των δύο
θα είναι ίση με την απόσταση της τιμής του f στο x από την τιμή του f σε ένα κοντινό σημείο xprog και η μελέτη
της, εφόσον το x είναι κοντά στο xprog αντιστοιχεί σε πρόβλημα διαταραχών.
16. Γενικά, αν ένας αλγόριθμος είναι πίσω σταθερός, τότε μικρές αλλαγές στα στοιχεία εισόδου του αλγορίθμου οδη-
γούν κατ’ ανάγκη σε μικρές αλλαγές στο υπολογισμένο αποτέλεσμα. ( Σ / Λ )
17. Γενικά, αν στο μοντέλο ΙΕΕΕ στρογγυλεύσουμε έναν αριθμό προς τον πλησιέστερο α.κ.υ. και µ είναι η μονάδα
στρογγύλευσης, ισχύει ότι f l(x) = x(1 + δ) όπου δ ≤ µ . ( Σ / Λ )
18. Έστω ότι χρησιμοποιούμε αριθμητική κινητής υποδιαστολής διπλής ακρίβειας. Να μετρήσετε πόσοι υποκανονι-
κοποιημένοι α.κ.υ. μπορούν να αναπαρασταθούν.
19. Ο δείκτης κατάστασης ενός μητρώου ως προς την ευκλείδια νόρμα είναι άμεσα υπολογίσιμος από τις ιδιοτιμές
του μητρώου. ( Σ / Λ )
20. Θέλουμε να χρησιμοποιήσουμε πίσω ανάλυση σφάλματος για να υπολογίσουμε φράγμα για το εμπρός σχετικό
σφάλμα στον υπολογισμό του τετραγώνου της ευκλείδιας νόρμας με τον παρακάτω αλγόριθμο:
s = x(1) ∗ x(1); f or j = 2 : n, s = s + x(j) ∗ x(j); end
a) Να υπολογίσετε το δείκτη κατάστασης του προβλήματος και μια καλή εκτίμηση για το πίσω σφάλμα του
αλγορίθμου.
b) Να υπολογίσετε καλό φράγμα για το εμπρός σχετικό σφάλμα στο υπολογισμένο αποτέλεσμα s.
14
ΚΕΦΑΛΑΙΟ 2. ΑΡΙΘΜΗΤΙΚΗ ΚΙΝΗΤΗΣ ΥΠΟΔΙΑΣΤΟΛΗΣ ΚΑΙ ΣΦΑΛΜΑΤΑ ΥΠΟΛΟΓΙΣΜΩΝ
21. Εάν ένα μητρώο έχει δείκτη κατάστασης 106 και η υπολογισμένη λύση σε σύστημα α.κ.υ. ΙΕΕΕ διπλής ακρίβειας
∗
(μονάδα στρογγύλευσης) του συστήματος Ax = b με QR είναι x∗ τότε ∥x−x∥x∥
∥
≤ 10 − ρ. Ποιά είναι η τιμή του
ρ και γιατί ;
Σημείωση: η QR είναι πίσω ευσταθής μέθοδος.
24. Μελετήστε ως προς την εμπρός και πίσω ευστάθεια τις πράξεις του εσωτερικού γινομένου, εξωτερικού γινομένου
και ΜΜ.
realmax + 1
realmax + realmin
realmin + eps
realmin/2
realmax + 1
realmax + realmax
realmin/realmax
realmax/realmin
2/0
N an–N an
1+? = 1+
2+? = 2+
3+? = 3+
5+? = 5+
9+? = 9+
0 ∗ inf
15
ΚΕΦΑΛΑΙΟ 3
Σκοπός είναι η επίλυση του συστήματος Ax = b , με A ∈ Rn×n και b ∈ Rn , χωρίς να χρησιμοποιήσουμε αντιστροφή
(μεγάλο κόστος και μεγάλο σφάλμα). Για αυτόν τον λόγο χρησιμοποιούμε παραγοντοποιήσεις οι οποίες αναγάγουν
το πρόβλημα επίλυσης ενός πυκνού γραμμικού συστήματος σε πρόβλημα επίλυσης τριγωνικών συστημάτων που είναι
σαφώς πιο εύκολο να επιλυθούν.
3.1 ΠΑΡΑΓΟΝΤΟΠΟΙΗΣΗ LU
Απαιτεί τετραγωνικά και αντιστρέψιμα μητρώα και διασπάει το αρχικό μητρώο Α σε :
A∗x=b⇒L∗U ∗x=b , με U ∗ x = z
L∗z =b (εμπρός αντικατάσταση)
U ∗x=z (πίσω αντικατάσταση)
Στοιχειώδη μητρώα: Είναι μητρώα που χρησιμοποιούνται στις διαδικασίες παραγοντοποίησης (και όχι μόνο) και πα-
ράγονται από τον τύπο :
I–τ ∗ u ∗ v T
Με I το ταυτοτικό μητρώο, τ βαθμωτό και u, v διανύσματα. Τα μητρώα αυτά χαρακτηρίζονται πλήρως από τα τρία
αυτά στοιχεία και δεν είναι ανάγκη να τα υπολογίζουμε κάθε φορά.
L = I–u ∗ eT
k
όπου το u είναι το διάνυσμα που θέλω να ”πειράξω” βάζοντας 0 από τον οδηγό και πάνω και από κάτω τα στοιχεία που
θέλω να μηδενίσω διά τον οδηγό. Με ek συμβολίζουμε το μοναδιαίο διάνυσμα που έχει 1 στην θέση k του οδηγού.Όταν
το μητρώο Gauss χρειαστεί να αντιστραφεί για να αλλάξει μέλος, τότε απλά αλλάζει το πρόσημο των υποδιαγώνιων
στοιχείων του και ο τύπος γίνεται: L = I + u ∗ eT
k
16
ΚΕΦΑΛΑΙΟ 3. ΕΠΙΛΥΣΗ ΓΡΑΜΜΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
Οδήγηση, αλλαγή δηλαδή του οδηγού, κάνω σε περίπτωση που μου προκύπτει κάποιος οδηγός ίσος με το 0 ή όταν
θέλω να καταλήξω σε πιο ευσταθή αποτελέσματα (η μέθοδος Gauss δεν είναι ευσταθής). Αυτό γίνεται με χρήση των
μεταθετικών μητρώων P , που όπως τα Gauss αποτελούν και αυτά κατηγορία στοιχειωδών μητρώων.
• Μερική οδήγηση : Στην θέση του οδηγού φέρνω το μεγαλύτερο κατ’ απόλυτη τιμή στοιχείο της στήλης του οδη-
γού. Χρειάζομαι μόνο εναλλαγές γραμμών, άρα εφαρμογή των μεταθετικών μητρώων από αριστερά. Το κόστος
της μεθόδου είναι O(n2 ).
• Πλήρης οδήγηση : Στην θέση του οδηγού φέρνω το μεγαλύτερο κατ’ απόλυτη τιμή στοιχείο όλου του μητρώου.
Χρειάζομαι εναλλαγές γραμμών αλλά και στηλών. Το κόστος της μεθόδου είναι O(n3 ).
∥Ax∗ − b∥
ϵ=
∥A∥∥x∗ ∥ + ∥b∥
∥x − x∗ ∥ 2ϵ ∗ κ(A)
≤
∥x∥ 1 − ϵ ∗ κ(A)
Επομένως η LU εξαιτίας των μετασχηματισμών Gauss, που στηρίζονται σε πράξεις εσωτερικών γινομένων, δεν είναι
3
ευσταθής στην γενική περίπτωση. Το κόστος της μεθόδου είναι 2n3 για την διάσπαση LU και 2n2 για την εμπρός και
πίσω αντικατάσταση.
Οικονομική αποθήκευση LU
Η MATLAB έχει την δυνατότητα όταν εισάγουμε lu(A) να μας επιστρέφει ένα και μόνο μητρώο του οποίου το άνω
τριγωνικό μέρος είναι το U και το κάτω τριγωνικό το L. Με αυτόν τον τρόπο μπορεί να εξοικονομεί την μισή περίπου
μνήμη σε σχέση με την εντολή [L, U ] = lu(A), που θα επέστρεφε δύο ξεχωριστά μητρώα με «αχρείαστη» δέσμευση
μνήμης λόγω των πολλών μηδενικών.
Η LU μπορεί να εφαρμοστεί και σε μητρώα των οποίων κάθε στοιχείο δεν είναι αριθμός, αλλά ένα άλλο μητρώο. Για πα-
ράδειγμα μπορεί να έχουμε ένα μητρώο των οποίων τα στοιχεία είναι μητρώα υποδιπλάσιας διάστασης (A11 A12 ; A21 A22 ).
Επομένως το Α μπορεί να διασπαστεί σε :
[ ] [ ] [ ]
A11 A12 I 0 U11 U12
= ×
A21 A22 L21 I 0 U22
17
ΚΕΦΑΛΑΙΟ 3. ΕΠΙΛΥΣΗ ΓΡΑΜΜΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
• Συμμετρικά: A = AT .
• Θετικά ορισμένα : όταν για κάθε διάνυσμα x ισχύει ότι xT Ax > 0 ή όταν οι ιδιοτιμές του μητρώου Α είναι
θετικές.
Το τελευταίο μπορώ να το επαληθεύω είτε ελέγχοντας αν το μητρώο είναι διαγώνια κυρίαρχο ή μέσω του θεωρήματος
Gerschgorin, σύμφωνα με το οποίο:
Κάθε γραμμή του μητρώου ορίζει μια ανίσωση. Το διαγώνιο στοιχείο μείον την ιδιοτιμή λ σε απόλυτη τιμή είναι
μικρότερο ή ίσο από το άθροισμα των απολύτων των υπόλοιπων στοιχείων της γραμμής, π.χ.:
Κάθε ανίσωση ορίζει έναν κύκλο που έχει κέντρο το διαγώνιο στοιχείο και ακτίνα το δεύτερο μέλος της ανίσω-
σης. Η ένωση των κυκλικών δίσκων που ορίζουν οι ανισώσεις, μας δίνει το πεδίο ορισμού των ιδιοτιμών.
Εφόσον ικανοποιούνται τα κριτήρια το μητρώο διασπάται σε δύο παράγοντες R και RT , με τον R να είναι κάτω
3
τριγωνικό μητρώο και προφανώς ο RT άνω τριγωνικό μητρώο. Η μέθοδος είναι ευσταθής και έχει κόστος n3 (ακριβώς
το μισό της LU).
3.3 Παραγοντοποίηση QR
Η εφαρμογή της συνηθίζεται σε μητρώα τα οποία είναι μη τετραγωνικά, m × n. Η παραγοντοποίηση QR στηρίζεται
στα στοιχειώδη ερμιτιανά μητρώα ή μετασχηματισμούς Householder. Το μητρώο διασπάται σε ένα ορθογώνιο μητρώο
Q και σε ένα άνω τριγωνικό μητρώο R.
ξ : ο αντίστοιχος «οδηγός» της QR, το στοιχείο δηλαδή πάνω από αυτά που θέλω να μηδενίσω
eκ : το μοναδιαίο διάνυσμα με 1 στην θέση κ, δηλαδή την θέση του ξ στο διάνυσμα
Έστω λοιπόν πως θέλω να εφαρμόσω QR σε ένα 4 × 3 μητρώο. Σκοπός είναι να το ανάγω σε άνω τριγωνική μορφή,
δηλαδή να μηδενίσω τα υποδιαγώνια στοιχεία και για τις 3 στήλες. Άρα θα χρειαστώ 3 μετασχηματισμούς Householder :
Επομένως έχουμε :
18
ΚΕΦΑΛΑΙΟ 3. ΕΠΙΛΥΣΗ ΓΡΑΜΜΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
H3 ∗ H2 ∗ H1 ∗ A = R ⇒ A = H1 ∗ H2 ∗ H3 ∗ R ⇒ A = Q ∗ R
Επίλυση συστήματος με QR
Αφού εκμεταλλευτώ το διάνυσμα b για τον οικονομικό υπολογισμό του νέου δεξιού μέλους ακολουθεί η πίσω αντικα-
τάσταση.
Οικονομική αποθήκευση QR : Όμοια με την LU , το μητρώο QR(A) περιλαμβάνει το μητρώο R στο άνω τριγωνικό
μέρος (από την διαγώνιο και πάνω), ενώ στο υπόλοιπο μητρώο περιλαμβάνονται κατά στήλη τα κανονικοποιημένα δια-
νύσματα Householders που χρησιμοποιήθηκαν κατά την παραγοντοποίηση. Για να τα εξάγω αυτά φαντάζομαι 1 στην
διαγώνιο και 0 από πάνω.
Κατά την αντίστροφη διαδικασία, όταν θέλουμε να κατασκευάσουμε το QR(A), τοποθετούμε τον R στο άνω τριγωνικό
μέρος και έπειτα κανονικοποιούμε τα διανύσματα Householder ώστε να χωρέσουν στο μητρώο. Αυτό επιτυγχάνεται με
την διαίρεση του αρχικού διανύσματος με το στοιχείο του οποίου η θέση αντιστοιχεί στην διαγώνιο του QR(A) ή αλ-
λιώς στην θέση του ξ.
Ευστάθεια μεθόδου και κόστος : Η μέθοδος QR με Householder είναι πάντα ευσταθής ενώ το κόστος για ένα m × n
2
μητρώο είναι Ω = 2n (m−n)
3
Ax = b => AT Ax = AT b ⇒ Cx = b∗
C = RT R και έπειτα εμπρός και πίσω αντικατάσταση RT z = b∗ , Rx = z
Κόστος μεθόδου : Εκμεταλλευόμενοι την συμμετρική δομή του C που θα προκύψει, το κόστος του AT A είναι :
(2m−1)(n+1)n
2
n3
Cholesky και εμπρός και πίσω αντικατάσταση : 3 + n2 + n2
Μειονεκτήματα μεθόδου :
3.5 ΖΗΤΟΥΜΕΝΑ
Μας δίνεται μητρώο A και μας ζητάει να το παραγοντοποίησουμε σε LU με χρήση στοιχειωδών τριγωνικών μητρώων
ή QR με χρήση στοιχειωδών ερμιτιανών μητρώων. Αντίστροφα, μετά την παραγοντοποίηση ενός μητρώου μας δίνεται
η οικονομική αποθήκευση LU (A) ή QR(A) και μας ζητάει να υπολογίσουμε το αρχικό και άγνωστο μητρώο A.
Ποιο είναι το κόστος της μεθόδου κανονικών εξισώσεων και ποια τα μειονεκτήματα?
19
ΚΕΦΑΛΑΙΟ 3. ΕΠΙΛΥΣΗ ΓΡΑΜΜΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
3.6 ΑΠΑΝΤΗΣΕΙΣ
Ποτέ δεν υπολογίζουμε τα μητρώα Householder! Το εξωτερικό τους γινόμενο κοστίζει πολύ σε πράξεις, πολυπλοκό-
τητα και ακρίβεια. Αυτό που προσπαθούμε να εκμεταλλευτούμε κάθε φορά είναι να υπολογίζουμε κατά στήλες το κάθε
βήμα ώστε να προκύπτουν εσωτερικά γινόμενα.
Για παράδειγμα στο βήμα 1, θα εκτελούσα ξεχωριστά H1 ∗ A(:, 1), H1 ∗ A(:, 2), H1 ∗ A(:, 3). Έπειτα H2 ∗ R1 (:, 2),
H2 ∗ R1 (:, 3) και τέλος H3 ∗ R2 (:, 3). Οι ήδη μηδενισμένες στήλες δεν επηρεάζονται από τους μετέπειτα μετασχημα-
τισμούς.
Ομοίως για τον υπολογισμό του Q, χρησιμοποιώ υπολογισμούς κατά γραμμές ή κατά στήλες χρησιμοποιώντας τα μο-
ναδιαία διανύσματα π.χ. Q ∗ e2 = (H1 ∗ (H2 ∗ (H3 ∗ e2 ))) για τον υπολογισμό της δεύτερης στήλης.
Οι ανακλαστές Householder μπορούν να χρησιμοποιηθούν και σε άλλες παραγοντοποίησεις, πχ σε αναγωγή του αρχι-
κού μητρώου σε τριδιαγώνιο. Η ιδέα της QR μπορεί να χρησιμοποιηθεί και σε αυτές τις περιπτώσεις.
Δύο συστήματα που χρησιμοποιούν τον ίδιο παράγοντα A μπορούν να συγχωνευτούν σε ένα σύστημα με πολλαπλά
δεξιά μέλη. Έτσι λόγω αυξημένης τοπικότητας θα έχουμε BLAS-3 και λίγο μικρότερο κόστος επίλυσης πχ τα Ax = b
και Ay = z , μπορούν να γίνουν A[x, y] = [b, z].
20
ΚΕΦΑΛΑΙΟ 3. ΕΠΙΛΥΣΗ ΓΡΑΜΜΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
a) Το M είναι κάτω τριγωνικό με μονάδες στη διαγώνιο και τέτοιο ώστε M ∗ e = eye(10, 1).
b) Το H είναι ορθογώνιο και τέτοιο ώστε H ∗ e = γ ∗ eye(10, 1) για κάποιο βαθμωτό γ.
2. Έστω U άνω τριγωνικό και αντιστρέψιμο με μη μηδενικά στοιχεία στη διαγώνιο και το σύστημα U x = ej , όπου
ej είναι το διάνυσμα με μονάδα στη j θέση και μηδέν αλλού.
3. Δίνεται το μιγαδικό μητρώο G ∈ Cn×n για το οποίο γνωρίζουμε ότι μπορεί να γραφτεί ως G = i ∗ A + I, όπου
το A είναι πραγματικό, Σ.Θ.Ο. και τριδιαγώνιο. Έστω επίσης ότι πρέπει να λύσουμε το σύστημα G ∗ x = b με
b ∈ Rn×n και x ∈ Cn×n με x = xR + ixI όπου τα διανύσματα xR και xI είναι το πραγματικό και φανταστικό
μέρος του x αντίστοιχα.
a) Να δείξετε ότι το παραπάνω πρόβλημα είναι ισοδύναμο με τη λύση ενός πραγματικού γραμμικού συστήμα-
τος διπλάσιας διάστασης (δηλαδή 2n × 2n) που μπορεί να γραφτεί ως S ∗ X = B.
b) Να γράψετε την block LU διάσπαση του μητρώου S.
c) Να περιγράψετε συνοπτικά τα βήματα για την επίλυση του συστήματος S ∗ X = B χρησιμοποιώντας την
προηγούμενη διάσπαση του S.
4. Έστω ότι έχετε διαθέσιμους τους παράγοντες L και U της παραγοντοποίησης LU ενός γενικού μητρώου , δη-
λαδή A = LU και ότι γίνεται η εξής «ανανέωση» :
Αντικαθίσταται η τελευταία στήλη του με ένα άλλο διάνυσμα, έστω ρ.
Αν γνωρίζετε ότι το νέο μητρώο = [(:, 1), …, (:, n − 1), ρ] είναι επίσης αντιστρέψιμο, να περιγράψετε με βήματα
που αντιστοιχούν σε εντολές τύπου BLAS-3, έναν αποδοτικό τρόπο επίλυσης του συστήματος Bx = y.
5. Έστω ότι μετά την παραγοντοποίηση QR ενός μητρώου , το αποτέλεσμα που επιστρέφεται στο είναι [1, 4, 5; 1, 2, 6; 1, 2, 3].
Από αυτά τα στοιχεία να υπολογίσετε τους παράγοντες Q, R και το αρχικό .
6. Έστω ότι ο δείκτης κατάστασης του υπολογισμού της λύσης ενός συστήματος x = b ως προς την ευκλείδια
νόρμα είναι 101 × 106, όπου ενώ γνωρίζετε ότι η υπολογισμένη λύση ικανοποιεί ∥b − Ax∗ ∥2 = 10−12 καθώς
επίσης ότι ∥x∥2 = 10, ∥A∥2 = 10 και ∥b∥2 = 1. Να υπολογίσετε ένα άνω φράγμα για τη νόρμα του σχετικού
εμπρός σφάλματος.
7. Έστω ότι έχει χρησιμοποιηθεί παραγοντοποίηση QR ενός μητρώου και ότι στο τέλος τα στοιχεία του έχουν
αντικατασταθεί με τα παρακάτω: [ 8,1,6; 1,5,7; 1,2,2; 1,2,2 ]
a) Έστω ότι b = [5, −15, 0, 30]T . Με βάση μόνο αυτά τα στοιχεία να υπολογίσετε τη λύση του για το αρχικό
και άγνωστο προς το παρόν .
b) Να υπολογίσετε το αρχικό μητρώο χωρίς να υπολογίσετε άμεσα το Q.
21
ΚΕΦΑΛΑΙΟ 3. ΕΠΙΛΥΣΗ ΓΡΑΜΜΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
c) Να υπολογίσετε το Q.
Προσοχή: Για πλήρη βαθμό θα πρέπει να λύσετε το α) όπως ζητείται από την εκφώνηση, δηλαδή χωρίς να χρη-
σιμοποιήσετε το αποτέλεσμα του β). Ομοίως, το β) πρέπει να λυθεί πριν το γ).
8. a) Ο δείκτης κατάστασης ενός γενικού μητρώου ως προς την ευκλείδια νόρμα είναι άμεσα υπολογίσιμος από
τις ιδιοτιμές του μητρώου. ( Σ / Λ )
b) Η επίλυση τριγωνικών συστημάτων με πολλά δεξιά μέλη παρουσιάζει καλή τοπικότητα και ανήκει στην
κατηγορία BLAS-3. ( Σ / Λ )
c) Με το πέρας της παραγοντοποίησης LU ενός μητρώου με μερική οδήγηση, οπότε επιστρέφονται στην
έξοδο τα μητρώα L και U και το διάνυσμα μεταθέσεων , είναι οι οδηγοί άμεσα διαθέσιμοι στην έξοδο;
9. Έστω το μητρώο = [4, −8, 1; 6, 5, 7; 0, −10, −3]. Ποιό θα είναι το στοιχείο «οδηγός» στο πρώτο βήμα:
a) αν δε χρησιμοποιηθεί οδήγηση;
b) αν χρησιμοποιηθεί μερική οδήγηση;
c) αν χρησιμοποιηθεί πλήρης οδήγηση;
10. Έστω ότι για ένα μητρώο είναι εφικτές και η LU και η QR παραγοντοποίηση. Με βάση τα κριτήρια του επιστημο-
νικού υπολογισμού, να αναφέρετε ένα λόγο για τον οποίο συνήθως προτιμάται η LU για επίλυση τετραγωνικού
συστήματος Ax = b και ένα λόγο που θα μπορούσε να καταστήσει τη χρήση της QR πιο επιθυμητή.
11. Έστω ότι έχουμε εφαρμόσει τον αλγόριθμο παραγοντοποίησης QR στο μητρώο που επιστρέφει στη θέση του
μητρώο με στοιχεία [3, −2, 1; 2, 1, 4; 1, −1, 2].
12. Έστω κάποιο συμμετρικό , π.χ. = [4, −1, −1; −1, 4, 1; −1, 1, 4].
a) Να υπολογίσετε κατάλληλο διάνυσμα u με αριθμητικά ασφαλή τρόπο και τριδιαγώνιο μητρώο , τέτοια ώστε
T = QAQT , όπου το Q είναι ένας στοιχειώδης ανακλαστής που παράγεται από το u (μην υπολογίσετε τα
στοιχεία του Q).
b) Να αποθηκεύσετε τα αποτελέσματα στο χώρο που περιείχε τον έτσι ώστε να μη χρειάζεται παραπάνω χώ-
ρος και επιπλέον να μπορείτε αν χρειαστεί να ανακατασκευάσετε τον από αυτά. Περιγράψτε σύντομα πώς
θα κάνατε την ανακατασκευή του .
13. a) Η συνάρτηση qr της MATLAB εφαρμόζει μετασχηματισμό Householder για να υπολογίσει τους παράγο-
ντες [q, r] = qr(A). Aν θέσουμε B = q ∗ r και υποθέσουμε ότι ο πολλαπλασιασμός q ∗ r των παραγόντων
γίνεται με πολύ μεγάλη ακρίβεια, να εξηγήσετε αν είναι σωστός ο ισχυρισμός ότι η ποσότητα ∥B−A∥
∥A∥ θα
είναι μικρή.
b) Δίνονται οι εντολές MATLAB s = sqrt(sum(x.∧ 2)) που επιστρέφουν την ευκλείδια νόρμα του x στο s.
i) Να εξηγήσετε (ένα παράδειγμα αρκεί) γιατί μπορεί να επιστρέφει inf ακόμα και όταν η νόρμα είναι
πολύ μικρότερη από inf και επομένως δεν ενδείκνυται να τις χρησιμοποιήσουμε.
ii) Να εξηγήσετε πως μπορείτε να αποφύγετε αυτό το πρόβλημα.
iii) Έστω η πράξη AT Ax = b που επιλύεται με παραγοντοποίηση Cholesky. Είναι πίσω ευσταθής;
22
ΚΕΦΑΛΑΙΟ 3. ΕΠΙΛΥΣΗ ΓΡΑΜΜΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
14. Δίνεται A = [1, 1, 2, 1; 0, 2, 1, −1; 0, 3, −1, 1; 0, 4, 1, 2] . Να υπολογίσετε διάνυσμα Householder ώστε ο ορθο-
γώνιος ανακλαστής που παράγεται από το διάνυσμα, να μηδενίζει τη θέση (4, 2) του μητρώου καθώς επίσης
και του B = P AP T . Επίσης να υπολογίσετε το B (να φέρετε εις πέρας όλες τις αριθμητικές πράξεις).
15. 1) Να βρείτε ακριβώς ένα μητρώο μετάθεσης για το οποίο ισχύει ότι το μητρώο B = P A για οποιοδήποτε
μητρώο έχει για στοιχεία τα βij = αn+1−i,j , όπου ως συνήθως αi,j συμβολίζει το στοιχείο στη θέση (i, j)
του A. Τότε αν το μητρώο L είναι άνω τριγωνικό, ποια θα είναι η δομή του μητρώου C:=PLP;
2) Με βάση τα παραπάνω να υποδείξετε έναν τρόπο για τον υπολογισμό της παραγοντοποίησης ενός μητρώου
A ως A = U L , όπου U, L αντίστοιχα είναι άνω και κάτω τριγωνικά και το U έχει μονάδες στη διαγώνιο.
Μπορείτε να υποθέσετε ότι δεν απαιτείται οδήγηση.
3) Να χρησιμοποιήσετε την παραπάνω ιδέα (πάντα χωρίς οδήγηση) για να λύσετε το γραμμικό σύστημα
Ax = e1 ,όπου e1 είναι το διάνυσμα [1, 0, 0]T και A = [10, −1, −1; −1, 8, −1; −1, −1, 5] ώστε να εξοικο-
νομήσετε περίπου n2 πράξεις κατά τη λύση σε σχέση με την κλασσική LU (πρέπει να δείξετε πού οφείλεται
η εξοικονόμηση), όπου βέβαια στην περίπτωσή μας n = 3.
23
ΚΕΦΑΛΑΙΟ 4
Για να υπολογίζω τις πράξεις με αραιά μητρώα , απλά δεν λαμβάνω υπόψη τις πράξεις με μηδενικά. Αυτές δηλαδή που
γνωρίζω εκ των προτέρων πως θα δώσουν 0. Γενικότερα για να κάνω εξοικονόμηση πράξεων δεν πρέπει να αφήνω την
Matlab να υπολογίζει πράγματα που μπορώ να ξέρω από πριν το αποτέλεσμα τους πχ η πράξη A − A για μένα δεν
κοστίζει τίποτα , αλλά για την MATLAB θα κοστίσει n2 .
Άνω Hessenberg είναι ένα άνω τριγωνικό μητρώο με μία υποδιαγώνιο. Κάτω Hessenberg είναι ένα κάτω τριγωνικό
μητρώο με μία υπερδιαγώνιο.
Toeplitz είναι τα μητρώα των οποίων η κάθε διαγώνιος αποτελείται από τα ίδια στοιχεία.
Μέθοδοι αποθήκευσης :
Προφανώς δεν χρειάζεται να αποθηκεύουμε τα μηδενικά στοιχεία παρά μόνο τα nnz (non zero values) , έτσι ώστε να
εξοικονομήσουμε μνήμη.
COO (coordinates): Κατασκευάζουμε έναν πίνακα με 3 στήλες. Η πρώτη περιέχει τα nnz, η δεύτερη την γραμμή και η
τρίτη την στήλη στην οποία ανήκει το κάθε στοιχείο. Με λίγα λόγια ένας πίνακας με τις συντεταγμένες του κάθε nnz.
CSR (compressed sparsed rows): Κατασκευάζουμε έναν πίνακα με 4 γραμμές. Στην δεύτερη γραμμή τοποθετώ τα nnz
σαρώνοντας το μητρώο κατά γραμμή. Στην πρώτη γραμμή αριθμώ τα στοιχεία αυτά κατά αύξουσα σειρά. Στην τρίτη
αντιστοιχούμε την στήλη που ανήκει το κάθε στοιχείο. Στην τέταρτη τοποθετούμε τον αριθμό (από την πρώτη γραμμή)
του πρώτου μη μηδενικού στοιχείου κάθε γραμμής.
CSC (compressed sparsed columns): Κατασκευάζουμε έναν πίνακα με 4 γραμμές. Στην δεύτερη γραμμή τοποθετώ τα
nnz σαρώνοντας το μητρώο κατά στήλη. Στην πρώτη γραμμή αριθμώ τα στοιχεία αυτά κατά αύξουσα σειρά. Στην τρίτη
αντιστοιχούμε την γραμμή που ανήκει το κάθε στοιχείο. Στην τέταρτη τοποθετούμε τον αριθμό (από την πρώτη γραμμή)
του πρώτου μη μηδενικού στοιχείου κάθε στήλης.
24
ΚΕΦΑΛΑΙΟ 4. ΑΡΑΙΑ ΜΗΤΡΩΑ ΚΑΙ ΔΙΑΚΡΙΤΟΠΟΙΗΣΗ
4.2 Διακριτοποίηση
Είναι η μέθοδος μέσα από την οποία απλοποιούμε/προσεγγίζουμε μια διαδικασία για την οποία, λόγω πολυπλοκότη-
τας, δεν υπάρχουν τα κατάλληλα μαθηματικά εργαλεία για να μελετηθεί. Εφόσον λοιπόν πρόκειται για προσέγγιση
αναγκαστικά προκύπτει και σφάλμα. Μας ενδιαφέρει η επίλυση διαφορικών εξισώσεων δευτέρου βαθμού :
d2 u du
− (x) + b(x) + c(x)u(x) = d(x)
dx2 dx
Σκοπός μας είναι να μελετήσουμε τις τιμές της συνάρτησης u. Εξετάζουμε πρώτα την περίπτωση που ισχύουν οι συν-
θήκες Dirichlet, δηλαδή μας δίνεται η τιμή της συνάρτησης u στα δύο άκρα του πεδίου ορισμού. Η Διακριτοποίηση
αποτελείται από τρία βήματα :
• Διακριτοποίηση πεδίου ορισμού: Εφόσον οι τιμές του x είναι άπειρες θα πρέπει να διαλέξουμε κάποιες αντιπρο-
σωπευτικές τιμές, οι οποίες χάριν απλότητας ισαπέχουν. Έστω n αυτές οι τιμές. Στο πρώτο βήμα λοιπόν «σπάμε»
το πεδίο ορισμού σε n ισαπέχοντες κόμβους και υπολογίζουμε την απόσταση h μεταξύ των κόμβων καθώς και
το x σε κάθε περίπτωση:
XU −XL
h= n+1 , xj = XL + jh με j = 0, 1, 2, ..., n + 1
• Διακριτοποίηση ΔΕ: Πλέον πρέπει να βρούμε κάτι απλούστερο να αντικαταστήσουμε τους όρους της ΔΕ που μας
δυσκολεύουν περισσότερο και αυτοί είναι η πρώτη και δεύτερη παράγωγος. Χρησιμοποιούμε τους αντίστοιχους
τύπους του Taylor :
uj+1 −uj−1 (1)
2h = uj + O(h2 )
uj−1 +uj+1 −2uj (2)
h2 = uj + O(h2 )
Για να ισχύει πλέον η ισότητα και να μπορώ να αντικαταστήσω στην ΔΕ, εισάγω την συνάρτηση πλέγματος U η
οποία αποτελεί μια προσέγγιση της πραγματικής τιμής u και αντικαθιστώντας στην ΔΕ παίρνω:
Uj−1 +Uj+1 −2Uj Uj+1 −Uj−1
h2 + bj 2h + cj Uj = dj , j = 1...n
• Εύρεση Διακριτής λύσης : Αφού λοιπόν «τακτοποιώ» τα U κατά αύξουσα σειρά και πηγαίνω τους σταθερούς
όρους στο δεξί μέλος καταστρώνω τις εξισώσεις. Εφόσον έχω n αγνώστους , χρειάζομαι n εξισώσεις. Είναι σημα-
ντικό η πρώτη και η τελευταία εξίσωση να έχουν από 2 αγνώστους :
2 1 b1 u0 u0
(c1 + h2 )U1 + (− h2 + 2h )U2 = d1 + h2 + b1 2h
b b
−( h12 + 2hj )Uj−1 + (cj + h22 )Uj + (− h12 + 2hj )Uj+1 = dj , j = 2, ..., n − 1
(− h12 − 2h
bn
)Un−1 + (cn + h22 )Un = dn + un+1
h2 − bn 2h
un+1
Από τα παραπάνω είναι εύκολο να δούμε πως οι άγνωστοι U1 , U2 ....Un μπορούν να βρεθούν μέσα από το σύ-
στημα AU = b. Το μητρώο A είναι πάντα τετραγωνικό διάστασης n × n (όσοι είναι οι άγνωστοι) και τριδιαγώνιο
. Επομένως χρησιμοποιούμε οικονομική παραγοντοποίηση LU ή Cholesky (όπως έχουμε πει προτιμάμε την τε-
λευταία).
Η επόμενη περίπτωση είναι οι συνθήκες Neumann , σύμφωνα με τις οποίες δεν μας δίνονται οι τιμές της u στα
άκρα αλλά οι παραγώγοι τους (ή μπορεί να ισχύει μόνο για το ένα άκρο). Πλέον οι άγνωστοι γίνονται n + 2 και
απαιτώ n + 2 εξισώσεις, για j = 0 και j = n. Παρατηρούμε όμως πως προκύπτουν οι όροι U−1 και Un+1 . Για να
25
ΚΕΦΑΛΑΙΟ 4. ΑΡΑΙΑ ΜΗΤΡΩΑ ΚΑΙ ΔΙΑΚΡΙΤΟΠΟΙΗΣΗ
τους ξεφορτωθώ αυτούς χρησιμοποιώ τον τύπο του Taylor για την πρώτη παράγωγο και λύνω ως προς αυτούς,
για να αντικαταστήσω στην αρχική και τελική εξίσωση ώστε να έχω όμοια με πριν 2 αγνώστους και να μπορώ να
καταλήξω σε τριδιαγώνιο σύστημα.
2. a) Αν ένα μητρώο είναι αντιστρέψιμο, τότε πάντα υπάρχει παραγοντοποίηση A = LU , όπου L είναι κάτω
τριγωνικό και U άνω τριγωνικό μητρώο. ( Σ / Λ )
b) Το αντίστροφο ενός τυχόντος, αντιστρέψιμου κάτω διδιαγώνιου μητρώου είναι επίσης κάτω διδιαγώνιο. (
Σ/Λ)
c) Να εξηγήσετε με ένα παράδειγμα γιατί ο παρακάτω ισχυρισμός μπορεί να είναι σωστός:
Υπάρχουν μητρώα, έστω ένα από αυτά, για τα οποία η επίλυση του γραμμικού συστήματος Ax = b να
κοστίζει O(n) αριθμητικές πράξεις ενώ η επίλυση του Bx = b, όπου B = An να στοιχίζει O(n3 ) πράξεις.
Προσοχή: Θεωρούμε ότι το B είναι γνωστό.
3. a) Αν το A είναι τριδιαγώνιο, η τελευταία στήλη του Aκ μπορεί να υπολογιστεί με κυρίαρχο κόστος πολύ μι-
κρότερο του Ω = O(κn3 ). Να εξηγήσετε ποιο θα είναι το κόστος από τα παρακάτω και να δείξετε ποια θα
είναι η σταθερά α που του αντιστοιχεί;
Ω1 = α1 nκ2 , Ω2 = α2 n2 κ , Ω3 = α3 nκ , Ω4 = α4 n
b) Έστω το μητρώο Hessenberg . Να δείξετε ότι (χωρίς οδήγηση και εφόσον υπάρχει) η παραγοντοποίηση LU
του H κοστίζει Ω = αn2 + O(n). Επίσης να υπολογίσετε τον κυρίαρχο συντελεστή α.
4. Έστω η συνάρτηση y : R → R της οποίας οι παράγωγοι μέχρι 4ης τάξης υπάρχουν και είναι συνεχείς στο διά-
στημα [0, 1]. Η συνάρτηση ικανοποιεί την ΣΔΕ: y ′′ (t) − 4ty ′ (t) = 16t για t ∈ (0, 1).
Θέλουμε να προσδιορίσουμε τη λύση της παραπάνω εξίσωσης εφαρμόζοντας πλέγμα αποτελούμενο από 3 ισα-
πέχοντες εσωτερικούς κόμβους στο διάστημα (0, 1). Οι συνοριακές συνθήκες που διαθέτουμε είναι y(0) = 1 και
y(1) = 0. Η διακριτοποίηση των διαφορικών τελεστών θα γίνει με χρήση κεντρισμένων πεπερασμένων διαφο-
ρών.
Να υπολογίσετε τους συντελεστές του μητρώου και του δεξιού μέλους που προκύπτουν από τη διακριτοποίηση
της Δ.Ε.
5. Έστω η συνάρτηση u : R → R για την οποία γνωρίζουμε ότι οι παράγωγοι u(j) (x), j = 1, .., 4 είναι συνεχείς
για x ∈ [−1, 1]. Γνωρίζουμε επίσης ότι u(−1) = 0 , u(1) = 1 και ότι η u ικανοποιεί τη διαφορική εξίσωση:
Η ακριβής τιμή του µ δεν είναι γνωστή αλλά εξαρτάται από το πρόβλημα. Θέλουμε να προσεγγίσουμε τη λύση
αριθμητικά, λύνοντας γραμμικό σύστημα που προκύπτει από κεντρισμένες πεπερασμένες διαφορές δεύτερης τά-
ξης για την προσέγγιση των παραγώγων.
a) Να διακριτοποιήσετε την εξίσωση χρησιμοποιώντας πλέγμα ισαπέχοντων κόμβων στο διάστημα (−1, 1)
όπου h είναι η απόσταση μεταξύ διαδοχικών κόμβων. Να γράψετε προσεκτικά το γραμμικό σύστημα Aw =
b που πρέπει να λυθεί. Τα στοιχεία των A και b πρέπει να είναι όσο πιο απλοποιημένα γίνεται.
b) Έστω ότι εφαρμόζεται απαλοιφή Gauss με μερική οδήγηση για την παραγοντοποίηση του παραπάνω συ-
στήματος. Να υπολογίσετε σε ποιο ή σε ποια πραγματικά διαστήματα επιτρέπεται να βρίσκεται ο µ ώστε
να μη χρειάζεται εναλλαγή γραμμών στο πρώτο βήμα της απαλοιφής.
26
ΚΕΦΑΛΑΙΟ 4. ΑΡΑΙΑ ΜΗΤΡΩΑ ΚΑΙ ΔΙΑΚΡΙΤΟΠΟΙΗΣΗ
2
6. Ενδιαφέρει η επίλυση της ΣΔΕ με την εξής μορφή: − d dx
u(x)
2 + 2 du(x)
dx + x u(x) = x , στο διάστημα x ∈ [1, 2]
2
7. Δίνεται η διαφορική εξίσωση u′′ (x) + (µ + 1)u′ (x) − (1 + 10x)u(x) = 0 στο [0, 2] με συνοριακές συνθήκες
u(0) = 40 , u(2) = 200 και προσεγγίζουμε τη λύση με κεντρισμένες πεπερασμένες διαφορές και ακρίβεια τάξης
O(h2 ) όπου h είναι η απόσταση μεταξύ κόμβων στο πλέγμα διακριτοποίησης.
a) Να υπολογίσετε μητρώο και δεξιό μέλος τέτοια ώστε το διάνυσμα g που ικανοποιεί το σύστημα Ag = b να
προσεγγίζει τη λύση u στους κόμβους.
b) Να εξηγήσετε γιατί αν ενδιαφερόμασταν για καλύτερη προσέγγιση και χρησιμοποιούσαμε n εσωτερικούς
κόμβους, το κόστος της επίλυσης μπορεί να είναι μόνο O(n) πράξεις α.κ.υ..
c) Έστω ότι η συνοριακή συνθήκη αλλάζει στο 0 και γίνεται u′ (0) = µ
10 + 1. Ποιο θα είναι το νέο γραμμικό
σύστημα;
8. Έστω η συνάρτηση u : R → R που ικανοποιεί τη διαφορική εξίσωση −u′′ (x) + (µ + 2)xu(x) = x2 για κάθε
x ∈ [0, 1], με συνοριακές συνθήκες u(0) = 1 , u(1) = 0.
27