Αριθμητική Ανάλυση Εργασία #1

Σχετικά έγγραφα
Παράδειγμα #1 ΑΡΙΘΜΗΤΙΚΗ ΚΙΝΗΤΗΣ ΥΠΟΔΙΑΣΤΟΛΗΣ ΕΠΙΜΕΛΕΙΑ: Ν. Βασιλειάδης

ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, , 3 ο ΕΞΑΜΗΝΟ ΑΠΑΝΤΗΣΕΙΣ ΕΡΓΑΣΙΑΣ #1: ΑΡΙΘΜΗΤΙΚΗ ΚΙΝΗΤΗΣ ΥΠΟ ΙΑΣΤΟΛΗΣ ΚΑΙ ΡΙΖΕΣ ΕΞΙΣΩΣΕΩΝ ΕΠΙΜΕΛΕΙΑ: Σ.

Παράδειγμα #1 ΑΡΙΘΜΗΤΙΚΗ ΚΙΝΗΤΗΣ ΥΠΟΔΙΑΣΤΟΛΗΣ ΕΠΙΜΕΛΕΙΑ: Ι. Λυχναρόπουλος

ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, 3 Ο ΕΞΑΜΗΝΟ, ΔΙΔΑΣΚΩΝ: Δρ Ιωάννης Αθ. Σταυράκης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ - ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, 3 Ο ΕΞΑΜΗΝΟ, ΔΙΔΑΣΚΩΝ: Δρ Ιωάννης Αθ.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ - ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, 3 Ο ΕΞΑΜΗΝΟ, ΔΙΔΑΣΚΩΝ: Δρ Ιωάννης Αθ.

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον

Παράδειγμα #2 ΑΡΙΘΜΗΤΙΚΗ ΚΙΝΗΤΗΣ ΥΠΟΔΙΑΣΤΟΛΗΣ ΚΑΙ ΡΙΖΕΣ ΕΞΙΣΩΣΕΩΝ. ΕΠΙΜΕΛΕΙΑ: Σ. Βαρούτης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ - ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, 3 Ο ΕΞΑΜΗΝΟ, ΔΙΔΑΣΚΩΝ: Δρ Ιωάννης Αθ.

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Άσκηση 1. Α. Υπολογίστε χωρίς να εκτελέσετε κώδικα FORTRAN τα παρακάτω: Ποιά είναι η τελική τιμή του Z στα παρακάτω κομμάτια κώδικα FORTRAN:

Επαναληπτικές μέθοδοι

Αριθμητική Λύση Μη Γραμμικών Εξισώσεων Η ΜΕΘΟ ΟΣ ΤΗΣ ΙΧΟΤΟΜΙΣΗΣ 01/25/05 ΜΜΕ 203 ΙΑΛ 2 1

Ασκήσεις Γενικά Μαθηµατικά Ι Οµάδα 5 (λύσεις)

Παράδειγμα #5 EΠΙΛΥΣΗ ΜΗ ΓΡΑΜΜΙΚΩΝ ΑΛΓΕΒΡΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΜΕΘΟΔΟ NEWTON ΕΠΙΜΕΛΕΙΑ: Ν. Βασιλειάδης. ( k ) ( k)

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον

Oι εντολές COMMON και PARAMETER

Αριθμητική εύρεση ριζών μη γραμμικών εξισώσεων

Παράδειγμα #3 ΡΙΖΕΣ ΕΞΙΣΩΣΕΩΝ ΕΠΙΜΕΛΕΙΑ: ΓΙΑΝΝΗΣ ΛΥΧΝΑΡΟΠΟΥΛΟΣ

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Τμήμα Φυσικής Πανεπιστημίου Κύπρου Εαρινό Εξάμηνο 2015/2016. ΦΥΣ145 Υπολογιστικές Μέθοδοι στην Φυσική

ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, 2004, 3 Ο ΕΞΑΜΗΝΟ ΕΡΓΑΣΙΑ #5: ΑΡΙΘΜΗΤΙΚΗ ΟΛΟΚΛΗΡΩΣΗ

ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΜΕΘΟΔΟΙ, , 5 Ο ΕΞΑΜΗΝΟ ΕΡΓΑΣΙΑ #5: ΥΠΕΡΒΟΛΙΚΑ ΠΡΟΒΛΗΜΑΤΑ ΗΜΕΡΟΜΗΝΙΑ ΠΑΡΑΔΟΣΗΣ: ΕΠΙΜΕΛΕΙΑ: Ιωάννης Λυχναρόπουλος

8 FORTRAN 77/90/95/2003

Εφαρµόζοντας τη µέθοδο αριθµητικής ολοκλήρωσης Euler και Runge-Kutta 2 ης, συστηµατική σύγκριση των πέντε µεθόδων. Η επιλογή των σταθερών

Αριθμητική Ανάλυση και Εφαρμογές

ΦΥΣ 145 Μαθηµατικές Μέθοδοι στη Φυσική. Πρόοδος 28 Μαρτίου 2009 Οµάδα 1 η

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επανάληψης. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

ιαφάνειες παρουσίασης #6

Υπολογιστικά Μαθηματικά

Χρήστος Ι. Σχοινάς Αν. Καθηγητής ΔΠΘ. Συμπληρωματικές σημειώσεις για το μάθημα: «Επιχειρησιακή Έρευνα ΙΙ»

Πιο συγκεκριμένα, η χρήση του MATLAB προσφέρει τα ακόλουθα πλεονεκτήματα.

ΑΡΙΘΜΗΤΙΚΕΣ ΜΕΘΟΔΟΙ, 5 Ο ΕΞΑΜΗΝΟ, ΠΕΡΙΕΧΟΜΕΝΑ ΠΑΡΑΔΟΣΕΩΝ. Κεφ. 1: Εισαγωγή (διάρκεια: 0.5 εβδομάδες)

5269: Υπολογιστικές Μέθοδοι για Μηχανικούς. Εύρεση Ριζών.

ΑΡΙΘΜΗΤΙΚΕΣ ΜΕΘΟΔΟΙ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον (Εργαστήριο 4)

Εισαγωγή στον Προγραμματισμό Η/Υ για Χημικούς Μηχανικούς

Non Linear Equations (2)

Κεφ. 6Β: Συνήθεις διαφορικές εξισώσεις (ΣΔΕ) - προβλήματα αρχικών τιμών

Κεφ. 7: Συνήθεις διαφορικές εξισώσεις (ΣΔΕ) - προβλήματα αρχικών τιμών

1. x x = x x x

Επιμέλεια απαντήσεων: Ιωάννης Λυχναρόπουλος

Μορφοποίηση της εξόδου

0.1 Εκχειλίσεις κατά την Επίλυση Τετραγωνικής Εξίσωσης

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Δρ. Ιωάννης Λυχναρόπουλος Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας

Παράδειγμα #4 EΠΙΛΥΣΗ ΓΡΑΜΜΙΚΩΝ ΑΛΓΕΒΡΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΜΕΘΟΔΟΥΣ ΕΠΙΜΕΛΕΙΑ: Ν. Βασιλειάδης

ΦΥΣ 145 Μαθηµατικές Μέθοδοι στη Φυσική. Πρόοδος 20 Μαρτίου 2011 Οµάδα

ΜΕΜ251 Αριθμητική Ανάλυση

Κεφάλαιο 5ο: Εντολές Επανάληψης

Εισαγωγή στον Προγραμματισμό Η/Υ για Χημικούς Μηχανικούς

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τι είναι μια υπορουτίνα; με υπορουτίνα ΥΠΟΡΟΥΤΙΝΕΣ. Παράδειγμα #1: η πράξη SQ. Ποια η διαφορά συναρτήσεων και υπορουτίνων;

Άσκηση εφαρμογής της μεθόδου Newton Raphson

Σχολή Μηχανολόγων Μηχανικών ΕΜΠ 4 ο Εξάμηνο ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ. Πρώτη Ενότητα Αριθμητική Επίλυση Μη-Γραμμικών Εξισώσεων

ΑΡΙΘΜΗΤΙΚΕΣ ΜΕΘΟΔΟΙ, , 5 Ο ΕΞΑΜΗΝΟ ΔΙΔΑΣΚΩΝ: Δ. Βαλουγεώργης Απαντήσεις: ΠΡΟΟΔΟΣ 1, Επιμέλεια λύσεων: Γιώργος Τάτσιος

ΘΕΜΑ 2ο. Άσκηση εφαρµογής της µεθόδου Newton Raphson

ΑΡΙΘΜΗΤΙΚΕΣ ΜΕΘΟΔΟΙ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

IMPLICIT NONE INTEGER :: a, b, c

ΧΡΟΝΙΚΗ ΟΛΟΚΛΗΡΩΣΗ. Για την επίλυση χρονομεταβαλλόμενων προβλημάτων η διακριτοποίηση στο χώρο γίνεται με πεπερασμένα στοιχεία και είναι της μορφής:

ΜΕΜ251 Αριθμητική Ανάλυση

ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, 3 Ο ΕΞΑΜΗΝΟ, ΔΙΔΑΣΚΩΝ: Δρ Ιωάννης Αθ. Σταυράκης

Παράδειγµα #11 ΠΡΟΒΛΗΜΑΤΑ ΑΡΧΙΚΩΝ ΤΙΜΩΝ Σ Ε ΕΠΙΜΕΛΕΙΑ: Ν. Βασιλειάδης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ - ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, 3 Ο ΕΞΑΜΗΝΟ, ΔΙΔΑΣΚΩΝ: Δρ Ιωάννης Αθ.

Πίνακας Περιεχομένων

Μέθοδοι πολυδιάστατης ελαχιστοποίησης

Θεώρημα Bolzano. Γεωμετρική Ερμηνεία του θ.bolzano. Θ. Bolzano και ύπαρξη ρίζας

Ενότητα 1 Διάλεξη 3. Προγραμματισμός με Εφαρμογές στην Επιστήμη του Μηχανικού. Σιέττος Κωνσταντίνος

πεπερασμένη ή Η αναλυτική λύση της διαφορικής εξίσωσης δίνεται με τη βοήθεια του Mathematica: DSolve u'' r 1 u' r 1, u 1 0, u' 0 0,u r,r

Υπολογιστές Ι. Άδειες Χρήσης. Υποπρογράμματα. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

την κεντρώα έκφραση πεπερασμένων διαφορών 2 ης τάξης και για τη παράγωγο f την ανάδρομη έκφραση πεπερασμένων διαφορών 2 ης τάξης xxx

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον (Εργαστήριο 6)

Πρόλογος Εισαγωγή στη δεύτερη έκδοση Εισαγωγή... 11

ΦΥΣ 145 Υπολογιστικές Μέθοδοι στη Φυσική. Πρόοδος 26 Μαρτίου 2007 Ομάδα 1 η

Προγραμματισμός με FORTRAN Συνοπτικός Οδηγός Α. Σπυρόπουλος Α. Μπουντουβής

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΦΥΣ 145 Υπολογιστικές Μέθοδοι στη Φυσική. Πρόοδος 26 Μαρτίου 2007 Ομάδα 1 η

Ενότητα 1 Διάλεξη 4. Προγραμματισμός με Εφαρμογές στην Επιστήμη του Μηχανικού. Σιέττος Κωνσταντίνος

Η διατήρηση μάζας σε ένα σύστημα τριών αντιδραστήρων περιγράφεται από το παρακάτω σύστημα συνήθων διαφορικών εξισώσεων:

1η Οµάδα Ασκήσεων. ΑΣΚΗΣΗ 1 (Θεωρία)

Παράδειγμα #5 ΕΠΙΛΥΣΗ ΓΡΑΜΜΙΚΩΝ & ΜΗ ΓΡΑΜΜΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΕΠΙΜΕΛΕΙΑ: Σ. Βαρούτης

8 ΕΠΙΛΥΣΗ ΜΗ ΓΡΑΜΜΙΚΩΝ ΕΞΙΣΩΣΕΩΝ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΕΛΛΗΝΙΚΟ ΑΝΟΙKΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΠΑΡΑΔΕΙΓΜΑ 14 ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΜΕΘΟΔΟΙ, , 5 Ο ΕΞΑΜΗΝΟ ΕΡΓΑΣΙΑ #1: ΣΥΝΗΘΕΙΣ ΔΙΑΦΟΡΙΚΕΣ ΕΞΙΣΩΣΕΙΣ ΚΑΙ ΣΥΣΤΗΜΑΤΑ ΠΡΟΒΛΗΜΑΤΑ ΑΡΧΙΚΩΝ ΤΙΜΩΝ

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

ΦΥΣ 145 Λύσεις Ενδιάμεσης Εξέτασης Χ. Παναγόπουλος 12/3/2015

Πίνακες. FORTRAN και Αντικειμενοστραφής Προγραμματισμός

Εισαγωγή στον Προγραμματισμό Η/Υ για Χημικούς Μηχανικούς

Εισαγωγή στο Προγραμματισμό για Μηχανολόγους Οδηγός Προετοιμασίας για τη Τελική Εξέταση

