AskisiE(2)

2
Άσκηση Ε Να γραφεί το πρόγραμμα στο οποίο να ορίζεται η συνάρτηση nroot(…) η οποία, μέσα από μια αναδρομική (recursive) διαδικασία, υπολογίζει μια πραγματική ρίζα της εξίσωσης f(x)=0 προσεγγίζοντας την με την αναδρομική σχέση x i+1 =x i -f(x i )/f(x i ). Από τη σχέση αυτή παράγεται μία ακολουθία τιμών η οποία, κάτω από ορισμένες προϋποθέσεις, συγκλίνει προς μια πραγματική ρίζα της f(x)=0. Σε διαφορετική περίπτωση η ακολουθία αποκλίνει ή οι τιμές της παλινδρομούν. Ως αρχική τιμή για το x 0 δίνεται ένας τυχαίος αριθμός. Στο ίδιο πρόγραμμα να οριστεί και η συνάρτηση froot(…) η οποία να υπολογίζει, μέσα από μια αναδρομική (recursive) διαδικασία, μια πραγματική ρίζα της εξίσωσης f(x)=0 προσεγγίζοντας την με την αναδρομική σχέση x i+1 = x i -(x i -x i- 1 )f(x i )/(f(x i -f(x i-1 )). Από τη σχέση αυτή παράγεται μία ακολουθία τιμών η οποία, κάτω από ορισμένες προϋποθέσεις, συγκλίνει προς μια πραγματική ρίζα της f(x)=0. Σε διαφορετική περίπτωση η ακολουθία αποκλίνει ή οι τιμές της παλινδρομούν. Και για τις δύο συναρτήσεις η διαδικασία σταματά όταν θα ισχύει η σχέση |x i+1 -x i |<e, όπου e ένας πολύ μικρός θετικός αριθμός που δηλώνει την ακρίβεια της μεθόδου. Ως αρχικές τιμές για το x 0 και το x 1 δίνονται τυχαίοι αριθμοί. Για να συγκριθούν οι ταχύτητες σύγκλησης προς τη ρίζα των δύο συναρτήσεων, η συνάρτηση main του προγράμματος να τις καλεί για να υπολογίσουν, η κάθε μια χωριστά, τη ρίζα μιας εξίσωσης. Η main να τυπώνει τη ρίζα και τον αριθμό των επαναλήψεων που έκανε η κάθε συνάρτηση για να την προσεγγίσει με την ίδια ακρίβεια e. Η main να τυπώνει ακόμη και τα κατάλληλα μηνύματα στις περιπτώσεις που, για τη συγκεκριμένη εξίσωση, δε μπορεί να εφαρμοστεί ο αλγόριθμός ή η αντίστοιχη ακολουθία δε συγκλείνει προς τη ρίζα. Βοηθητικές παρατηρήσεις: Να μη χρησιμοποιηθούν πουθενά γενικές μεταβλητές. Οι συναρτήσεις να μη διαβάζουν δεδομένα και να μην εκτυπώνουν μηνύματα ή αποτελέσματα Επειδή στην περίπτωση πού δε μπορεί να υπολογιστεί μια πραγματική ρίζα από τις πιο πάνω αναδρομικές σχέσεις η διαδικασία θα συνεχίζεται επ’ άπειρο, να διαβάζεται ένας μέγιστος αριθμός επαναλήψεων για την εφαρμογή του κάθε αλγόριθμου.

description

AskisiE(2)

Transcript of AskisiE(2)

nroot() , (recursive) , f(x)=0 xi+1=xi-f(xi)/f(xi). , , f(x)=0. . x0 . froot() , (recursive) , f(x)=0 xi+1 = xi-(xi-xi-1)f(xi)/(f(xi-f(xi-1)). , , f(x)=0. . |xi+1-xi |