ΜΑΣ 191.1 Εαρινό Εξάμηνο 2018 ΠΑΡΑΔΕΙΓΜΑ ΕΡΓΑΣΙΑΣ Ένα πρόβλημα στη μετεωρολογία Ένας μετεωρολόγος καταγράφει τις εξής θερμοκρασίες ανά δίωρα διαστήματα: Θερμ. ( o F) Ωρα 60 56 39 32 40 45 70 12 μεσάνυχτα 2 4 6 8 10 12 μεσημέρι Αφού έχει μελετήσει τη λεγόμενη πολυωνυμική παρεμβολή, αποφασίζει να προβλέψει τη θερμοκρασία στις 3 το απόγευμα κατασκευάζοντας το πολυώνυμο παρεμβολής. Μόλις βλέπει το αποτέλεσμα, παθαίνει κρίση πανικού. Γιατί? Ένας συνάδελφος επεμβαίνει και τον καθησυχάζει λέγοντας του ότι θα έπρεπε να μετρήσουν τη θερμοκρασία στις 2 μ.μ. και μετά να κατασκευάσουν το πολυώνυμο παρεμβολής (για να έχουν καλύτερη ακρίβεια). Αν στις 2 μ.μ. η θερμοκρασία ήταν 68 o F, τι έχετε να πείτε για το καινούργιο πολυώνυμο παρεμβολής και την πρόβλεψη που δίνει για τη θερμοκρασία στις 3 το απόγευμα? Μια άλλη συνάδελφος, ίσως σοφότερη, τους λέει ότι πρέπει να χρησιμοποιήσουν ελάχιστα τετράγωνα και όχι παρεμβολή. Εισηγείται να χρησιμοποιήσουν πολυώνυμα βαθμού 1, 2,, 6 στη μέθοδο ελάχιστων τετραγώνων. Ποιο από αυτά δίνει την καλύτερη απάντηση για τη θερμοκρασία στις 3 μ.μ.? Ποιο δίνει τη χειρότερη? Ποιο από τα πιο πάνω δίνει καλή πρόβλεψη, όταν t? Ποια είναι η γνώμη σας για τη χρήση πολυωνύμων παρεμβολής και ελάχιστων τετραγώνων για τη πρόβλεψη του καιρού? Η ΛΥΣΗ ΠΟΥ ΑΚΟΛΟΥΘΕΙ ΕΙΝΑΙ ΕΝΔΕΙΚΤΙΚΗ. ΥΠΑΡΧΟΥΝ ΠΟΛΛΟΙ ΤΡΟΠΟΙ ΠΑΡΟΥΣΙΑΣΗΣ ΤΗΣ. ΧΡΗΣΙΜΟΠΟΙΗΣΤΕ ΤΑ ΠΙΟ ΚΑΤΩ ΓΙΑ ΚΑΘΟΔΗΓΗΣΗ ΑΛΛΑ ΠΑΡΟΥΣΙΑΣΤΕ ΜΕ ΤΟΝ ΤΡΟΠΟ ΠΟΥ ΘΕΛΕΤΕ ΕΣΕΙΣ. 1
Ένα πρόβλημα στη μετεωρολογία Ματλάμπιος Ματλαμπίου ΜΑΣ 191.1: Μαθηματικά με Υπολογιστές Εαρινό Εξάμηνο 2018 Εισαγωγή Έστω τα διακεκριμένα σημεία (xj, yj), j = 1,, m + 1, και θέλουμε να κατασκευάσουμε ένα πολυώνυμο που τα αντιπροσωπεύει. Αυτό μπορεί να γίνει με διάφορους τρόπους, δύο από τους οποίους παρουσιάζουμε πιο κάτω. Παρεμβολή Θέλουμε να βρούμε το μοναδικό πολυώνυμο pm(x), βαθμού m έτσι ώστε pm(xj) = yj, j = 1,, m + 1. Το πολυώνυμο μπορεί να κατασκευαστεί με διάφορους τρόπους, π.χ. με τη μέθοδο του Lagrange ή με τη μέθοδο διαιρεμένων διαφορών του Newton. Ελάχιστα Τετράγωνα Αντί να απαιτήσουμε να ισχύει m pm( x) akx k0 k σε όλα τα σημεία, τώρα θέλουμε να βρούμε τις σταθερές ak, k = 0, 1,, m έτσι ώστε η ποσότητα m1 m E( a0, a1,, a ) y a x να είναι όσο πιο μικρή γίνεται. k j k j j1 k0 k Το πρόβλημα και το εργαλείο που θα χρησιμοποιήσουμε Θέλουμε να συγκρίνουμε τις δύο μεθόδους πιο πάνω, για ένα πρόβλημα από τη μετεωρολογία. Υποθέτουμε ότι έχουμε τις εξής μετρήσεις: Θερμ. ( o F) Ωρα 60 56 39 32 40 45 70 12 μεσάνυχτα 2 4 6 8 10 12 μεσημέρι 2
Χρησιμοποιώντας τη MATLAB, και συγκεκριμένα την εντολή polyfit Fit polynomial to data. P = polyfit(x,y,n) finds the coefficients of a polynomial P(X) of degree N that fits the data Y best in a least-squares sense. P is a row vector of length N+1 containing the polynomial coefficients in descending powers, P(1)*X^N + P(2)*X^(N-1) +...+ P(N)*X + P(N+1). θα προσπαθήσουμε να απαντήσουμε τα ερωτήματα που τέθηκαν. Σημειώνουμε ότι αν το Ν στη πιο πάνω εντολή ισούται με το μήκος των x ή y συν ένα, τότε παίρνουμε το πολυώνυμο παρεμβολής. Αν το Ν είναι μικρότερο (ή ίσο) τότε παίρνουμε το πολυώνυμο ελάχιστων τετραγώνων. (Δεν χρησιμοποιούμε μεγαλύτερο Ν.) Αριθμητικοί υπολογισμοί Ορίζουμε το διάνυσμα t που αντιπροσωπεύει την ώρα που έγινε η μέτρηση, αρχίζοντας με t = 0 που αντιστοιχεί στα μεσάνυχτα. >> t=[0,2,4,6,8,10,12] t = 0 2 4 6 8 10 12 Ορίζουμε επίσης ένα άλλο διάνυσμα Temp που δίνει τις θερμοκρασίες που μετρήθηκαν. >> Temp=[60,56,39,32,40,45,70] Temp = 60 56 39 32 40 45 70 Για να προβλέψουμε τη θερμοκρασία στις 3 μ.μ., δηλ. t = 15, κατασκευάζουμε το πολυώνυμο παρεμβολής p6(t), βαθμού 6 (αφού έχουμε 7 σημεία) και υπολογίζουμε τη τιμή p6(15). >> p6=polyfit(t,temp,6); >> polyval(p6,15) 671.8115 Αυτό σημαίνει ότι η θερμοκρασία στις 3 μ.μ. θα είναι 671.8 βαθμοί φυσικά, αυτό δεν είναι δυνατό και έτσι δικαιολογείται η κρίση πανικού που έπαθε ο μετεωρολόγος. 3
Τώρα, προσθέτουμε το επιπλέον σημείο, δηλ. t = 14 (2 PM), Temp = 68. >> t=[t,14] t = 0 2 4 6 8 10 12 14 >> Temp = [Temp,68] Temp = 60 56 39 32 40 45 70 68 Ξανα-υπολογίζουμε τη θερμοκρασία στις 3 μ.μ. >> p7=polyfit(t,temp,7); >> polyval(p7,15) -94.8584 Και πάλι η πρόβλεψη δεν είναι πιστευτή. Στο Σχήμα 1 πιο κάτω φαίνεται η γραφική παράσταση του πολυωνύμου παρεμβολής p7(x). Παρατηρούμε ότι αν και η καμπύλη περνάει από όλα τα σημεία, τείνει στο (πλην) άπειρο όταν ο χρόνος t αυξάνεται. Αυτό είναι ο λόγος για τα λανθασμένα αποτελέσματα που πήραμε πριν. >> tt=linspace(0,16); >> P=polyval(p7,tt); >> plot(t,temp,'o',tt,p) >> xlabel('time') >> ylabel('temperature') >> title('interpolant') 4
Σχήμα 1. Το βαθμού 7 πολυώνυμο παρεμβολής. Στη συνέχεια χρησιμοποιούμε ελάχιστα τετράγωνα. Ο πιο κάτω πίνακας δείχνει τις εντολές που χρησιμοποιούμε και στο Σχήμα 2 δείχνουμε τα γραφήματα των πολυωνύμων. Για βαθμού 1, έχουμε» p1=polyfit(t,temp,1);» polyval(p1,15) 58.4881 Για βαθμού 4» p4=polyfit(t,temp,4);» polyval(p4,15) 56.3360 Για βαθμού 2,» p2=polyfit(t,temp,2);» polyval(p2,15) 84.7232 Για βαθμού 5» p5=polyfit(t,temp,5);» polyval(p5,15) 53.5482 Για βαθμού 3,» p3=polyfit(t,temp,3);» polyval(p3,15) 79.2687 Για βαθμού 6,» p6=polyfit(t,temp,6);» polyval(p6,15) 8.0280 5
Σχήμα 2. Τα πολυώνυμα ελάχιστων τετραγώνων βαθμών 1,,6. Βάση των πιο πάνω υπολογισμών, καταλήγουμε στο ότι τα βαθμού 1,, 5 πολυώνυμα δίνουν λογική τιμή πρόβλεψης της θερμοκρασίας στης 3 μ,μ, Για βαθμού 6, αυτό δεν ισχύει. Επίσης, βλέπουμε ότι κανένα δεν δίνει λογικά αποτελέσματα για t. Συμπεράσματα και συζήτηση Μελετήσαμε τη χρήση πολυωνύμων (παρεμβολής και ελάχιστων τετραγώνων) στη μετεωρολογία. Βάση των υπολογισμών μας, παρατηρούμε τα εξής: 1. Πολυώνυμα δουλεύουν επαρκώς για να υπολογίσουμε τιμές που βρίσκονται ανάμεσα των δοθέντων σημείων, αλλά όχι για τιμές εκτός του διαστήματος που περιέχει τα σημεία (μετρήσεις). 2. Αν η χρήση πολυωνύμων απαιτείται, τότε εισηγούμαστε να χρησιμοποιηθούν κατά-τμήματαπολυώνυμα (και όχι καθολικά). 3. Υπάρχουν και άλλες συναρτήσεις που θα μπορούσαν να χρησιμοποιηθούν, όπως π.χ. τριγωνομετρικές συναρτήσεις οι οποίες είναι περιοδικές (όπως και η θερμοκρασία). 6
ΠΑΡΑΡΤΗΜΑ Εδώ παραθέτουμε τις εντολές που έδωσαν το Σχήμα 2. >> p1=polyfit(t,temp,1); >> p2=polyfit(t,temp,2); >> p3=polyfit(t,temp,3); >> p4=polyfit(t,temp,4); >> p5=polyfit(t,temp,5); >> p6=polyfit(t,temp,6); >> tt=linspace(0,16); >> subplot(3,2,1) >> plot(t,temp,'o',tt,polyval(p1,tt)) >> gtext('p_1') >> subplot(3,2,2) >> plot(t,temp,'o',tt,polyval(p2,tt)) >> gtext('p_2') >> subplot(3,2,3) >> plot(t,temp,'o',tt,polyval(p3,tt)) >> gtext('p_3') >> subplot(3,2,4) >> plot(t,temp,'o',tt,polyval(p4,tt)) >> gtext('p_4') >> subplot(3,2,5) >> plot(t,temp,'o',tt,polyval(p5,tt)) >> gtext('p_5') >> subplot(3,2,6) >> plot(t,temp,'o',tt,polyval(p6,tt)) >> gtext('p_6') 7