Professional Documents
Culture Documents
ΕΙΣΑΓΩΓΗ
ax 2 + bx + c = 0 (1.1)
P( x) = x 3 − 6 x 2 + 11x − 6 = 0 (1.2)
P ( x) = ( x − 3)( x 2 − 3 x + 2) (1.3)
Από την εµπειρία µας αυτή είναι δυνατό να δηµιουργηθεί η εντύπωση ότι για όλες τις
πολυωνυµικές εξισώσεις θα υπάρχει κάποια "µέθοδος" η οποία να επιτρέπει να
βρεθούν οι ρίζες, έστω και αν η µέθοδος αυτή αναµένεται γενικά να αυξάνει σε
δυσκολία καθώς αυξάνει ο βαθµός του πολυωνύµου.
Παρ' όλα αυτά, το γεγονός ότι δεν διαθέτουµε κανόνα για τον αναλυτικό υπολογισµό
των ριζών δεν σηµαίνει φυσικά ότι δεν υπάρχουν ρίζες. Αντίθετα, σε πολλές
περιπτώσεις µπορούµε να αποδείξουµε αυστηρά την ύπαρξη µίας ή περισσότερων
ριζών. Παραδείγµατος χάριν, µπορεί να αποδειχθεί εύκολα ότι η εξίσωση
P( x) = x 5 + x + 1 = 0 (1.4)
Βρισκόµαστε εδώ στην παράδοξη κατάσταση αφενός µεν να γνωρίζουµε την ύπαρξη
µιας ρίζας, και µάλιστα ενός διαστήµατος τιµών στο οποίο ανήκει η ρίζα. Εντούτοις,
δεν διαθέτουµε µία γενική αναλυτική µέθοδο που θα µας επιτρέψει να προσδιορίσουµε
ποιά είναι η ρίζα αυτή!
Στο σηµείο αυτό επεµβαίνει η αριθµητική ανάλυση. Σκοπός της, στο προηγούµενο
παράδειγµα, είναι να µας δώσει µία ή περισσότερες αριθµητικές µεθόδους, οι οποίες
ανάγονται συστηµατικά σε αντίστοιχους υπολογιστικούς αλγόριθµους που θα µας
επιτρέψουν να προσδιορίσουµε προσεγγιστικά την αριθµητική τιµή της ζητούµενης
ρίζας, έστω και αν είναι αδύνατη η διατύπωση ενός γενικού αναλυτικού τύπου για τη
ρίζα. Θα πρέπει να τονισθεί ότι η λύση που δίνεται εδώ στο πρόβληµα δεν είναι
αλγεβρική, αλλά καθαρά αριθµητική. Ενας συνδυασµός πράξεων, σε µορφή
αλγόριθµου, µας δίνει µία αριθµητική λύση η οποία συγκλίνει προς την πραγµατική
λύση του προβλήµατος µέσα σε ορισµένα όρια επιθυµητής ακρίβειας.
Ακριβώς επειδή οι αριθµητικές µέθοδοι είναι αλγοριθµικές και βασίζονται τελικά στην
εκτέλεση απλών αριθµητικών πράξεων, η υλοποίησή τους υπολογιστικά αρµόζει να
γίνεται µε τη βοήθεια του ηλεκτρονικού υπολογιστή. Στις σηµειώσεις που ακολουθούν
γίνεται εισαγωγή στις αριθµητικές µεθόδους τόσο από τη σκοπιά της θεωρίας της
αριθµητικής ανάλυσης όσο και από τη σκοπιά της υλοποίησης των αλγόριθµων σε
προγραµµατιστικό περιβάλλον.
Ως γνωστό, το ολοκλήρωµα
∫ sin xdx
0
∫ sin( x
2
)dx
0
y = y 0 sin( x − x 0 ) (1.7)
είναι πολύ δυσκολότερο να λυθεί. Η γενική λύση της εκφράζεται και πάλι µε τη
βοήθεια ειδικών συναρτήσεων που είναι γνωστές ως ελλειπτικές συναρτήσεις, και των
οποίων οι τιµές διατίθενται σε πίνακες.
Η αριθµητική ανάλυση µας παρέχει µεθόδους για την αριθµητική επίλυση µιας
διαφορικής εξίσωσης η οποία είτε είναι δύσκολο να επιλυθεί αναλυτικά, είτε δεν έχει
γνωστές µεθόδους αναλυτικής επίλυσης. Βεβαίως, υπάρχει εδώ µία σηµαντική
διαφορά ανάµεσα στην αναλυτική και την αριθµητική επίλυση: η αναλυτική επίλυση
µας δίνει τη λύση στη µορφή µιας νέας συνάρτησης µε γνωστό τύπο. Αντίθετα, η
αριθµητική επίλυση δεν µπορεί να µας δώσει τον τύπο καµµίας συνάρτησης.
Αντιθέτως, µας δίνει ένα προσεγγιστικό υπολογισµό ενός µεγάλου πλήθους ζευγών
τιµών ( x, y ) της άγνωστης συνάρτησης y (x ) . Εχοντας ένα µεγάλο πλήθος σηµείων
της γραφικής παράστασης της y (x) µπορούµε να εξαγάγουµε τη συµπεριφορά της
συνάρτησης (µονοτονία, ακρότατα, σηµεία καµπής, κυρτότητα, ασυµπτωτική εξέλιξη)
µε πολύ ικανοποιητική ακρίβεια, έστω και αν δεν γνωρίζουµε έναν αναλυτικό τύπο για
την y (x ) .
Ενα πολύ απλό παράδειγµα που µπορεί να δοθεί εδώ είναι ο υπολογισµός των
τριγωνοµετρικών συναρτήσεων sin x, cos x, tan x για διάφορες τιµές του τόξου x
εκφρασµένου σε ακτίνια. Είναι γνωστοί σε όλους οι τριγωνοµετρικοί αριθµοί
ορισµένων βασικών γωνιών, όπως π.χ.
π 1
sin =
6 2
1. ΕΙΣΑΓΩΓΗ 5
που προκύπτουν εύκολα από θεωρήµατα της Ευκλείδιας γεωµετρίας. Το τόξο π/6
αντιστοιχεί σε επίκεντρη γωνία 300. Εποµένως γνωρίζουµε µε απλές µεθόδους το
ηµίτονο των 300. Εντούτοις, στο ερώτηµα, πόσο είναι το ηµίτονο των 270, η απάντηση
δεν είναι και τόσο απλή! Πράγµατι, το ηµίτονο των 270 υπολογίζεται χρησιµοποιώντας
αναπτύγµατα, π.χ. σε σειρά Taylor, γύρω από το τόξο µιας άλλης γωνίας µε γνωστούς
τριγωνοµετρικούς αριθµούς. Ο ρόλος των αναπτυγµάτων στην αριθµητική ανάλυση
είναι πολύ σηµαντικός. Χρησιµοποιούµε τα αναπτύγµατα α) για να κατασκευάσουµε
αριθµητικές µεθόδους κατάλληλες στην προσέγγιση ενός προβλήµατος και β) για να
ελέγξουµε τις ιδιότητες σύγκλισης των αριθµητικών µεθόδων.
Μπορούµε να ορίσουµε τον αλγόριθµο ως µία διαδικασία που απαρτίζεται από ένα
καλά καθορισµένο, πεπερασµένο πλήθος βηµάτων, που οδηγούν µονοσήµαντα από την
είσοδο ορισµένων δεδοµένων στην εξαγωγή ορισµένων αποτελεσµάτων.
1 -6 11 -6 | 3
3 -9 6 |
1 -3 2 0 |
b3 = a 3
b2 = b3 ⋅ 3 + a 2 (1.10)
b1 = b2 ⋅ 3 + a1
b0 = b1 ⋅ 3 + a 0
όπου τα τρία τελευταία βήµατα αποτελούν, ουσιαστικά, ένα µόνο βήµα που δίνεται
από τη γενική αναδροµική σχέση
Ενα βασικό πρόβληµα που τίθεται στους αλγόριθµους είναι ο τρόπος περιγραφής ενός
συγκεκριµένου αλγόριθµου. Π.χ. για να εξηγήσουµε παραπάνω τον αλγόριθµο του
σχήµατος Horner χρησιµοποιήσαµε ορισµένες µαθηµατικές σχέσεις καθώς και µία
"περιγραφή" του αλγόριθµου σε ελληνική γλώσσα. Είναι φανερό ότι αυτού του είδους
η περιγραφή δεν είναι πάντα ακριβής και µπορεί να προκαλέσει παρεξηγήσεις.
Αναζητούµε ένα πιο σύντοµο, τυποποιηµένο τρόπο γραφής των αλγόριθµων, που να
καθιστά κρυστάλλινη τη δοµή και αλληλουχία των βηµάτων του αλγόριθµου, ώστε να
µη αφήνει περιθώρια για ενναλακτική ερµηνεία του τί ακριβώς υλοποιείται σε κάθε
βήµα του αλγόριθµου.
Εντολή εκχώρησης
Παράδειγµα
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
Παράδειγµα
Η δοµή επανάληψης
Παράδειγµα
Οι πιο συνηθισµένες συνθήκες που ελέγχονται στο εσωτερικό της παρένθεσης της if
αντιστοιχούν σε λογικές προτάσεις που συντάσσονται µε τη βοήθεια των ακόλουθων
λογικών συµβόλων και τελεστών:
Παράδειγµα
while( a ≥ 4 and b ≠ 3) do
...
εντολές
...
enddo