You are on page 1of 9

1.

ΕΙΣΑΓΩΓΗ

1.1 Τι είναι η αριθµητική ανάλυση


Στα µαθητικά και φοιτητικά µας χρόνια, έχουµε γνωριστεί µε µία ποικιλία από
µαθηµατικά προβλήµατα των οποίων µαθαίνουµε σταδιακά τις λύσεις. Παραδείγµατος
χάριν, οι δευτεροβάθµιες εξισώσεις της µορφής

ax 2 + bx + c = 0 (1.1)

επιλύονται στοιχειωδώς µε τη µέθοδο της διακρίνουσας. Είναι γνωστό ότι υπάρχουν


γενικοί τύποι που επιτρέπουν να λύσουµε µε αλγεβρικές µεθόδους πολυωνυµικές
εξισώσεις µέχρι και τέταρτου βαθµού. Σε ορισµένες περιπτώσεις χρησιµοποιούµε
ειδικές τεχνικές, όπως τη µέθοδο της παραγοντοποίησης του πολυωνύµου (π.χ. µε το
σχήµα Horner). Στο παράδειγµα της εξίσωσης

P( x) = x 3 − 6 x 2 + 11x − 6 = 0 (1.2)

το πολυώνυµο P(x) παραγοντοποιείται στη µορφή

P ( x) = ( x − 3)( x 2 − 3 x + 2) (1.3)

µε προφανείς ρίζες τις x1 = 3, x 2 = 1, x 3 = 2 .

Από την εµπειρία µας αυτή είναι δυνατό να δηµιουργηθεί η εντύπωση ότι για όλες τις
πολυωνυµικές εξισώσεις θα υπάρχει κάποια "µέθοδος" η οποία να επιτρέπει να
βρεθούν οι ρίζες, έστω και αν η µέθοδος αυτή αναµένεται γενικά να αυξάνει σε
δυσκολία καθώς αυξάνει ο βαθµός του πολυωνύµου.

Εντούτοις, η εντύπωση αυτή δεν ανταποκρίνεται προς την πραγµατικότητα. Αντίθετα,


είναι γνωστό ότι για πολυώνυµα βαθµού µεγαλύτερου του 4, δεν υπάρχει γενικός τύπος
που να παρέχει τις ρίζες της αντίστοιχης πολυωνυµικής εξίσωσης, εκτός από
πολυώνυµα ειδικής µορφής.

Παρ' όλα αυτά, το γεγονός ότι δεν διαθέτουµε κανόνα για τον αναλυτικό υπολογισµό
των ριζών δεν σηµαίνει φυσικά ότι δεν υπάρχουν ρίζες. Αντίθετα, σε πολλές
περιπτώσεις µπορούµε να αποδείξουµε αυστηρά την ύπαρξη µίας ή περισσότερων
ριζών. Παραδείγµατος χάριν, µπορεί να αποδειχθεί εύκολα ότι η εξίσωση

P( x) = x 5 + x + 1 = 0 (1.4)

έχει τουλάχιστον µία πραγµατική ρίζα. Πράγµατι, λαµβάνοντας υπόψη ότι


P (−1) = −1 < 0 ενώ P (1) = 3 > 0 µπορούµε να εφαρµόσουµε το θεώρηµα Bolzano για
1. ΕΙΣΑΓΩΓΗ 2
τη συνεχή συνάρτηση P ( x ) στο κλειστό διάστηµα [− 1,1] συµπεραίνοντας ότι υπάρχει
τουλάχιστον µία πραγµατική ρίζα του πολυωνύµου στο ανοικτό διάστηµα (− 1,1) .

Βρισκόµαστε εδώ στην παράδοξη κατάσταση αφενός µεν να γνωρίζουµε την ύπαρξη
µιας ρίζας, και µάλιστα ενός διαστήµατος τιµών στο οποίο ανήκει η ρίζα. Εντούτοις,
δεν διαθέτουµε µία γενική αναλυτική µέθοδο που θα µας επιτρέψει να προσδιορίσουµε
ποιά είναι η ρίζα αυτή!

Στο σηµείο αυτό επεµβαίνει η αριθµητική ανάλυση. Σκοπός της, στο προηγούµενο
παράδειγµα, είναι να µας δώσει µία ή περισσότερες αριθµητικές µεθόδους, οι οποίες
ανάγονται συστηµατικά σε αντίστοιχους υπολογιστικούς αλγόριθµους που θα µας
επιτρέψουν να προσδιορίσουµε προσεγγιστικά την αριθµητική τιµή της ζητούµενης
ρίζας, έστω και αν είναι αδύνατη η διατύπωση ενός γενικού αναλυτικού τύπου για τη
ρίζα. Θα πρέπει να τονισθεί ότι η λύση που δίνεται εδώ στο πρόβληµα δεν είναι
αλγεβρική, αλλά καθαρά αριθµητική. Ενας συνδυασµός πράξεων, σε µορφή
αλγόριθµου, µας δίνει µία αριθµητική λύση η οποία συγκλίνει προς την πραγµατική
λύση του προβλήµατος µέσα σε ορισµένα όρια επιθυµητής ακρίβειας.

Η εύρεση των προσεγγιστικών µεθόδων αριθµητικής επίλυσης ενός προβλήµατος και η


µελέτη των ιδιοτήτων σύγκλισής τους αποτελούν το αντικείµενο της αριθµητικής
ανάλυσης.

Ακριβώς επειδή οι αριθµητικές µέθοδοι είναι αλγοριθµικές και βασίζονται τελικά στην
εκτέλεση απλών αριθµητικών πράξεων, η υλοποίησή τους υπολογιστικά αρµόζει να
γίνεται µε τη βοήθεια του ηλεκτρονικού υπολογιστή. Στις σηµειώσεις που ακολουθούν
γίνεται εισαγωγή στις αριθµητικές µεθόδους τόσο από τη σκοπιά της θεωρίας της
αριθµητικής ανάλυσης όσο και από τη σκοπιά της υλοποίησης των αλγόριθµων σε
προγραµµατιστικό περιβάλλον.

1.2 Παραδείγµατα χρήσης αριθµητικών µεθόδων


Ας δώσουµε ορισµένα ακόµη παραδείγµατα µαθηµατικών προβληµάτων των οποίων η
λύση µπορεί να βρεθεί µε τη βοήθεια των αριθµητικών µεθόδων.

1.2α) Επίλυση γραµµικών συστηµάτων µε σταθερούς συντελεστές

Ως γνωστό, ένα γραµµικό σύστηµα Ν x Ν, δηλαδή Ν εξισώσεων µε Ν αγνώστους της


µορφής

a11x1 + a12x2 + ... + a1NxN = b1


a21x1 + a22x2 + ... + a2NxN = b2
.
.
aN1x1 + aN2x2 + ... + aNxNN = bΝ
1. ΕΙΣΑΓΩΓΗ 3
µπορεί να παρασταθεί από τον επαυξηµένο πίνακα των συντελεστών και των
σταθερών όρων

a11 a12 ... a1N b1


a21 a22 ... a2N b2
.
.
aN1 aN2 ... aNN bΝ

Για το σύστηµα αυτό υπάρχουν, ως γνωστό, γενικές µέθοδοι λύσης οι οποίες


βασίζονται είτε στη χρήση των οριζουσών, είτε στη διαγωνιοποίηση του πίνακα των
συντελεστών µε τη µέθοδο της απαλοιφής του Gauss. Οι πράξεις είναι δυνατόν να
γίνουν "µε το χέρι" όταν το πλήθος Ν αγνώστων και εξισώσεων είναι µικρό. Σε
πολλές, ωστόσο, εφαρµογές χρειάζεται να επιλυθούν συστήµατα µε µεγάλο Ν, π.χ.
Ν=1000 ή Ν=10000. Στην περίπτωση αυτή χρειαζόµαστε ένα πρόγραµµα σε Η/Υ που
να υλοποιεί τους υπολογιστικούς αλγόριθµους που απαιτούν ένα τεράστιο πλήθος
πράξεων.

1.2β) Υπολογισµός της τιµής ορισµένων ολοκληρωµάτων

Ως γνωστό, το ολοκλήρωµα

∫ sin xdx
0

υπολογίζεται αναλυτικά αµέσως και δίνει

∫ sin xdx = [− cos x]