Μέθοδοι μονοδιάστατης ελαχιστοποίησης

Fortran και Αντικειμενοστραφής προγραμματισμός.

Κεφάλαιο 2. Πραγματικές ρίζες μη γραμμικών συναρτήσεων

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ ΠΙΝΑΚΕΣ. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Εισαγωγή στον Προγραμματισμό Η/Υ για Χημικούς Μηχανικούς

Μέθοδοι μονοδιάστατης ελαχιστοποίησης

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

Παράδειγμα #9 ΠΡΟΒΛΗΜΑΤΑ ΔΥΟ ΟΡΙΑΚΩΝ ΤΙΜΩΝ ΕΛΛΕΙΠΤΙΚΕΣ ΣΔΕ ΕΠΙΜΕΛΕΙΑ: Ν. Βασιλειάδης

Δομή προγράμματος στη Fortran

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΕΞΕΤΑΣΤΙΚΗ ΠΕΡΙΟ ΟΣ:

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Η ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Εντολές Επανάληψης REPEAT UNTIL, FOR, WHILE

Transcript:

ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, 2006-2007, 3 Ο ΕΞΑΜΗΝΟ ΑΠΑΝΤΗΣΕΙΣ ΕΡΓΑΣΙΑΣ #1: ΑΡΙΘΜΗΤΙΚΗ ΚΙΝΗΤΗΣ ΥΠΟ ΙΑΣΤΟΛΗΣ και ΡΙΖΕΣ ΕΞΙΣΩΣΕΩΝ ΕΠΙΜΕΛΕΙΑ: Σ. Μισδανίτης 2. Πως ορίζεται και τι σημαίνει ο όρος flop στους επιστημονικούς υπολογισμούς. Βρείτε τον χρόνο που απαιτείται στον υπολογιστή σας για να εκτελέσετε 1ΚFlop, 1ΜFlop, 1Gflop και 1Tflop. Απάντηση: Ο όρος flop σημαίνει floating point operation (πράξη μεταξύ αριθμών κινητής υποδιαστολής) και ορίζεται ως ο χρόνος που χρειάζεται ένας υπολογιστής για να υπολογίσει έναν πολλαπλασιασμό και µία πρόσθεση μαζί, δηλαδή y a+x*y, συν τον χρόνο που απαιτείται για την ανάκτηση από την μνήμη RAM των δεδομένων που εμπλέκονται στις δύο αυτές πράξεις. Οι ποσότητες a και x είναι σταθερές και γνωστές όπως επίσης γνωστή και η αρχική τιμή της ποσότητας y. To «flop» αποτελεί μονάδα μέτρησης της ταχύτητας του επεξεργαστή και σημείο αναφοράς όταν συγκρίνεται η ταχύτητα υπολογισμών ανάμεσα σε Η/Υ. Σε Visual Fortran 6.6 (Fortran 90) το αντίστοιχο πρόγραμμα είναι: Program Flop implicit none real(8)::a,x,y,ts,tf integer(8)::i,lim print*,'give max number of flops' read*,lim a=1. x=1. y=0. i=1

Call Cpu_time(ts) do i=1,lim y=a+x*y enddo Call Cpu_time(tf) print*, 'the time needed for the evaluation of',lim,' flops is' print*, tf-ts,'sec' end Για το 1ΚFlop 0.000000000000000E+000 sec 1ΜFlop 0.000000000000000E+000 sec 1Gflop 8.82812500000000 sec και 1Tflop 8.736,609375 sec 3. Βρείτε τις δύο ρίζες της εξίσωσης εφαρμόζοντας τις μεθόδους: i. ιχοτόµηση ii. Γραµμική παρεµβολή iii. Απλή αντικατάσταση xe x 3 e = 0 µε ακρίβεια έξι σημαντικών ψηφίων ( 1) ( ) ( ) iv. n + x = (1 ω) x n + ωf( x n ) v. Newton-Raphson vi. Τέµνουσα vii. Aitken Να σχολιασθούν τα χαρακτηριστικά (πλεονεκτήματα και μειονεκτήματα) της κάθε μεθόδου. Επίσης, να γίνει συστηματική σύγκριση της αποτελεσματικότητας των μεθόδων που να περιλαμβάνει σε κάθε περίπτωση την θεωρητική και πειραματική σύγκλιση και τον απαιτούμενο χρόνο υπολογισμών.

Απάντηση: Χρησιμοποιώντας Mathematica μπορούμε να πάρουμε τη γραφική παράσταση της εξίσωσης της οποίας καλούμαστε να υπολογίσουμε τις ρίζες της. 0.3 0.25 0.2 0.15 0.1 0.05-0.05 1 2 3 4 5 Σχήμα 1: Γραφική παράσταση της xe x 3 e = 0 0.1 0.02-0.2-0.1 0.1 0.2-0.1 0.01-0.2 4.2 4.4 4.6 4.8 5-0.3-0.01 Σχήμα 2: Εστίαση της γραφικής στο -0,25<x<0.25 Σχήμα 3: Εστίαση της γραφικής στο 4<x<5 Επίσης, το Mathematica περιλαμβάνει υπορουτίνες οι οποίες μπορούν να υπολογίσουν ρίζες εξισώσεων. Εισάγοντας την εξίσωση της άσκησης παίρνουμε σαν αποτέλεσμα x 1 =0.524691 10-1, x 2 =0.450524 10 1. 3

