Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο Ενότητα 7: Πολυώνυμα Διδάσκουσα: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών ΤΕ
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο TEI Δυτικής Μακεδονίας και στην Ανώτατη Εκκλησιαστική Ακαδημία Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Σκοποί ενότητας Να κατανοήσει ο φοιτητής τις δυνατότητες του MatLab στη χρήση των πολωνύμων. 4
Περιεχόμενα Πολυώνυμα. Μετατροπή πολυωνύμου σε διάνυσμα. Πρόσθεση πολυωνύμων. Συναρτήσεις Πολυωνύμων. Παραδείγματα. Προσαρμογή δεδομένων. 5
Πολυώνυμα_1 Πολυώνυμο είναι μια αλγεβρική παράσταση σταθερών και μιας μεταβλητής η οποία εμφανίζεται υψωμένη σε διάφορες δυνάμεις και συμβολίζεται p(x). Οι συντελεστές συμβολίζονται με ένα γράμμα με δείκτη τη δύναμη της μεταβλητής που συνοδεύει. Ο σταθερός όρος έχει συνήθως δείκτη μηδέν. Π.χ. p(x)=x 2-3x+5 6
Πολυώνυμα_2 Η MATLAB έχει πολύ καλές ικανότητες στον χειρισμό πολυωνύμων, τα οποία αντιπροσωπεύονται ως διανύσματα (με τους συντελεστές του πολυωνύμου) σε κατιούσα διάταξη. 7
Παραδείγματα μετατροπής πολυωνύμων σε διανύσματα_1 Το πολυώνυμο: p(x) = x 2 7x + 8 αντιπροσωπεύεται από το διάνυσμα p = [1, -7, 8] το πολυώνυμο: q(x) = x 4 + 5x 2 x από το διάνυσμα q = [1, 0, 5, -1, 0]. 8
Παραδείγματα μετατροπής πολυωνύμων σε διανύσματα_2 MATLAB μπορεί να συσχετίσει ένα διάνυσμα μήκους n + 1 με ένα πολυώνυμο βαθμού n. Αν κάποιες από τις δυνάμεις του x λείπουν από το πολυώνυμο (δηλ. κάποιοι από τους συντελεστές του πολυωνύμου είναι 0) πρέπει να θυμηθούμε να τους συμπεριλάβουμε στο διάνυσμα, όπως ακριβώς έγινε στο πιο πάνω παράδειγμα. 9
Βαθμός του πολυωνύμου Ο βαθμός του πολυωνύμου βρίσκεται από την εντολή length(p)-1 όπου p το διάνυσμα που αντιστοιχεί στο πολυώνυμο p(x). 10
Πρόσθεση Πολυωνύμων Για την πρόσθεση πολυωνύμων, αρκεί τα πολυώνυμα να είναι του ιδίου βαθμού. Σε διαφορετική περίπτωση, το πολυώνυμο με το μικρότερο βαθμό πρέπει να συμπληρωθεί με αρχικά μηδενικά, ώστε να αποκτήσει τον ίδιο βαθμό με το πολυώνυμο υψηλότερου βαθμού. 11
Παράδειγμα πρόσθεσης Πολυωνύμων Έστω τα πολυώνυμα που τα παριστάνουμε με τα παρακάτω διανύσματα: p=[1 2 3 4 5] και q=[8 0 2] Το q διάνυσμα το γράφουμε: qnew=[0 0 8 0 2] και το άθροισμα p+qnew
Συναρτήσεις πολυωνύμων_1 Εικόνα 1: Συναρτήσεις πολυωνύμων 1. Πηγή: Διδάσκουσα (2015). 13
Συναρτήσεις πολυωνύμων_2 Εικόνα 2: Συναρτήσεις πολυωνύμων 2. Πηγή: Διδάσκουσα (2015). 14
Eντολή polyval Για να βρούμε τη τιμή ενός πολυωνύμου (αφού προηγουμένως έχει οριστεί στο MATLAB ως διάνυσμα) χρησιμοποιούμε την εντολή polyval. Για παράδειγμα, για να βρούμε την τιμή του πολυωνύμου p(x)= 3x 4 +2x 3 +5x 2 +x όταν το x = 2. >> p=[3 2 5 0]; %το διάνυσμα του πολυωνύμου >> polyval(p,2) ans = 42 15
Eντολή roots_1 Η εντολή roots δίνει τις ρίζες δοθέντος πολυωνύμου. Για το προηγούμενο πολυώνυμο: >> roots(p) ans = 0-0.3333 + 1.2472i -0.3333-1.2472i 16
Eντολή roots_2 Παρατηρούμε ότι η MATLAB δουλεύει και με μιγαδικούς αριθμούς, όπου i=sqrt(-1). (Δύο από τις 4 ρίζες του πολυωνύμου είναι μιγαδικές) Υπολογίζει τις πραγματικές και τις μιγαδικές ρίζες. 17
Πολλαπλασιασμός Πολυωνύμων Αν θέλουμε να πολλαπλασιάσουμε δύο πολυώνυμα, κάνουμε συνέλιξη (convolution) των διανυσμάτων με τους συντελεστές των πολυωνύμων. Για παράδειγμα, αν s(x) = x + 5 και t(x) = x 2 + 2x + 3 τότε: z(x) = s(x) t(x) = x 3 + 4x 2 + 7x + 6. 18
Παράδειγμα Πολλαπλασιασμού Πολυωνύμων Στη MATLAB, γράφουμε: >> s=[1 2]; >> t=[1 2 3]; >> z=conv(s,t) z = 1 4 7 6 19
Διαίρεση πολυωνύμων Η διαίρεση δύο πολυωνύμων είναι παρόμοια και επιτυγχάνεται με την εντολή deconv, η οποία μπορεί να δώσει και το υπόλοιπο της διαίρεσης. Ας διαιρέσουμε το z με το t (από το προηγούμενο παράδειγμα) για να δούμε αν θα πάρουμε το s: 20
Παράδειγμα Διαίρεσης >> [s,r] = deconv(z,t) s = 1 2 r = 0 0 0 0 πολυωνύμων Πράγματι, πήραμε το s μαζί με το διάνυσμα/υπόλοιπο r, το οποίο σε αυτή τη περίπτωση είναι 0, όπως και θα έπρεπε. 21
Παράγωγος ενός πολυωνύμου Παράγωγος είναι ένα μέτρο για το πώς αλλάζει μια συνάρτηση όταν αλλάζουν οι τιμές της εισόδου της.η MATLAB μπορεί να δώσει και την παράγωγο ενός πολυωνύμου με την εντολή polyder η οποία παίρνει ως δεδομένο εισόδου το διάνυσμα με τους συντελεστές του πολυωνύμου και δίνει ως δεδομένο εξόδου το διάνυσμα με τους συντελεστές της παραγώγου του πολυωνύμου. 22
Παράδειγμα Αν p(x) = 3x 3 4x 2 x+2 τότε >> p=[3,-4,-1,2]; >>polyder(p) ans = 9-8 -1 23
Προσαρμογή δεδομένων_1 Η προσαρμογή (fitting), που είναι επίσης γνωστή ως παλινδρόμηση (regression) είναι μια διαδικασία όπου έχουμε ένα αριθμό σημείων και θέλουμε να βρούμε μια συνάρτηση, συνήθως πολυώνυμο μικρού βαθμού, που να προσαρμόσουμε το πολυώνυμο στα δεδομένα. 24
Προσαρμογή δεδομένων_2 Αν θέλουμε το πολυώνυμο να περνά από όλα τα σημεία, τότε παίρνουμε το λεγόμενο πολυώνυμο παρεμβολής. Ο βαθμός του πολυωνύμου είναι ίσος με τον αριθμό των σημείων από τα οποία περνά μείον ένα. 25
Εντολή polyfit Στο MATLAB η εντολή polyfit μας δίδει αυτή τη δυνατότητα. Γενικός τύπος: p=polyfit(x,y,m) μας δίνει τους συντελεστές του πολυωνύμου p που έχει βαθμό Μ και που αντιπροσωπεύει τα δεδομένα. 26
Παράδειγμα Έστω ότι έχουμε τα δεδομένα: >> x=[1 2 3 4 9]; >> y=[3 6 7 15 18]; Τότε: >> p3=polyfit(x,y,4) p3 = -0.2720 4.2202-19.5208 36.1012-17.5286 Το παρακάτω πολυώνυμο περνά από τα παραπάνω σημεία. p3(x)= -0.2720x 4 +4.2202x 3 +-19.5208x 2 -+36.1012x- 17.5286
Ασκήσεις_1 1) Να βρεθούν οι ρίζες των πολυωνύμων: p(x)=7x 2 +3x+7 q(x)=2x 4 +2 z(x)=3x 3-7x 2 +5x+8 2) Δίδονται τα πολυώνυμα p(x)=x 2-3x+7 και q(x)=x 3 +5x+8. Να βρεθούν τα πολυώνυμα: p(x)+q(x) 2p(x)-3q(x) p(x)q(x) 28
Ασκήσεις_2 3) Nα πραγματοποιηθούν οι πράξεις πολλαπλασιασμού και διαίρεσης των πολυωνύμων p(x)=x 3 +7x 2 +3x+12 και q(x)=2x 3 +4x 2 +16x+6 4) Δημιουργήστε ένα script(εντολών) m-file στο οποίο: Θα δηλώσετε τα πολυώνυμα p1(x)= x 3 +5x 2 +x+15 και p2(x)= x 2-8. Θα υπολογίσετε τις ρίζες των πολυωνύμων. Να βρείτε τις τιμές του πολυωνύμου p1(x) στα σημεία 2 και 5. 29
Ασκήσεις_3 5) Δημιουργήστε ένα script(εντολών) m-file στο οποίo θα δηλώσετε τα πολυώνυμα p1(x)=x 3 +12x 2 +7x+5 και p2(x)=3x 2-5. Nα τα προσθέσετε σε ένα τρίτο πολυώνυμο με το όνομα p3(x). Nα τα πολλαπλασιάσετε σε ένα τέταρτο πολυώνυμο με το όνομα p4(x). Να βρείτε τις τιμές του πολυωνύμου p4(x) στο σημείο 9. 30
Τέλος Ενότητας
Σημείωμα Αναφοράς Copyright ΤΕΙ Δυτικής Μακεδονίας, Τσαγκαλίδου Ροδή. «Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο». Έκδοση: 1.0. Κοζάνη 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: URL. 32
Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο. που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο. που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο. Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. 33
Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς. το Σημείωμα Αδειοδότησης. τη δήλωση Διατήρησης Σημειωμάτων. το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει). μαζί με τους συνοδευόμενους υπερσυνδέσμους. 34