Μελέτη πολυωνυμικής συνάρτησης
Σκοπεύουμε να δημιουργήσουμε ένα πακέτο (συναρτήσεων) με τις οποίες θα κάνουμε μαθηματική ανάλυση μίας πολυονυμικής συνάρτησης f(x). Ενδεικτικά, το πρόγραμμα θα πρέπει να δίνει την δυνατότητα για τις ακόλουθες λειτουργίες.
- Υπολογισμός των τιμής της f(x) σε μία σειρά σημείων xi σε διάστημα [a,b].
- Εύρεση των θέσεων όπου η f(x) μηδενίζεται.
- Εύρεση των ακροτάτων της f(x).
- Εύρεση της παραγώγου καθώς και της αντιπαραγώγου της f(x).
- Γραφική παράσταση της f(x).
- Σχεδίαση της εφαπτομένης της f(x) σε ένα σημείο x.
Για να ξεκινήσετε, είναι καλό να γράψετε μερικές συναρτήσεις όπως περιγράφονται στις επόμενες ασκήσεις. Αφού τις γράψετε, θα τις βάλετε όλες στο ίδιο αρχείο το οποίο θα αποτελέσει ένα πακέτο. Τέλος θα γράψετε έναν κώδικα ως κύριο πρόγραμμα το οποίο θα αναλάβει την επικοινωνία με τον χρήστη, θα χρησιμοποιεί τις συναρτήσεις και θα κάνει μελέτη της συνάρτησης.
Ασκήσεις
Άσκηση.
Γράψτε μία συνάρτησηpolynomialValue
η οποία θα δέχεται μία λίστα η οποία θα περιέχει τους συντελεστές ενός πολυωνύμου και έναν αριθμό x (float).
Η συνάρτηση θα επιστρέφει την τιμή του πολυωνύμου στην θέση x.
[Κώδικας]
Άσκηση.
Γράψτε μία συνάρτησηlatticeSites
η οποία θα δέχεται δύο αριθμούς κινητής υποδιαστολής a,b
και έναν ακέραιο n. Θα επιστρέφει μία λίστα αριθμών κινητής υποδιαστολής μήκους n+1 (ή n) όπου θα περιέχονται οι θέσεις ισαπεχόντων σημείων xi στο διάστημα [a,b].
[Κώδικας]
Άσκηση.
Γράψτε μία συνάρτησηpolyOnLattice
η οποία θα δέχεται μία λίστα (floats) η οποία θα περιέχει τους συντελεστές ενός πολυωνύμου και μία λίστα (floats) η οποία θα παριστάνει μία σειρά σημείων σε διάστημα [a,b]
(όπως παράγονται από την latticeSites
).
Η συνάρτηση θα επιστρέφει μία άλλη λίστα (floats) η οποία θα περιέχει την τιμή του πολυωνύμου στις θέσεις των σημείων της παραπάνω λίστας.
[Κώδικας με τις τρεις πρώτες ασκήσεις.]
Άσκηση.
Γράψτε μία συνάρτησηbracketRoots
η οποία θα δέχεται μία λίστα η οποία παριέχει τις θέσεις σημείων xi στο διάστημα [a,b]
(όπως παράγονται από την latticeSites
)
και μία ακόμα λίστα η οποία παριέχει τις αντίστοιχες τιμές πολυωνύμου
(όπως παράγονται από την polyOnLattice
).
Αν υποθέσουμε ότι μία ρίζα περιέχεται σε διάστημα [xi,xi+1], η συνάρτηση
θα πρέπει να επιστρέφει την πλειάδα (xi,xi+1).
Δεδομένου ότι το πολυώνυμο μπορεί να έχει περισσότερες από μία ρίζες,
η συνάρτηση θα επιστρέφει μία πλειάδα κάθε στοιχείο της οποίας θα είναι μία
πλειάδα του τύπου (xi,xi+1).
[Κώδικας με τις τέσσερες πρώτες ασκήσεις.]
Άσκηση.
Γράψτε μία συνάρτησηsearchExtrema
η οποία θα δέχεται δύο λίστες οι οποίες παριστάνουν τις θέσεις σημείων στο διάστημα [a,b]
(όπως παράγονται από την latticeSites
)
και τις αντίστοιχες τιμές πολυωνύμου (όπως παράγονται από την polyOnLattice
).
Η συνάρτηση θα επιστρέφει, σε μία πλειάδα, τις θέσεις όπου προσεγγιστικά το πολυώνυμο έχει ακρότατα.
[Κώδικας.]
Άσκηση.
Γράψτε μία συνάρτησηderivativePoly
η οποία θα δέχεται μία λίστα η οποία θα περιέχει τους συντελεστές ενός πολυωνύμου.
Η συνάρτηση θα επιστρέφει μία λίστα με τους συντελεστές της παραγώγου του πολυωνύμου.
[Κώδικας.]
Άσκηση.
Γράψτε μία συνάρτησηintegralPoly
η οποία θα δέχεται μία λίστα η οποία θα περιέχει τους συντελεστές ενός πολυωνύμου.
Η συνάρτηση θα επιστρέφει μία λίστα με τους συντελεστές της αντιπαραγώγου του πολυωνύμου.
[Κώδικας.]
Άσκηση.
Γράψτε μία συνάρτησηfindRoot
η οποία θα δέχεται δύο floats ανάμεσα στους οποίους περιέχεται μία ρίζα του πολυωνύμου
(όπως παράγονται από την bracketRoots
)
και θα βρίσκει την ρίζα.
[Υπόδειξη: Για την εύρεση ρίζας μπορούμε να χρησιμοποιήσουμε, π.χ., την μέθοδο της τέμνουσας, της διχοτόμησης, είτε μία άλλη μέθοδο.]
Άσκηση.
Γράψτε μία συνάρτησηpolynomialCoefficients
η οποία θα δέχεται ως όρισμα μία συμβολοσειρά η οποία θα περιέχει ένα πολυώνυμο της μορφής, π.χ., 3+4*x+5*x**2+2*x**4
.
Η συνάρτηση θα επιστρέφει μία λίστα με τους συντελεστές του πολυωνύμου. Στη θέση με δείκτη n της λίστας θα πρέπει να βρίσκεται ο συντελεστής του όρου βαθμού n του πολυωνύμου.
Άσκηση.
Γράψτε μία συνάρτηση η οποία θα δέχεται δύο λίστες ίδιου μήκους και θα κάνει την γραφική παράσταση σημείων παίρνοντας την τετμημένη από την πρώτη λίστα και την τεταγμένη από την δεύτερη λίστα. Για να κάνουμε την γραφική παράσταση ενός πολυωνύμου μπορούμε να πάρουμε τις λίστες που παράγονται από τις συναρτήσειςlatticeSites
και polyOnLattice
.
[Κώδικας.]