i. Μέθοδος Διχοτόμησης Το Πρόγραμμα 1 που χρησιμοποιήθηκε για τον εντοπισμό των ριζών παρουσιάζεται παρακάτω Πρόγραμμα 1: Μέθοδος Διχοτόμησης!*****************************************!* Program to demonstrate Bisection subroutine *!* --------------------------------------------------------- *!* Find a real root of f(x)=x*e^(-x)-e^(-3) *!***************************************** PROGRAM Bisection real*8 e,x,x0,x1,y,ts,tf integer m open(1,file='results.txt') print *,' ' print *,'What is the initial range (X0,X1):' print *,' ' write(*,"(' X0 = ')",advance='no'); read *, x0 write(*,"(' X1 = ')",advance='no'); read *, x1 write(*,"(/' Convergence criterion: ')",advance='no'); read *, e call Cpu_time(ts) call Bisect(e,m,x,x0,x1)! Call bisection routine call Cpu_time(tf) write(*,50) x write(*,60) Y(x) write(*,70) m print*, tf-ts stop 50 format(//' The calculated zero is X = ',E14.7) 60 format(/' The associated Y value is Y = ',E14.7) 70 format(/' The number of steps was: ',i2//) end real*8 Function Y(x) real*8 x Y =x*exp(-x)-exp(-3d0) end Subroutine Bisect(e,m,x,x0,x1) integer m real*8 e,x,x0,x1,y0,yy,y m=0 100 y0=y(x0) 4

x=(x0+x1)/2.d0 yy=y(x) m=m+1 write(1,5) m,x0,x,x1,y0,yy,x1-x0 if (dabs(yy*y0).eq.0) return if ((yy*y0)<0.d0) x1=x if ((yy*y0)>0.d0) x0=x if (dabs(x1-x0)>e) goto 100 return 5 format (i3,2x,e14.7,2x,e14.7,2x,e14.7,2x,e14.7,2x,e14.7,2x,e14.7) end! End of file Bisect.f90 Εφαρμόζουμε τη μέθοδο της διχοτόμησης στο διάστημα [0,0.1] και για σφάλμα x new old 7 x < 10, όπου new x και old x διαδοχικές εκτιμήσεις της ρίζας, παίρνουμε N x0 x x1 y(x) y(x1) Σφάλμα 1 0.00000000 0.05000000 0.10000000-0.04978707-0.00222560 0.1000000 2 0.05000000 0.07500000 0.10000000-0.00222560 0.01979369 0.0500000 3 0.05000000 0.06250000 0.07500000-0.00222560 0.00892625 0.0250000 4 0.05000000 0.05625000 0.06250000-0.00222560 0.00338621 0.0125000 5 0.05000000 0.05312500 0.05625000-0.00222560 0.00058932 0.0062500 6 0.05000000 0.05156250 0.05312500-0.00222560-0.00081588 0.0031250 7 0.05156250 0.05234375 0.05312500-0.00081588-0.00011271 0.0015625 8 0.05234375 0.05273438 0.05312500-0.00011271 0.00023845 0.0007813 9 0.05234375 0.05253906 0.05273438-0.00011271 0.00006290 0.0003906 10 0.05234375 0.05244141 0.05253906-0.00011271-0.00002490 0.0001953 11 0.05244141 0.05249023 0.05253906-0.00002490 0.00001900 0.0000977 12 0.05244141 0.05246582 0.05249023-0.00002490-0.00000295 0.0000488 13 0.05246582 0.05247803 0.05249023-0.00000295 0.00000803 0.0000244 14 0.05246582 0.05247192 0.05247803-0.00000295 0.00000254 0.0000122 15 0.05246582 0.05246887 0.05247192-0.00000295-0.00000020 0.0000061 16 0.05246887 0.05247040 0.05247192-0.00000020 0.00000117 0.0000031 17 0.05246887 0.05246964 0.05247040-0.00000020 0.00000048 0.0000015 18 0.05246887 0.05246925 0.05246964-0.00000020 0.00000014 0.0000008 19 0.05246887 0.05246906 0.05246925-0.00000020-0.00000003 0.0000004 20 0.05246906 0.05246916 0.05246925-0.00000003 0.00000005 0.0000002 Ο αλγόριθμος συγκλίνει στη ρίζα: 0.5246916x10-1 µε σφάλμα 0.5x10-7 μετά από 20 διχοτομήσεις και ο απαιτούμενος χρόνος είναι μικρότερος από 10-6 sec. 5

Ομοίως για το διάστημα [4.4,4.6] και για σφάλμα 7 10 παίρνουμε N x0 x x1 y(x0) y(x) Σφάλμα 1 4.40000000 4.50000000 4.60000000 0.00423323 0.00020342 0.20000000 2 4.50000000 4.55000000 4.60000000 0.00020342-0.00170629 0.10000000 3 4.50000000 4.52500000 4.55000000 0.00020342-0.00075999 0.05000000 4 4.50000000 4.51250000 4.52500000 0.00020342-0.00028044 0.02500000 5 4.50000000 4.50625000 4.51250000 0.00020342-0.00003905 0.01250000 6 4.50000000 4.50312500 4.50625000 0.00020342 0.00008205 0.00625000 7 4.50312500 4.50468700 4.50625000 0.00008205 0.00002146 0.00312500 8 4.50468700 4.50546900 4.50625000 0.00002146-0.00000880 0.00156250 9 4.50468700 4.50507800 4.50546900 0.00002146 0.00000633 0.00078125 10 4.50507800 4.50527300 4.50546900 0.00000633-0.00000124 0.00039063 11 4.50507800 4.50517600 4.50527300 0.00000633 0.00000255 0.00019531 12 4.50517600 4.50522500 4.50527300 0.00000255 0.00000065 0.00009766 13 4.50522500 4.50524900 4.50527300 0.00000065-0.00000029 0.00004883 14 4.50522500 4.50523700 4.50524900 0.00000065 0.00000018 0.00002441 15 4.50523700 4.50524300 4.50524900 0.00000018-0.00000006 0.00001221 16 4.50523700 4.50524000 4.50524300 0.00000018 0.00000006 0.00000610 17 4.50524000 4.50524100 4.50524300 0.00000006 0.00000000 0.00000305 18 4.50524100 4.50524200 4.50524300 0.00000000-0.00000003 0.00000153 19 4.50524100 4.50524200 4.50524200 0.00000000-0.00000001 0.00000076 20 4.50524100 4.50524200 4.50524200 0.00000000 0.00000000 0.00000038 21 4.50524100 4.50524100 4.50524200 0.00000000 0.00000000 0.00000019 Ο αλγόριθμος συγκλίνει στη ρίζα: 0.4505241x10 1 µε σφάλμα 0.19x10-7 μετά από 18 διχοτομήσεις και ο απαιτούμενος χρόνος είναι μικρότερος από 10-6 sec. ii. Μέθοδος Γραμμικής Παρεμβολής Το Πρόγραμμα που χρησιμοποιήθηκε για τον εντοπισμό των ριζών παρουσιάζεται παρακάτω Πρόγραμμα 2: Μέθοδος Γραμμικής Παρεμβολής!*******************************************!* Program to demonstrate Grammiki Paremvoli *!* ------------------------------------------------------------ *!* Find a real root of f(x)=x*e^(-x)-e^(-3) *!******************************************* Program GrammikiParemboli implicit none 6

real(8)::x,x0,x1,a,b,e,sfalma,ts,tf integer::m e=1.e-07 open(12,file='grammikiparemboli.txt') print*,'dose x0' read*, x0 print*,'dose x1' read*, x1 write(12,16) 'N','x0','x','x1','y(x0)','y(x)','y(x1)','Sfalma' Call Cpu_time(ts) do while (abs(y(x))>e) m=m+1 x=x0-((y(x0)*(x1-x0))/(y(x1)-y(x0))) Sfalma=abs((x-x1)/x) write(12,15)m,x0,x,x1,y(x0),y(x),y(x1),sfalma if (y(x0)*y(x)<0) then x1=x else if (y(x0)*y(x)>0) then write(12,15)m,x0,x,x1,y(x0),y(x),y(x1),sfalma x0=x else print*,x exit end if if (abs(1.-x0/x)<=e.and.abs(1.-x0/x1)<=e) then exit endif end do Call Cpu_time(tf) write(12,*) ' ' write(12,*)'stin EPANALIPSI:',m write(12,*),'h RIZA BRETHIKE ISH ME:',x print*, 'o xronos pou apaitithike einai',tf-ts 15 format (i3,2x,f11.8,2x,f11.8,2x,f11.8,2x,f11.8,2x,f11.8,2x,f11.8,2x,f11.8) 16 format (2x,a1,8X,a2,10X,a1,12X,a2,10X,a5,8X,a4,9X,a5,7X,a6) contains real function y(x) real(8)::x y=x*exp(-x)-exp(-3.) end function end program GrammikiParemboli 7

Εφαρμόζουμε τη μέθοδο της γραμμικής παρεμβολής στο διάστημα [0,0.1] και για σφάλμα 10 7 παίρνουμε N x0 x x1 y(x0) y(x) y(x1) Σφάλμα 1 0.00000000 0.05502322 0.10000000-0.0497870 0.00229038 0.04069667 0.81741460 2 0.00000000 0.05260328 0.05502322-0.0497870 0.00012063 0.00229038 0.04600359 3 0.00000000 0.05247614 0.05260328-0.0497870 0.00000633 0.00012063 0.00242287 4 0.00000000 0.05246947 0.05247614-0.0497870 0.00000033 0.00000633 0.00012715 5 0.00000000 0.05246912 0.05246947-0.0497870 0.00000002 0.00000033 0.00000667 Ο αλγόριθμος συγκλίνει στη ρίζα: 0.5246916x10-1 µε σφάλμα 0.667x10-5 μετά από 5 γραμμικές παρεμβολές και ο απαιτούμενος χρόνος είναι μικρότερος από 10-6 sec. Ομοίως για το διάστημα [4.4,4.6] και για σφάλμα 7 10 παίρνουμε N x0 x x1 y(x0) y(x) y(x1) Σφάλμα 1 4.40000000 4.50879747 4.60000000 0.00423323-0.0001375-0.0035486 0.02022768 2 4.40000000 4.50537313 4.50879747 0.00423323-0.0000051-0.0001375 0.00076006 3 4.40000000 4.50524640 4.50537313 0.00423323-0.0000001-0.0000051 0.00002813 4 4.40000000 4.50524171 4.50524640 0.00423323-0.0000000-0.0000001 0.00000104 Ο αλγόριθμος συγκλίνει στη ρίζα: 0.4505241x10 1 µε σφάλμα 0.1x10-5 μετά από 4 γραμμικές παρεμβολές και ο απαιτούμενος χρόνος είναι μικρότερος από 10-6 sec. iii. Μέθοδος Απλής Αντικατάστασης Υπολογίζουμε τις ρίζες της εξίσωσης x 3 f( x) = xe e = 0κάνοντας χρήση της μεθόδου της απλής αντικατάστασης. Για το λόγο αυτό, μετασχηματίζουμε την αρχική σχέση σε μια ισοδύναμη της μορφής x = F( x) και επομένως έχουμε e xe e xe e x x e e 3 x 3 x 3 x 3 = 0 = = = x και F'( x) = e Για τον έλεγχο σύγκλισης θα πρέπει να ισχύει F'( x ) < 1. Εφαρμόζουμε τον παραπάνω x 3 αναδρομικό τύπο στο διάστημα [0,0.1] και υπολογίζουμε την F'(0.05) 0.05 3 = e 8

F '(0.05) = 0.05234 < 1 και επομένως αναμένουμε σύγκλιση. Το Πρόγραμμα 3 που χρησιμοποιήθηκε για τον εντοπισμό των ριζών παρουσιάζεται παρακάτω Πρόγραμμα 3: Μέθοδος Απλής Αντικατάστασης!*********************************************!* Program to demonstrate Diadoxikes Epanalipseis *!* ----------------------------------------------------------------*!* Find a real root of f(x)=x*e^(-x)-e^(-3) *!********************************************* Program DiadoxikesEpanalipseis implicit none real(8)::x,x0,e,sfalma,ts,tf integer::iter,m,n e=1.e-07 sfalma=1.e+06 print*,'dose x0' read*,x0 open(14,file='diadoxikes Epanalipseis.txt') write(14,16) ' N', 'x', 'x0', 'G(x) ', 'dg(x)', 'Sfalma' Call Cpu_time(ts) do while (sfalma>e) m=m+1 x=g(x0) Sfalma=abs((x-x0)/x) if (Sfalma+0.00001<e) goto 100 write(14,15) m,x,x0,g(x0),dg(x0),sfalma x0=x enddo Call Cpu_time(tf) 100 write(14,*) ' ' write(14,*)'stin EPANALIPSI:',m write(14,*),'h RIZA BRETHIKE ISH ME:',x0 print*,tf-ts 15 format (I3,2X,F13.11,2X,F13.11,2X,F13.11,2X,F15.11,2X,F15.11) 16 format (2x,a1,10X,a1,10X,a2,13X,a4,12X,a5,,9X,a6) contains real function g(x) real(8)::x g=exp(x-3.) end function real function dg(x) real(8)::x dg=exp(x-3.) end function end program DiadoxikesEpanalipseis 9

Εφαρμόζουμε τη μέθοδο της απλής αντικατάστασης με αρχική εκτίμηση x0=0 και για σφάλμα 10 7 παίρνουμε N x x0 G(x) dg(x) Σφάλμα 1 0.04978707 0.00000000 0.04978707 0.04978707 1.00000000 2 0.05232856 0.04978707 0.05232856 0.05232856 0.04856800 3 0.05246172 0.05232856 0.05246172 0.05246172 0.00253831 4 0.05246871 0.05246172 0.05246871 0.05246871 0.00013313 5 0.05246908 0.05246871 0.05246908 0.05246908 0.00000703 6 0.05246910 0.05246908 0.05246910 0.05246910 0.00000036 7 0.05246910 0.05246910 0.05246910 0.05246910 0.00000000 Ο αλγόριθμος συγκλίνει στη ρίζα: 0.5246916x10-1 µε σφάλμα 0.000000 μετά από 6 επαναλήψεις και ο απαιτούμενος χρόνος είναι μικρότερος από 10-6 sec. Για την περίπτωση της 2 ης ρίζας, ο αντίστοιχος έλεγχος σύγκλισης στο διάστημα [0,0.1] μας επιστρέφει F'(4.5) e 4.5 3 = F '(4.5) 4.481689 1 = > και επομένως δεν αναμένουμε σύγκλιση. Επομένως, για την εύρεση της 2 ης ρίζας εφαρμόζουμε ένα διαφορετικό αναδρομικό τύπο του οποίου η παράγωγος στο 4.5 θα είναι μικρότερη της μονάδας και επομένως έχουμε 3 x 3 x 3 e x 3 xe e = 0 xe = e x= x= e lnx= x 3 x= lnx+ 3 και x e F'( x ) Για τον έλεγχο σύγκλισης θα πρέπει να ισχύει F'( x ) < 1. Εφαρμόζουμε τον παραπάνω αναδρομικό τύπο στο διάστημα [4.4,4.6] και υπολογίζουμε την 1 = x 1 F '(4.5) = 4.5 F '(4.5) = 0.2222 < 1 και επομένως αναμένουμε σύγκλιση. Χρησιμοποιούμε το Πρόγραμμα 3 με το νέο αναδρομικό τύπο g=log(x)+3. και dg=1./x στις παραμέτρους των function. Εφαρμόζουμε τη μέθοδο της απλής αντικατάστασης με αρχική εκτίμηση x0=4 και για σφάλμα 10 7 παίρνουμε 10

N x x0 G(x) dg(x) Σφάλμα 1 4.38629436 4.00000000 4.38629436 0.25000000 0.08806850 2 4.47848463 4.38629436 4.47848463 0.22798288 0.02058515 3 4.49928474 4.47848463 4.49928474 0.22328982 0.00462298 4 4.50391865 4.49928474 4.50391865 0.22225755 0.00102886 5 4.50494766 4.50391865 4.50494766 0.22202888 0.00022842 6 4.50517607 4.50494766 4.50517607 0.22197816 0.00005070 7 4.50522709 4.50517607 4.50522709 0.22196691 0.00001132 8 4.50523853 4.50522709 4.50523853 0.22196439 0.00000254 9 4.50524092 4.50523853 4.50524092 0.22196382 0.00000053 10 4.50524139 4.50524092 4.50524139 0.22196372 0.00000011 11 4.50524139 4.50524139 4.50524139 0.22196369 0.00000000 Ο αλγόριθμος συγκλίνει στη ρίζα: 0.4505241x10 1 µε σφάλμα 0.1x10-5 μετά από 10 επαναλήψεις και ο απαιτούμενος χρόνος είναι μικρότερος από 10-6 sec. iv. Μέθοδος Απλής Αντικατάστασης με παράμετρο χαλάρωσης Ο αλγόριθμος με παράμετρο χαλάρωσης ω βελτιώνει τη σύγκλιση και έχουμε ( n + 1) ( ) ( ) x = (1 ω) x n + ωf( x n ) =G(ω, x (n) ) (*) dg Στη συγκεκριμένη περίπτωση σύγκλιση επιτυγχάνεται για < 1 dx dg Θεωρητικά το σφάλμα εξαφανίζεται για = 0 αφού dx σ (n+1) =σ (n) dg dg (για = 0 σ (n+1) =0) dx dx Στην περίπτωση αυτή μπορούμε να υπολογίσουμε το βέλτιστο δυνατό ω dg dx = 0 dg 1 (*) 1 ω + ω = 0 ωopt. =, ω>1 ή ω<1 dx 1 F ' Χρησιμοποιούμε τους αντίστοιχους αναδρομικούς τύπους του υποπροβλήματος iii και συγκεκριμένα για την πρώτη ρίζα x x 3 = e ενώ για τη δεύτερη x ln x 3 = +. Το Πρόγραμμα 4 που χρησιμοποιήθηκε για τον εντοπισμό των ριζών παρουσιάζεται παρακάτω 11

Πρόγραμμα 4: Μέθοδος Απλής Αντικατάστασης με παράμετρο χαλάρωσης!*********************************************!* Program to demonstrate Diadoxikes Epanalipseis *!* me parametro xalarwsis *!* --------------------------------------------------------------- *!* Find a real root of f(x)=x*(e^-x)-(e^-3) *!********************************************* Program Wmega implicit none real(8)::x,x0,w,e,sfalma,ts,tf integer::m,i print*,'dose x0' read*,x0 w=1/(1-dy(x0)) print*, w e=1.e-07 open(12,file='wmega.txt') sfalma=1.e+06 write(12,16) 'N','x','x0', 'Y(x)','dY(x)','Sfalma' call cpu_time(ts) do while(sfalma>e) m=m+1 x=(1-w)*x0+w*y(x0) Sfalma=abs((x-x0)/x) write(12,15) m,x,x0,y(x0),dy(x0),sfalma x0=x enddo call cpu_time(tf) write(12,*) 'H epithimiti siglisi epitygxanetai se',tf-ts,'sec' print*, tf-ts 15 format (I3,2X,F11.8,2X,F14.8,2X,F12.8,2X,F11.8,2X,F11.8) 16 format (2x,a1,10X,a1,10X,a2,13X,a4,12X,a5,7X,a6) contains real function y(x) real(8)::x y=exp(x-3.) end function real function dy(x) real(8)::x dy=exp(x-3.) end function end program Wmega 12

Εφαρμόζουμε τη μέθοδο της απλής αντικατάστασης. Με αρχική εκτίμηση x0=0 βρίσκουμε ω=1.052396. Για σφάλμα 7 10 παίρνουμε N x x0 Υ(x) dυ(x) Σφάλμα 1 0.05239569 0.00000000 0.04978707 0.04978707 1.00000000 2 0.05246889 0.05239569 0.05246525 0.05246525 0.00139501 3 0.05246910 0.05246889 0.05246909 0.05246909 0.00000398 4 0.05246910 0.05246910 0.05246910 0.05246910 0.00000000 Ο αλγόριθμος συγκλίνει στη ρίζα: 0.5246916x10-1 µε σφάλμα 0.398x10-5 μετά από 3 επαναλήψεις και ο απαιτούμενος χρόνος είναι μικρότερος από 10-6 sec. Ομοίως και για τη δεύτερη ρίζα με τις αλλαγές που αναφέραμε παραπάνω. Με αρχική εκτίμηση x0=4 βρίσκουμε ω=1.333333. Για σφάλμα 7 10 παίρνουμε N x x0 Υ(x) dυ(x) Σφάλμα 1 4.51505915 4.00000000 4.38629436 0.25000000 0.11407584 2 4.50487116 4.51505915 4.50741816 0.22148104 0.00226155 3 4.50525545 4.50487116 4.50515938 0.22198193 0.00008530 4 4.50524116 4.50525545 4.50524473 0.22196300 0.00000317 5 4.50524147 4.50524116 4.50524139 0.22196370 0.00000007 Ο αλγόριθμος συγκλίνει στη ρίζα: 0.4505241x10 1 µε σφάλμα 0.317x10-5 μετά από 4 επαναλήψεις και ο απαιτούμενος χρόνος είναι μικρότερος από 10-6 sec. v. Μέθοδος Newton - Raphson Εξετάζουμε την σύγκλιση του σχήματος και υπολογίζουμε το λόγο f ''( x) 2 f '( x) σε ένα τυχαίο σημείο του διαστήματος [0,0.1] π.χ. για x=0. τότε θα παρατηρήσουμε ότι f ''( x) 2 f '( x ) = 1. Αυτό σημαίνει ότι η μέθοδος Newton συγκλίνει οριακά στο διάστημα [0,0.1]. Το Πρόγραμμα 5 που χρησιμοποιήθηκε για τον εντοπισμό των ριζών παρουσιάζεται παρακάτω 13

Πρόγραμμα 5: Μέθοδος Newton - Raphson!*************************************!* Program to demonstrate Newton *!* --------------------------------------------------- *!* Find a real root of f(x)=x*e^(-x)-e^(-3) *!************************************* program Newton implicit none real::x,x0,error,sfalma,tf,ts integer::iter,i print*,'dose x0' read*,x0 Error=1.E-07 open(12,file='newton.txt') write(12,16) 'N','x','x0','y(x)','dy(x)','Sfalma' call cpu_time(ts) sfalma=100 do while (sfalma>error) ITER=ITER+1 x=x0-(y(x0)/dy(x0)) Sfalma=abs((x-x0)/x) write(12,15) ITER,x,x0,y(x0),dy(x0),Sfalma x0=x enddo call cpu_time(tf) write(12,*) ' ' write(12,*)'stin EPANALIPSI:',ITER write(12,*),'h RIZA BRETHIKE ISH ME:',x print*,tf-ts 15 format (I3,2X,F15.11,2X,F15.11,2X,F15.11,2X,F17.11,2X,F13.11) 16 format (2x,a1,10X,a1,15X,a2,15X,a4,15X,a5,8X,a6) contains real function y(x) real::x y=x*exp(-x)-exp(-3.) end function real function dy(x) real::x dy=exp(-x)*(1.-x) end function end program Newton 14

Εφαρμόζουμε τη μέθοδο της Newton με αρχική εκτίμηση x0=0 και για σφάλμα 10 7 παίρνουμε N x x0 Υ(x) dυ(x) Σφάλμα 1 0.04978707 0.00000000-0.0497870 1.00000000 1.00000000 2 0.05246172 0.04978707-0.0024180 0.90406299 0.05098303 3 0.05246910 0.05246172-0.0000066 0.89911020 0.00014051 4 0.05246910 0.05246910 0.00000000 0.89909661 0.00000000 Ο αλγόριθμος συγκλίνει στη ρίζα: 0.5246916x10-1 µε σφάλμα 0.1405x10-3 μετά από 3 επαναλήψεις και ο απαιτούμενος χρόνος είναι μικρότερος από 10-6 sec. Ομοίως και για τη δεύτερη ρίζα. Εξετάζουμε την σύγκλιση του σχήματος και υπολογίζουμε το λόγο f ''( x) 2 f '( x) σε ένα τυχαίο σημείο του διαστήματος [4.4,4.6] π.χ. για x=4.4 τότε θα παρατηρήσουμε ότι f ''( x) 2 f '( x ) =0.352941. Αυτό σημαίνει ότι η μέθοδος Newton αναμένεται να συγκλίνει στο διάστημα [4.4,4.6]. Εφαρμόζουμε τη μέθοδο της Newton με αρχική εκτίμηση x0=0 και για σφάλμα 7 10 παίρνουμε N x x0 Υ(x) dυ(x) Σφάλμα 1 4.42723942 4.00000000 0.02347549-0.0549469 0.09650245 2 4.50311995 4.42723942 0.00310705-0.0409466 0.01685066 3 4.50523996 4.50311995 0.00008224-0.0387949 0.00047057 4 4.50524139 4.50523996 0.00000006-0.0387369 0.00000032 5 4.50524139 4.50524139 0.00000000-0.0387361 0.00000000 Ο αλγόριθμος συγκλίνει στη ρίζα: 0.4505241x10 1 µε σφάλμα 0.32x10-6 μετά από 4 επαναλήψεις και ο απαιτούμενος χρόνος είναι μικρότερος από 10-6 sec. vi. Μέθοδος Τέμνουσας Το Πρόγραμμα 6 που χρησιμοποιήθηκε για τον εντοπισμό των ριζών παρουσιάζεται παρακάτω 15

Πρόγραμμα 6: Μέθοδος Τέμνουσας!*************************************!* Program to demonstrate Temnousa *!* --------------------------------------------------- *!* Find a real root of f(x)=x*e^(-x)-e^(-3) *!************************************* program Temnousa implicit none real(8)::x,x0,x1,error,sfalma,tf,ts integer::iter,i print*,'dose x0' read*,x0 print*,'dose x1' read*,x1 Error=1.E-07 open(12,file='temnousa.txt') write(12,16) 'N','x','x0','x1','y(x)','Sfalma' call cpu_time(ts) sfalma=100. do while (sfalma>error) ITER=ITER+1 x=x0-y(x0)/((y(x0)-y(x1))/(x0-x1)) Sfalma=abs((x-x0)/x) write(12,15) ITER,x,x0,x1,y(x0),Sfalma x0=x1 x1=x enddo call cpu_time(tf) write(12,*) ' ' write(12,*)'stin EPANALIPSI:',ITER write(12,*),'h RIZA BRETHIKE ISH ME:',x print*,tf-ts 15 format (I3,2X,F15.11,2X,F15.11,2X,F15.11,2X,F15.11,2X,F17.11) 16 format (2x,a1,10X,a1,15X,a2,15X,a2,15X,a4,14X,a6) contains real function y(x) real(8)::x y=x*exp(-x)-exp(-3d0) end function end program Temnousa 16

Εφαρμόζουμε τη μέθοδο της τέμνουσας στο διάστημα [0,0.1] και για σφάλμα 10 7 παίρνουμε N x x0 x1 y(x) Σφάλμα 1 0.05502322 0.00000000 0.10000000-0.0497870 1.00000000 2 0.05234100 0.10000000 0.05502322 0.04069667 0.91054807 3 0.05246943 0.05502322 0.05234100 0.00229038 0.04867187 4 0.05246910 0.05234100 0.05246943-0.0001151 0.00244135 5 0.05246910 0.05246943 0.05246910 0.00000030 0.00000642 6 0.05246910 0.05246910 0.05246910 0.00000000 0.00000000 Ο αλγόριθµος συγκλίνει στη ρίζα: 0.5246916x10-1 µε σφάλµα 0.244135x10-2 µετά από 4 επαναλήψεις και ο απαιτούμενος χρόνος είναι μικρότερος από 10-6 sec. Ομοίως για το διάστημα [4.4,4.6] και για σφάλμα 7 10 παίρνουμε N x x0 x1 y(x) Σφάλμα 1 4.50879743 4.40000000 4.60000000 0.00423323 0.02413003 2 4.50511922 4.60000000 4.50879743-0.0035486 0.02106066 3 4.50524165 4.50879743 4.50511922-0.0001375 0.00078925 4 4.50524150 4.50511922 4.50524165 0.00000474 0.00002714 5 4.50524150 4.50524165 4.50524150-0.0000001 0.00000003 Ο αλγόριθµος συγκλίνει στη ρίζα: 0.4505241x10 1 µε σφάλµα 0.78925x10-3 µετά από 3 επαναλήψεις και ο απαιτούμενος χρόνος είναι μικρότερος από 10-6 sec. vi. Μέθοδος Aitken Υπολογίσουμε τις ρίζες της εξίσωσης xe x 3 e = 0 κάνοντας χρήση της μεθόδου Aitken. Μετασχηματίζουμε την αρχική σχέση σε μια ισοδύναμη της μορφής x = f( x), όπως κάναμε και στην περίπτωση των απλών αντικαταστάσεων και επομένως έχουμε e xe e xe e x x e e 3 x 3 x 3 x 3 = 0 = = = x Το Πρόγραμμα 7 που χρησιμοποιήθηκε για τον εντοπισμό των ριζών παρουσιάζεται παρακάτω 17

Πρόγραμμα 7: Μέθοδος Aitken!***************************************!* Program to demonstrate Aitken-Steffensen *!* ------------------------------------------------------ *!* Find a real root of f(x)=x*e^(-x)-e^(-3) *!*************************************** program Aitken implicit none real(8)::x,x0,x1,x2,error,sfalma,tf,ts integer::iter,i print*,'dose x0' read*,x0 Error=1.E-07 open(12,file='aitken.txt') write(12,16) 'N','x','x0','y(x)','Sfalma' call cpu_time(ts) sfalma=100. do while (sfalma>error) ITER=ITER+1 x1=y(x0) x2=y(x1) x=x0-(x1-x0)**2/(x2-2*x1+x0) Sfalma=abs((x-x0)/x) write(12,15) ITER,x,x0,y(x0),Sfalma x0=x enddo call cpu_time(tf) write(12,*) ' ' write(12,*)'stin EPANALIPSI:',ITER write(12,*),'h RIZA BRETHIKE ISH ME:',x print*,tf-ts 15 format (I3,2X,F15.11,2X,F15.11,2X,F15.11,2X,F17.11) 16 format (2x,a1,10X,a1,15X,a2,15X,a4,14X,a6) contains real function y(x) real(8)::x y=exp(x-3.) end function end program Aitken 18

Εφαρμόζουμε τη μέθοδο Aitken με αρχική εκτίμηση x0=0 και για σφάλμα παίρνουμε 10 7 N x x0 y(x) Σφάλμα 1 0.05246528 0.00000000 0.04978707 1.00000000 2 0.05246910 0.05246528 0.05246890 0.00007282 3 0.05246910 0.05246910 0.05246910 0.00000001 Ο αλγόριθµος συγκλίνει στη ρίζα: 0.5246916x10-1 µε σφάλµα 0.7282x10-4 µετά από 2 επαναλήψεις και ο απαιτούμενος χρόνος είναι μικρότερος από 10-6 sec. Για την εύρεση της 2 ης ρίζας καλούμαστε να αναπτύξουμε ένα διαφορετικό αναδρομικό x 3 τύπο, αφού ο x = e δεν παρουσιάζει σύγκλιση. Δουλεύουμε με τον ίδιο ακριβώς τρόπο που παρουσιάσαμε στη μέθοδο των απλών αντικαταστάσεων και επομένως 3 x 3 x 3 e x 3 xe e = 0 xe = e x= x= e lnx= x 3 x= lnx+ 3 x e Εφαρμόζουμε τη μέθοδο Aitken με αρχική εκτίμηση x0=4 και για σφάλμα παίρνουμε 10 7 N x x0 y(x) Σφάλμα 1 4.50738271 4.00000000 4.38629436 0.11256704 2 4.50524112 4.50738271 4.50571680 0.00047536 3 4.50524139 4.50524112 4.50524139 0.00000006 Ο αλγόριθµος συγκλίνει στη ρίζα: 0.4505241x10 1 µε σφάλµα 0.47536x10-3 µετά από 2 επαναλήψεις και ο απαιτούμενος χρόνος είναι μικρότερος από 10-6 sec. 19

22 20 18 16 14 12 10 8 6 4 2 0 N - R Aitken 1η ρίζα 2η ρίζα Το παραπάνω γράφημα παρουσιάζει μια συγκεντρωτική εικόνα των διαφόρων μεθόδων που χρησιμοποιήθηκαν για τον υπολογισμό των ριζών της εξίσωσης 3 e = 0. Τα αποτελέσματα παρουσιάζουν τον αριθμό διχοτομήσεων, γραμμικών παρεμβολών και επαναλήψεων ο οποίος κυμαίνεται από 20 μέχρι 2. Σημειώνεται ότι το κριτήριο σύγκλισης ικανοποιείται σε όλες τις εφαρμοζόμενες επαναληπτικές μεθόδους, ενώ η επαναληπτική διαδικασία ολοκληρώνεται όταν ικανοποιείται το κριτήριο τερματισμού. Αντίστοιχα, στη μέθοδο της διχοτόμησης ο αριθμός των διχοτομήσεων που απαιτείται για το προσδοκόμενο αποτέλεσμα είναι από την αρχή γνωστός. xe x 20