π
0 =2 (1.5)
0

Εντούτοις, για το φαινοµενικά ελάχιστα διαφορετικό ολοκλήρωµα

∫ sin( x
2
)dx
0

δεν φαίνεται να υπάρχει κάποιος απλός τρόπος αναλυτικού υπολογισµού µε


συνδυασµό των γνωστών µεθόδων, π.χ. αλλαγή µεταβλητής, ολοκλήρωση κατά
παράγοντες κ.λ.π. (στην πραγµατικότητα το εν λόγω ολοκλήρωµα εκφράζεται µε τη
βοήθεια της ειδικής συνάρτησης FresnelS, που εµφανίζεται συχνά στη µαθηµατική
φυσική. Αριθµητικές τιµές της συνάρτησης FresnelS δίνονται σε ειδικούς πίνακες
τιµών).
1. ΕΙΣΑΓΩΓΗ 4
Με τη χρήση αριθµητικών µεθόδων είναι δυνατό να υπολογιστεί µε πολύ µεγάλη
ακρίβεια η αριθµητική τιµή του ολοκληρώµατος, έστω και αν δεν είναι δυνατή η
εύρεση µε αναλυτικές µεθόδους µιας παράγουσας της υπό ολοκλήρωση συνάρτησης .

1.2γ) Λύση διαφορικών εξισώσεων

Η συνήθης διαφορική εξίσωση

y ' ' ( x) + y( x) = 0 (1.6)

έχει τη γνωστή γενική λύση

y = y 0 sin( x − x 0 ) (1.7)

όπου οι σταθερές y 0 και x 0 προσδιορίζονται από τις αρχικές συνθήκες.

Ωστόσο, η λίγο πιο σύνθετη εξίσωση

y ' '+ sin y = 0 (1.8)

είναι πολύ δυσκολότερο να λυθεί. Η γενική λύση της εκφράζεται και πάλι µε τη
βοήθεια ειδικών συναρτήσεων που είναι γνωστές ως ελλειπτικές συναρτήσεις, και των
οποίων οι τιµές διατίθενται σε πίνακες.

Η αριθµητική ανάλυση µας παρέχει µεθόδους για την αριθµητική επίλυση µιας
διαφορικής εξίσωσης η οποία είτε είναι δύσκολο να επιλυθεί αναλυτικά, είτε δεν έχει
γνωστές µεθόδους αναλυτικής επίλυσης. Βεβαίως, υπάρχει εδώ µία σηµαντική
διαφορά ανάµεσα στην αναλυτική και την αριθµητική επίλυση: η αναλυτική επίλυση
µας δίνει τη λύση στη µορφή µιας νέας συνάρτησης µε γνωστό τύπο. Αντίθετα, η
αριθµητική επίλυση δεν µπορεί να µας δώσει τον τύπο καµµίας συνάρτησης.
Αντιθέτως, µας δίνει ένα προσεγγιστικό υπολογισµό ενός µεγάλου πλήθους ζευγών
τιµών ( x, y ) της άγνωστης συνάρτησης y (x ) . Εχοντας ένα µεγάλο πλήθος σηµείων
της γραφικής παράστασης της y (x) µπορούµε να εξαγάγουµε τη συµπεριφορά της
συνάρτησης (µονοτονία, ακρότατα, σηµεία καµπής, κυρτότητα, ασυµπτωτική εξέλιξη)
µε πολύ ικανοποιητική ακρίβεια, έστω και αν δεν γνωρίζουµε έναν αναλυτικό τύπο για
την y (x ) .

1.2δ) Υπολογισµός τιµών ειδικών συναρτήσεων

