13 & 18 Νοέμβρη 2002
Περιεχόμενα Το πρόβλημα της Παρεμβολής Πολυωνυμική Παρεμβολή ΔΕΝ είναι Καλώς Τεθιμένο- Τι πρέπει κάνουμε? Πολυωνυμική Παρεμβολή Τύπος Παρεμβολής Lagrange Παρεμβολή στην Maple Συμπεριφορά Πολυωνύμου Παρεμβολής Τμηματικά Πολυωνυμική Παρεμβολή - Γραμμική & Lagrange Οι Φυσικές Κυβικές Splines Πώς Μπορούμε να Βρούμε μια Φυσική Spline? Ιδιότητες Φυσικών Κυβικών Splines Η Παρεμβάλουσα CatmullRom Η Πολυωνυμική Παρεμβολή είναι Γραμμική - Γραμμικότητα της Τμηματικής Παρεμβολής Συναρτήσεις Βάσης Γραμμικής Παρεμβολής& Lagrange
Το πρόβλημα της Παρεμβολής Πρόβλημα: Γνωρίζουμε την τιμή της συνάρτησης, x(t), στα σημεία t0, t1 , ... , tn. Ποια είναι η τιμή της σε κάποιο άλλο σημείο t; Παραδείγματα: Έχουμε μετρήσει το υψόμετρο σε ορισμένα σημεία μιας περιοχής. Θέλουμε να μάθουμε το υψόμετρο σε κάποια άλλα ενδιάμεσα σημεία. Κάποιο ιδιαίτερα χρονοβόρο πρόγραμμα έχει υπολογίσει την ταχύτητα μεταγωγής μιας ομάδας διακοπτών ημιαγωγών διαφορετικού μεγέθους. Θέλουμε να μάθουμε την ταχύτητα μεταγωγής ημιαγωγών άλλων ενδιάμεσων μεγεθών. Θα υποθέσουμε ότι το t είναι ένας πραγματικός αριθμός, παρόλο που στην πράξη μπορεί το t να είναι διάνυσμα πραγματικών αριθμών. Συχνά θα ασχοληθούμε με πολλές συναρτήσεις μαζί – πχ τις x(t), y(t), z(t), που ορίζουν την παραμετρική παράσταση μιας καμπύλης. t0
Το Πρόβλημα ΔΕΝ είναι Καλώς Τεθιμένο Δυστυχώς το πρόβλημα της παρεμβολής δεν είναι καλώς τεθιμένο. Υπάρχουν προφανώς πολλές συναρτήσεις που διέρχονται από τα δοθέντα σημεία. Για παράδειγμα: Τα πράγματα περιπλέκονται περισσότερο εάν εξετάσουμε περιοχές εκτός του διαστήματος που ορίζουν τα δοθέντα σημεία. Κάτι τέτοιο δεν λέγεται πια παρεμβολή αλλά παρεκβολή.
Λοιπόν, τι θα Κάνουμε? Δεν μπορούμε να λύσουμε το πρόβλημα της παρεμβολής εκτός και είμαστε διατεθειμένοι να δώσουμε κάποια επιπρόσθετη πληροφορία σχετικά με την συνάρτηση. Συνήθως, υποθέτουμε ότι η ακριβής συνάρτηση είναι πιθανότατα ομαλή, κατά κάποια έννοια. Μια στατιστική προσέγγιση: Υποθέτουμε μια πιθανοθεωρητική κατανομή συναρτήσεων, και από αυτήν επιλέγουμε την συνάρτηση που ταιριάζει στις δοθείσες γνωστές τιμές. Μια πιο συνήθης προσέγγιση: Υποθέστε ότι η συνάρτηση ανήκει σε μια περιορισμένη κλάση συναρτήσεων, από την οποία μία μόνο συνάρτηση ταιριάζει με τις δεδομένες τιμές.
Πολυωνυμική Παρεμβολή Εάν ξέρουμε την τιμή της συνάρτησης σε n+1 διαφορετικά σημεία, μπορούμε να την παρεμβάλουμε βρίσκοντας ένα πολυώνυμο βαθμού το πολύ n το οποίο διέρχεται από τα δοθέντα σημεία. Το πολυώνυμο αυτό είναι μοναδικό, και συνεπώς το πρόβλημά μας καλώς τεθιμένο. Είναι λογική αυτή η λύση; Δύο αντικρουόμενα γεγονότα: Κάθε συνεχής συνάρτηση μπορεί να προσεγγισθεί με όση ακρίβεια (πεπερασμένη) θέλουμε με ένα πολυώνυμο κάποιου βαθμού. Το πολυώνυμο βαθμού το πολύ n που παρεμβάλει τις n+1 τιμές μιας συνάρτησης μπορεί να είναι πολύ διαφορετικό από κάτι που προσεγγίζει την συνάρτηση καλά.
Το Φαινόμενο του Runge runge := proc(n) # n είναι ο βαθμός του πολυωνύμου local f, xp, yp, i, poly, p1, p2, caption; f := x -> 1 / (1+x^2); xp := [ seq(-5+i*10/n, i=0..n) ]; yp := map(f,xp); poly := interp(xp,yp,x); caption := cat(`degree = `, n); p1 := plot(f(x), x=-5..5, y=-2..2, numpoints=401); p2 := plot(poly, x=-5..5, y=-2..2, numpoints=401, color=red); plots[display]([p1,p2], title=caption); end: for n in [2,4,10,20,50,100] do # interface(plotdevice=gif, plotoutput=`runge`.n.`.gif`); runge(n); od;
Τύπος Παρεμβολής Lagrange (t0, x0), (t1, x1), ... , (tn, xn) Θα μπορούσαμε να λύσουμε ένα σύστημα γραμμικών εξισώσεων: Αλλά ίσως να προτιμούσαμε να χρησιμοποιήσουμε το τύπο παρεμβολής Lagrange:
Είναι ο τύπος Lagrange επιτυχής; Παρατηρούμε ότι είναι ένα πολυώνυμο βαθμού το πολύ n. Θυμηθείτε, τα xi και ti είναι σταθερές. Περνά όμως από τα δοθέντα σημεία? Για n = 4, εξετάστε την τιμή για t = t3. Οι όροι με i = 0,1,2,4 θα είναι μηδέν, μια και περιέχουν τον όρο (t3 - t3) = 0. Ο αριθμητής του κλάσματος του όρου με i = 3 είναι ίσος με τον παρονομαστή. Οπότε η τιμή στο t = t3 θα είναι x3 , το οποίο είναι σωστό!
Ένα Παράδειγμα στην Maple > ti:=[3,2,1,0,1,2]; > xi:=[12,10,5,1,3,4]; > interp(ti,xi,t); > with(plots): > pts:=plot([seq([ti[i],xi[i]],i=1..6)],style=point): > inter:=plot(interp(ti,xi,t),t=3..3): > display([pts,inter]); > ti:=[ti[],3]; > xi:=[xi[],6]; > pts2:=plot([seq([ti[i],xi[i]],i=1..7)],style=point): > inter2:=plot(interp(ti,xi,t),t=3..3): > display([pts2,inter2]);
Συμπεριφορά Πολυωνύμου Παρεμβολής Η πολυωνυμική παρεμβολή έχει μερικές ιδιότητες που είναι συχνά ανεπιθύμητες: Η προσθήκη ή η μεταβολή ενός σημείου παρεμβολής μπορεί να επηρεάσει ολόκληρη την παρεμβάλουσα – ακόμα και σε περιοχές μακριά από το εν λόγω σημείο. Μικρές αλλαγές στα σημεία παρεμβολής μπορούν να έχουν ισχυρές επιπτώσεις στην παρεμβάλουσα. Η προσπάθεια παρεκβολής με πολυώνυμα μπορεί να μας δώσει πολύ άσχημα αποτελέσματα. Μερικά από αυτά τα προβλήματα μπορούν να διορθωθούν εάν χρησιμοποιήσουμε τμηματικά πολυωνυμική παρεμβολή .
Τμηματικά Πολυωνυμική Παρεμβολή Ένα πολυώνυμο 9ου βαθμού παρεμβάλον σε 10 σημεία: Η συμπεριφορά στα άκρα μάλλον είναι προβληματική. Εναλλακτικά, ας χρησιμοποιήσουμε περισσότερα του ενός πολυώνυμα. Ορίστε η Τμηματική κυβική φυσική spline που παρεμβάλει τα παραπάνω δεδομένα. Τα σημεία στα οποία περνάμε από το ένα πολυώνυμο στο άλλο λέγονται κόμβοι. Στο παραπάνω κάθε σημείο παρεμβολής είναι κόμβος.
Τμηματικά Γραμμική Παρεμβολή Το απλούστερο σχήμα παρεμβολής είναι η τμηματικά γραμμική παρεμβολή – απλά ενώνουμε τα σημεία παρεμβολής με ευθύγραμμα τμήματα: Η μέθοδος αυτή έχει δύο προβλήματα: Πιθανότατα είναι μειωμένης ακρίβειας. Η παρεμβάλουσα έχει γωνίες – η παράγωγός της δεν είναι συνεχής. Από την άλλη μεριά έχει και μερικά προτερήματα: Τυχόν αλλαγή στα σημεία παρεμβολής επηρεάζει μόνον την περιοχή που ορίζουν τα αντίστοιχα δύο γειτονικά σημεία. Η παρεμβάλουσα δεν έχει παράλογη συμπεριφορά εκτός της περιοχής παρεμβολής.
Τμηματική Παρεμβολή Lagrange Ορίστε μια τμηματικά κυβική παρεμβάλουσα, προσαρμοσμένη σε μια τετράδα σημείων κάθε φορά: Εδώ, έχουμε κόμβους στο 4ο και στο 7ο σημείο. Αναγνωρίζουμε αμέσως το πρόβλημα: Τα κομμάτια δεν ενώνονται μεταξύ τους ομαλά.
Ενώνοντας τα Κομμάτια Ομαλά Για να ενώσουμε τα κομμάτια ομαλά, μπορούμε να χρησιμοποιήσουμε κυβικά πολυώνυμα, παρεμβάλοντα σε δύο μόνον σημεία. Κάθε κομμάτι είναι ελεύθερο να ενωθεί με τα γειτονικά του ομαλά. Πόση ελευθερία έχει; Κάθε κυβικό πολυώνυμο έχει 4 παραμέτρους. Οι 2 από αυτές χρησιμοποιούνται για να υλοποιηθεί η παρεμβολή στα δύο σημεία. Άρα περισσεύουν 2 παράμετροι σε κάθε κομμάτι τις οποίες μπορούμε να χρησιμοποιήσουμε για να κάνουμε την συνολική παρεμβάλουσα ομαλή. Θα δούμε δύο τέτοια σχήματα για τμηματικά κυβική παρεμβολή: Τις φυσικές κυβικές splines και Την παρεμβάλουσα CatmullRom.
Οι Φυσικές Κυβικές Splines Έστω ότι παρεμβάλουμε σε n+1 δεδομένα σημεία χρησιμοποιώντας n κυβικά πολυώνυμα. Ορίστε ένας τρόπος αποτελεσματικής χρήσης των διαθέσιμων 4n παραμέτρων: Απαίτησε το κάθε κομμάτι να παρεμβάλει τα δεδομένα σημεία που το αφορούν. Αυτό μας δίνει 2n περιορισμούς. Απαίτησε τα γειτονικά κομμάτια να έχουν ίδιες τιμές πρώτων παραγώγων στα κοινά τους σημεία. Άλλοι n-1 περιορισμοί. Απαίτησε τα γειτονικά κομμάτια να έχουν ίδιες τιμές και δεύτερων παραγώγων στα κοινά τους σημεία. Άλλοι n-1 περιορισμοί. Μας περισσεύουν δύο ακόμα παράμετροι. Απαίτησε μηδενικές τιμές δευτέρων παραγώγων στα άκρα. Το παραπάνω σχήμα μας δίνει κυβικές φυσικές splines.
Πώς Μπορούμε να Βρούμε μια Φυσική Spline? Πώς θα βρούμε την φυσική κυβική spline που παρεμβάλει στα σημεία (t0,x0 ), (t1,x1 ), (t2,x2 ); H spline θα αποτελείται από 2 κομμάτια: a3t3 + a2t2 + a1t + a0 (t0,< t < t1 ) b3t3 + b2t2 + b1t + b0 (t1,< t < t2 ) Μπορούμε να βρούμε τα a και b λύνοντας το παρακάτω σύστημα των 8 γραμμ9ικών εξισώσεων: a3t03 + a2t02 + a1t0+ a0 = x0 a3t13 + a2t12 + a1t1+ a0 = x1 b3t13 + b2t12 + b1t1+ b0 = x1 b3t23 + b2t22 + b1t2+ b0 = x2 3a3t12 + 2a2t1 + a1 = 3b3t12 + 2b2t1 + b1 6a3t1+ 2a2 = 6b3t1+ 2b2 6a3t0+ 2a2 = 0 6b3t1+ 2b2 = 0
Ιδιότητες Φυσικών Κυβικών Splines
Η Παρεμβάλουσα CatmullRom Ίσως να προτιμούμε μια τμηματικά κυβική παρεμβάλουσα που είναι πιο εύκολα να υπολογισθεί από μια φυσική spline. Επίσης θα θέλαμε τυχόν αλλαγές σε ένα σημείο να επηρεάζει μόνον τα γειτονικά τμήματά της. Η παρεμβάλουσα CatmullRom έχει και τις δύο αυτές ιδιότητες. Μπορεί να ορισθεί ως εξής Απαιτήστε στα άκρα του κάθε κομματιού να συμφωνούν οι ανάλογες τιμές στα δεδομένα σημεία. Απαιτήστε στα άκρα του κάθε κομματιού να συμφωνούν οι τιμές των παραγώγων που καθορίζετε από δυο γειτονικά δεδομένα σημεία. Ένα παράδειγμα:
Η Πολυωνυμική Παρεμβολή είναι Γραμμική Υποθέστε ότι το πολυώνυμο p(t) = antn + an-1tn-1 + … + a0 παρεμβάλει στα σημεία (t0,x0 ), (t1,x1), … , (tn,xn) και ότι το πολυώνυμο q(t) = bntn + bn-1tn-1 + … + b0 (t0,y0 ), (t1,y1), … , (tn,yn). Είναι εύκολο να δούμε ότι το πολυώνυμο p(t) + q(t) (t0, x0+y0), (t1, x1+y1), … , (tn, xn+yn). Παρόμοια, το cp(t) παρεμβάλει στα (t0, cx0), (t1,cx1), … , (tn,cxn). Η πολυωνυμική παρεμβολή είναι μια γραμμική πράξη. Σημείωση: Η έννοια του όρου ``γραμμική'' είναι διαφορετική εδώ από αυτήν της ``γραμμικής παρεμβολής'' σαν παρεμβολή με ευθύγραμμα τμήματα.
Γραμμικότητα της Τμηματικής Παρεμβολής Η τμηματική πολυωνυμική παρεμβολή είναι επίσης γραμμική, με την προϋπόθεση ότι βασίζεται σε γραμμικές παρεμβάλουσες. Για παράδειγμα: Η τμηματική παρεμβάλουσα Lagrange είναι γραμμική, επειδή το κάθε κομμάτι της είναι πολυωνυμική παρεμβάλουσα. Οι φυσικές κυβικές splines είναι γραμμικές, επειδή οι παράγωγοι στις οποίες βασίζονται είναι γραμμικές, δηλ.: Δηλαδή, εάν οι παράγωγοι δύο splines συμπίπτουν θα συμπίπτει και το άθροισμά τους. Η παρεμβάλουσα CatmullRom είναι γραμμική, μια και βασίζεται σε κλίσεις που καθορίζονται από ζεύγη σημείων, οι οποίες είναι γραμμικές ως προς τις τιμές των συναρτήσεων αυτών.
Συναρτήσεις Βάσης Γραμμικής Παρεμβολής Εάν χρησιμοποιούμε ένα γραμμικό σχήμα, μπορούμε να παράγουμε μια συνάρτηση παρεμβολής από συναρτήσεις βάσης οι οποίες παρεμβάλουν μόνο σε ένα μη-μηδενικό σημείο. Για ένα σύνολο σημείων t0, t1, ... ,tn, μπορούμε να βρούμε τις παρακάτω συναρτήσεις βάσης: p0(t) παρεμβάλει στα (t0,1), (t1,0), ... ,(tn,0). p1(t) παρεμβάλει στα (t0,0), (t1,1), ... ,(tn,0). : : : pn(t) παρεμβάλει στα (t0,0), (t1,0), ... ,(tn,1). Τώρα, για να παρεμβάλουμε στα σημεία (t0, x0), (t1,x1), ... ,(tn,xn). Αρκεί να υπολογίσουμε το p(t) = x0 p0(t) + x1 p1(t) + … + xn pn(t)
Συναρτήσεις Βάσης Παρεμβολής Lagrange Ορίστε οι συναρτήσεις βάσης για παρεμβολή Lagrange στα t0 = 0, t1 = 1, t2 = 3, t3 = 4: