Project: Μελέτη πολυωνυμικής συνάρτησης

Γράψτε τις συναρτήσεις όπως περιγράφονται στις επόμενες ασκήσεις. Αφού τις γράψετε, θα τις βάλετε όλες στο ίδιο αρχείο και θα προσθέσετε στον κώδικά σας ένα κύριο πρόγραμμα το οποίο θα χρησιμοποιεί τις συναρτήσεις και θα κάνει μελέτη μίας πολυωνυμικής συνάρτησης f(x). Στον κώδικα θα εισάγετε την f(x) και θα την μελετήσετε ως εξής:

  1. δημιουργήστε μία σειρά σημείων n σημείων xi σε διάστημα [a,b] (τα οποία αποτελούν μία αλυσίδα στον άξονα x),
  2. υπολογίστε τις τιμές της f(x) σε μία σειρά σημείων xi,
  3. βρείτε προσεγγιστικά τις θέσεις όπου η f(x) μηδενίζεται,
  4. βρείτε προσεγγιστικά τις θέσεις των ακροτάτων της f(x),
  5. βρείτε την παράγωγο καθώς και την αντιπαράγωγο της f(x),
  6. κάνετε γραφική παράσταση της f(x),
  7. σχεδιάστε την εφαπτομένη της f(x) σε ένα σημείο x που θα επιλέξετε.

Ασκήσεις

Άσκηση. Γράψτε μία συνάρτηση polynomialValue η οποία θα δέχεται μία λίστα η οποία θα περιέχει τους συντελεστές ενός πολυωνύμου και έναν αριθμό x (float). Η συνάρτηση θα επιστρέφει την τιμή του πολυωνύμου στην θέση x. [Κώδικας]

Άσκηση. Γράψτε μία συνάρτηση latticeSites η οποία θα δέχεται δύο αριθμούς κινητής υποδιαστολής a,b και έναν ακέραιο n. Θα επιστρέφει μία λίστα αριθμών κινητής υποδιαστολής μήκους n+1n) όπου θα περιέχονται οι θέσεις ισαπεχόντων σημείων 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. [Κώδικας.]

Άσκηση. Σχεδιάστε την γραφική παράσταση πολυωνύμου καθώς και την εφαπτομένη του στο σημείο (0,0), επάνω στο ίδιο γράφημα.