Ενα πολύ απλό παράδειγµα που µπορεί να δοθεί εδώ είναι ο υπολογισµός των
τριγωνοµετρικών συναρτήσεων sin x, cos x, tan x για διάφορες τιµές του τόξου x
εκφρασµένου σε ακτίνια. Είναι γνωστοί σε όλους οι τριγωνοµετρικοί αριθµοί
ορισµένων βασικών γωνιών, όπως π.χ.
π 1
sin =
6 2
1. ΕΙΣΑΓΩΓΗ 5
που προκύπτουν εύκολα από θεωρήµατα της Ευκλείδιας γεωµετρίας. Το τόξο π/6
αντιστοιχεί σε επίκεντρη γωνία 300. Εποµένως γνωρίζουµε µε απλές µεθόδους το
ηµίτονο των 300. Εντούτοις, στο ερώτηµα, πόσο είναι το ηµίτονο των 270, η απάντηση
δεν είναι και τόσο απλή! Πράγµατι, το ηµίτονο των 270 υπολογίζεται χρησιµοποιώντας
αναπτύγµατα, π.χ. σε σειρά Taylor, γύρω από το τόξο µιας άλλης γωνίας µε γνωστούς
τριγωνοµετρικούς αριθµούς. Ο ρόλος των αναπτυγµάτων στην αριθµητική ανάλυση
είναι πολύ σηµαντικός. Χρησιµοποιούµε τα αναπτύγµατα α) για να κατασκευάσουµε
αριθµητικές µεθόδους κατάλληλες στην προσέγγιση ενός προβλήµατος και β) για να
ελέγξουµε τις ιδιότητες σύγκλισης των αριθµητικών µεθόδων.

1.3 Αλγόριθµοι και τυπική αλγοριθµική γλώσσα


Οπως είπαµε ήδη, ένα σηµαντικό στοιχείο κάθε αριθµητικής µεθόδου είναι το γεγονός
ότι µια τέτοια µέθοδος δοµείται "αλγοριθµικά". Πριν παρουσιάσουµε εποµένως τις
αριθµητικές µεθόδους, πρέπειι να κάνουµε µία σύντοµη αναφορά στην έννοια του
αλγόριθµου που συνδέεται αναπόφευκτα µε κάθε αριθµητική εφαρµογή.

Μπορούµε να ορίσουµε τον αλγόριθµο ως µία διαδικασία που απαρτίζεται από ένα
καλά καθορισµένο, πεπερασµένο πλήθος βηµάτων, που οδηγούν µονοσήµαντα από την
είσοδο ορισµένων δεδοµένων στην εξαγωγή ορισµένων αποτελεσµάτων.

Για να δώσουµε ένα απλό παράδειγµα, ας αναλογιστούµε πώς διαιρούµε ένα


πολυώνυµο, π.χ. , P ( x ) = x 3 − 6 x 2 + 11x − 6 µε το διώνυµο x − 3 χρησιµοποιώντας
το σχήµα Horner:

1 -6 11 -6 | 3
3 -9 6 |
1 -3 2 0 |

Αν ονοµάσουµε a3 , a 2 , a1 , a 0 τους συντελεστές του πολυωνύµου ως προς τις


αντίστοιχες δυνάµεις του x στην πρώτη σειρά, και b3 , b2 , b1 , b0 τους αντίστοιχους
συντελεστές στην τρίτη σειρά, τότε έχουµε διαδοχικά τις σχέσεις:

b3 = a 3
b2 = b3 ⋅ 3 + a 2 (1.10)
b1 = b2 ⋅ 3 + a1
b0 = b1 ⋅ 3 + a 0

όπου τα τρία τελευταία βήµατα αποτελούν, ουσιαστικά, ένα µόνο βήµα που δίνεται
από τη γενική αναδροµική σχέση

bi −1 = bi ⋅ 3 + a i −1 µε i = 3,...,1 µε βήµα -1 (1.11)


1. ΕΙΣΑΓΩΓΗ 6
Το σχήµα Horner αποτελεί µία τυπική περίπτωση αλγόριθµου. Η διαδικασία
τερµατίζεται µετά από µία συγκεκριµένη σειρά πεπερασµένων σε πλήθος βηµάτων που
οδηγούν σε ορισµένο αποτέλεσµα. Ο αλγόριθµος δέχεται ως είσοδο τις τιµές των
συντελεστών του αρχικού πολυωνύµου και την τιµή ρ του µονωνύµου (x-ρ), και
επιστρέφει ως αποτέλεσµα τις τιµές των συντελεστών του νέου πολυωνύµου και του
υπολοίπου που προκύπτει από τη διαίρεση των δύο πολυωνύµων.

Ενα βασικό πρόβληµα που τίθεται στους αλγόριθµους είναι ο τρόπος περιγραφής ενός
συγκεκριµένου αλγόριθµου. Π.χ. για να εξηγήσουµε παραπάνω τον αλγόριθµο του
σχήµατος Horner χρησιµοποιήσαµε ορισµένες µαθηµατικές σχέσεις καθώς και µία
"περιγραφή" του αλγόριθµου σε ελληνική γλώσσα. Είναι φανερό ότι αυτού του είδους
η περιγραφή δεν είναι πάντα ακριβής και µπορεί να προκαλέσει παρεξηγήσεις.
Αναζητούµε ένα πιο σύντοµο, τυποποιηµένο τρόπο γραφής των αλγόριθµων, που να
καθιστά κρυστάλλινη τη δοµή και αλληλουχία των βηµάτων του αλγόριθµου, ώστε να
µη αφήνει περιθώρια για ενναλακτική ερµηνεία του τί ακριβώς υλοποιείται σε κάθε
βήµα του αλγόριθµου.

Ενας τυποποιηµένος τρόπος γραφής αλγορίθµων είναι η τυπική αλγοριθµική γλώσσα


και βασίζεται στην ύπαρξη ορισµένων δοµών που αναλύονται παρακάτω. Τις ίδιες
αυτές δοµές, µε διαφορετικές µεταξύ τους συντακτικές παραλλαγές, συναντούµε στις
περισσότερες σύγχρονες γλώσσες προγραµµατισµού. Αν και κάθε γλώσσα περιέχει και
πολλά επιπλέον στοιχεία, ο "πυρήνας" κάθε γλώσσας προγραµµατισµού υψηλού
επιπέδου προκύπτει από την ενσωµάτωση σ'αυτήν των θεµελιωδών αλγοριθµικών
δοµών. Αυτές είναι:

1.3α) Ακολουθιακές εντολές

Εντολή εκχώρησης

Παράδειγµα
a ← 5

Η εντολή εκχώρησης a ← 5 (το σύµβολο του αριστερού βέλους ← σηµαίνει


εκχώρηση τιµής) σηµαίνει να αποδοθεί, ως τρέχουσα τιµή της µεταβλητής a η τιµή 5.
Θα πρέπει να τονισθεί ότι η εντολή εκχώρησης ενεργεί "στιγµιαία" και δεν δηµιουργεί
οποιαδήποτε συναρτησιακή σχέση ανάµεσα σε µεταβλητές που εµφανίζονται πιθανώς
στο δεξιό µέλος µιας εντολής εκχώρησης, και στη µοναδική µεταβλητή που
εµφανίζεται στο δεξιό µέλος. Παραδείγµατος χάριν, η εντολή εκχώρησης

y ← 2*x

δεν δηµιουργεί συναρτησιακή σχέση ανάµεσα στο x και στο y, δηλαδή δεν διαβάζεται
"έστω y=2x", οπότε το y εφεξής θα έπρεπε να προσαρµόζεται αυτόµατα σε κάθε
αλλαγή της τιµής του x. Αντίθετα, η εντολή εκχώρησης διαβάζεται "στη µεταβλητή y να
εκχωρηθεί τιµή ίση µε την τρέχουσα τιµή της µεταβλητής x πολλαπλασιασµένης επί δύο".
Η εντολή αυτή συνδέει στιγµιαία τις y και x. Μετά από την εκτέλεσή της παύει
1. ΕΙΣΑΓΩΓΗ 7
οποιαδήποτε σχέση ανάµεσα στις y και x, και είναι δυνατόν σε κάθε µία από τις δύο
µεταβλητές να εκχωρείται οποιαδήποτε νέα τιµή, η οποία δεν επιδρά στην τιµή της
άλλης µεταβλητής.

Εντολές Εισόδου - Εξόδου

Παράδειγµα
Read a,b
Print a,b

Οι εντολές εισόδου - εξόδου είναι ο τρόπος να διαχωριστεί η διαδικασία εισαγωγής


των δεδοµένων του αλγόριθµου από τη διαδικασία επιστροφής των ζητούµενων του
αλγόριθµου. Με τις εντολές εισόδου (Read) εισάγουµε τις τιµές των µεταβλητών που
αποτελούν δεδοµένα του αλγόριθµου, ενώ µε τις εντολές εξόδου (Print) ζητούµε την
εµφάνιση των τιµών των µεταβλητών που αποτελούν εξαγόµενα αποτελέσµατα του
αλγόριθµου.

1.3 β ∆οµή επανάληψης

Παράδειγµα

for i=1 to 17 step 2


...εντολές 1...
for j=25 to 2 step -2
...
εντολές 2
...
endfor
endfor

Η δοµή επανάληψης

for i=1 to 17 step 2


...εντολές στο εσωτερικό βρόγχου
endfor

σηµαίνει επανάληψη µε την µεταβλητή i να παίρνει διαδοχικά την τιµη από 1 ως 17


αυξανόµενη σε κάθε επανάληψη κατά δύο. Η αρχή του επαναληπτικού βρόγχου
οριοθετείται µε την εντολή for, ενώ το τέλος του βρόγχου οριοθετείται µε την εντολή
endfor. Είναι δυνατόν µέσα σε ένα βρόγχο for να υπάρχει και δεύτερος
εµφωλευµένος βρόγχος for , του οποίου το τέλος endfor δεν διασταυρώνεται µε το
αντίστοιχο endfor του εξωτερικού βρόγχου. Στην περίπτωση αυτή, για κάθε βήµα
που εκτελείται στον εξωτερικό βρόγχο, εκτελείται µία πλήρης επανάληψη όλων των
βηµάτων του εσωτερικού βρόγχου.
1. ΕΙΣΑΓΩΓΗ 8
1.3γ) ∆οµή ελέγχου

Παράδειγµα

if( a ≥ 4 and b ≠ 3 ) then


...εντολές 1...
else if(συνθήκη) then
...εντολές 2...
else
...εντολές 3...
endif

Η εντολή ελέγχου if έχει ως αποτέλεσµα να εκτελεσθεί το τµήµα του αλγόριθµου στο


εσωτερικό που οριοθετείται από την if µόνο εφόσον η συνθήκη εντός της παρένθεσης
της if είναι αληθής. Αν η εντολή είναι ψευδής, τότε, εφόσον υπάρχει else,
εκτελείται το τµήµα του αλγόριθµου κάτω από την else. Αλλιώς, η ροή του
αλγόριθµου µεταβαίνει απευθείας κάτω από την εντολή endif, η οποία οριοθετεί το
τέλος της if.

Οι πιο συνηθισµένες συνθήκες που ελέγχονται στο εσωτερικό της παρένθεσης της if
αντιστοιχούν σε λογικές προτάσεις που συντάσσονται µε τη βοήθεια των ακόλουθων
λογικών συµβόλων και τελεστών:

Λογικός Τελεστής Σύµβολο Τελεστή


Λογικό ΟΧΙ ΝΟΤ
Λογικό ΚΑΙ AND
Λογικό 'Η OR
Ισότητα =
Ανισότητα ≠
Μικρότερο <
Μεγαλύτερο >
Μικρότερο ή ίσο <=
Μεγαλύτερο ή ίσο >=

1.3δ) ∆οµή επανάληψης µε έλεγχο

Παράδειγµα
while( a ≥ 4 and b ≠ 3) do
...
εντολές
...
enddo

Η εντολή while...do συνδυάζει την επανάληψη µε τον έλεγχο της ισχύος


ορισµένης συνθήκης. Ο βρόγχος που οριοθετείται από τις while..do και enddo
εκτελείται την πρώτη φορά µόνο αν η συνθήκη στο εσωτερικό της while είναι
1. ΕΙΣΑΓΩΓΗ 9
αληθής. Μετά το τέλος της πρώτης εκτέλεσης , ελέγχεται ξανά κατά πόσο η συνθήκη
στο εσωτερικό της while παραµένει αληθής. Αν αυτό εξακολουθεί και ισχύει,
εκτελείται ο εσωτερικός βρόγχος µία δεύτερη φορά. Στη συνέχεια ελέγχεται ξανά κατά
πόσο η συνθήκη στο εσωτερικό της while παραµένει αληθής, αν ισχύει εκτελείται ο
βρόγχος τρίτη φορά και ούτω καθεξής.

You might also like