ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, 6-7, 3 Ο ΕΞΑΜΗΝΟ ΑΠΑΝΤΗΣΕΙΣ ΕΡΓΑΣΙΑΣ #3: ΠΑΡΕΜΒΟΛΗ ΕΠΙΜΕΛΕΙΑ: Σ. Μισδανίτης. Επιλέξτε αυθαίρετα µία συνάρτηση ( x και τέσσερα ζευγάρια σημείων ( x, ( x, έτσι ώστε τα σημεία x να μην ισαπέχουν. Στη συνέχεια, µε βάση τα επιλεγμένα ζευγάρια τιμών, βρείτε το πολυώνυμο παρεμβολής, 3 ης τάξης, Απάντηση: εφαρμόζοντας παρεμβολή α Lagrange και β Newton. Επίσης, µε βάση τα ίδια τέσσερα ζευγάρια σημείων εφαρμόστε παρεμβολή κυβικών splnes. Αφού σχεδιάστε σε γραφήματα τις προκύπτουσες συναρτήσεις παρεμβολής και µε τις τρεις μεθόδους συγκρίνετε τα αποτελέσματα µε την αναλυτική συνάρτηση ( x και σχολιάστε µε λεπτομέρεια τα θετικά και αρνητικά χαρακτηριστικά των μεθόδων Απάντηση: Για την επίλυση της άσκησης επιλέγουμε αυθαίρετα τη συνάρτηση 3 ( x = x 3x 4x 5 ( και τα αντίστοιχα ζεύγη τιμών {, 5 },{,7 },{ 5,9 },{ 9,46}, έτσι ώστε οι αποστάσεις μεταξύ των σημείων να μην παραμένουν σταθερές. Θα χρησιμοποιήσουμε μεθόδους παρεμβολής α Lagrange, β Newton και γ Κυβικών Splnes στα δεδομένα ζεύγη τιμών με στόχο να αναπαράγουμε ένα πολυώνυμο παρεμβολής 3 ης προσεγγίζει την αρχική ( x. τάξης το οποίο θα α Παρεμβολή Lagrange Η παρεμβολή Lagrange χαρακτηρίζεται στη γενική περίπτωση από την εξίσωση
n = P( x = ( x L( x, όπου L ( x = n = ( x x n = ( x x ( Στην συγκεκριμένη περίπτωση, επειδή το πολυώνυμο παρεμβολής που αναζητούμε είναι 3 ης τάξης, έχουμε n=3 και επομένως η ( παίρνει τη μορφή P( x = ( x L ( x ( x L ( x ( x L ( x ( x L ( x (3 3 3 και κάνοντας χρήση του παραπάνω αναδρομικού τύπου, για τα L ( x έχουμε L ( x = L ( x = ( x x( x x( x x3 ( x x ( x x ( x x 3 ( ( ( ( ( ( x x x x x x3 x x x x x x 3 (4, (6, L ( x = L ( x = 3 ( x x( x x( x x3 ( x x ( x x ( x x 3 ( x x( x x( x x ( x x ( x x ( x x 3 3 3 (5 (7 Για την επίλυση των προβλημάτων παρεμβολής κάνουμε χρήση Mathematca. Ο κώδικας που χρησιμοποιήθηκε κάνοντας χρήση πολυωνύμου Lagrange φαίνεται παρακάτω Πρόγραμμα : Παρεμβολή Lagrange x= ; y = ; Clear@p, t, x, yd; p@t_d := y Ht x LHt x L Ht x 3 L Hx x LHx x LHx x 3 L y Ht x LHt x L Ht x 3 L Hx x LHx x LHx x 3 L y Ht x LHt x LHt x 3 L Hx x LHx x LHx x 3 L y Ht x LHt x LHt x L 3 Hx 3 x LHx 3 x LHx 3 x L ; Prnt@"p@xD = ", p@xdd; Prnt@"p@x D = ", p@x D, "\n", "\n", "p@x D = ", p@x D, "\n", "\n", "p@ x D = ", p@ x D, "\n", "\n", "p@ x 3 D = ", p@ x 3 DD; Lagrange@XY_D := ModuleA8, k, n, X, Y<, X k_ := Transpose@XYD P,kT ; Y k_ := Transpose@XYD P,kT ; n = Length@XYD ; ReturnA Y k  k n k= k = n x X  X k X yz { k=k x X X k X yz E;E; {
@x_d = x 3 3x 4x 5; Needs@"Graphcs`Colors`"D; n= 3 XY = 88., @.D<, 8., @.D<, 85., @5.D<, 89., @9.D<<; Cdot = LstPlot@XY, PlotStyle 8Red, PontSze@.D<, DsplayFuncton IdenttyD; P@x_D = Lagrange@XYD; graph = Plot@8@xD,P@xD<, 8x,, <, PlotStyle 8Magenta, Blue<, PlotRange All, Tcks 8Range@,, D, Range@, 4, D<, DsplayFuncton IdenttyD; Show@graph, Cdot, DsplayFuncton $DsplayFunctonD; Prnt@"@xD = ", @xd, "\n", "\n", "P@xD = ", P@xD, "\n", "\n", "P@ x D = ", Chop@ Expand@ P@ x DDDD ; Η εκτέλεση του προγράμματος μας επιστρέφει τη γραφική παράσταση της αρχικής ( x μαζί με το πολυώνυμο παρεμβολής Lagrange (Σχήμα, καθώς και τον αναλυτικό υπολογισμό των συντελεστών του πολυωνύμου παρεμβολής. @ x D = 5 4x 3x x 3 P[x] =.555556 (-9.x (-5.x (-.x.66667 (-9.x (-5.x (. x- 3.6667 (-9.x (-.x (. x4.94444 (-5.x (-.x (. x P@ x D = 5. 4. x 3. x. x 3 4 8 6 4 4 6 8 Σχήμα : Γραφική παράσταση της αρχικής ( x και του πολυωνύμου Lagrange Από τα αποτελέσματα προκύπτει ότι το πολυώνυμο Lagrange που προκύπτει ταυτίζεται με την αρχική ( x. 3
β Παρεμβολή Newton Η παρεμβολή Newton περιγράφεται στη γενική περίπτωση από την εξίσωση n ( ( ( n ( Px ( = a a x x a x x x x... a x x (8 Στην συγκεκριμένη περίπτωση, επειδή το πολυώνυμο παρεμβολής που αναζητούμε είναι = 3 ης τάξης, έχουμε n=3 και επομένως η (8 παίρνει τη μορφή ( ( ( ( ( ( P( x = a a x x a x x x x a x x x x x x (9 3 όπου τα a υπολογίζονται από τις σχέσεις a = ( a a = ( x x ( x x = ( x x ( x x ( x x ( x x ( x x ( x x ( ( 3 a = 3 ( x x ( x x ( x x ( x x ( x x ( x x ( x x ( x x ( x x 3 3 3 3 3 ( x x ( x x ( x x 3 Ο κώδικας που χρησιμοποιήθηκε κάνοντας χρήση πολυωνύμου Newton φαίνεται παρακάτω Πρόγραμμα : Παρεμβολή Newton (3 Clear@, p, t, x, y, zd; @y, zd @x, yd @x_, y, z_d := ModuleA8<, ReturnA EE z x p@t_d = @x D @x,x D Ht x L @x,x,x D Ht x L Ht x L @x,x,x,x 3 D Ht x L Ht x L Ht x L; Prnt@"p@xD = ", p@xdd; Prnt@"p@x D = ", p@x DD; Prnt@"p@x D = ", p@x DD; Prnt@"p@x D = ", p@x DD; Prnt@"p@x D = ", Together@p@x DDD; Prnt@"p@x 3 D = ", p@x 3 DD; 4
NewtonPoly@XY_D := ModuleA8d,, k, n, X, Y<, X = Transpose@XYD PT ; Y = Transpose@XYD PT ; n = Length@XYD ; d = Table@"", 8n<, 8n <D; d PAll,T = Y PAllT ; ForA =, n,, ForA k=, k n, k, d Pk,T = d Pk,T d Pk,T E;E; X PkT X Pk T ForA k=, k n, k, p@k, x_d = Hx X PT LE; k = n ReturnA dpk,kt p@k, xde;e; k= @x_d = x 3 3x 4x 5; Needs@"Graphcs`Colors`"D; n= 3 XY = 88., @.D<, 8., @.D<, 85., @5.D<, 89., @9.D<<; Cdot = LstPlot@XY, PlotStyle 8Red, PontSze@.D<, DsplayFuncton IdenttyD; P@x_D = NewtonPoly@XYD; graph = Plot@8@xD, P@xD<, 8x,, <, PlotStyle 8Magenta, Blue<, PlotRange All, Tcks 8Range@,, D, Range@, 4, D<, DsplayFuncton IdenttyD; Show@graph, Cdot, DsplayFuncton $DsplayFunctonD; Prnt@"@xD = ", @xd, "\n", "P@xD = ", P@xD, "\n", "P@ x D = ", Chop @ Expand@ P@ x DDDD; Η εκτέλεση του προγράμματος μας επιστρέφει τη γραφική παράσταση της αρχικής ( x μαζί με το πολυώνυμο παρεμβολής Newton (Σχήμα, καθώς και τον αναλυτικό υπολογισμό των συντελεστών του πολυωνύμου παρεμβολής. @xd = 5 4x 3x x 3 P@xD = 5. 6. H. xl. H. xlh. xl. H 5. xlh. xlh. xl P@xD = 5. 4. x 3. x. x 3 5
4 8 6 4 4 6 8 Σχήμα : Γραφική παράσταση της αρχικής ( x και του πολυωνύμου Newton Από τα αποτελέσματα προκύπτει ότι το πολυώνυμο Lagrange και το πολυώνυμο Newton που προκύπτει ταυτίζονται τόσο μεταξύ τους, όπως άλλωστε αναμέναμε, όσο και με την αρχική ( x. Αν και οι δυο παραπάνω μέθοδοι οδηγούν στο ίδιο πολυώνυμο παρεμβολής, ωστόσο παρουσιάζουν σημαντικές διαφορές μεταξύ τους. Με εξαίρεση την απλότητα του αναδρομικού τύπου για τα L( x( της παρεμβολής Lagrange, η Newton παρουσιάζει σημαντικά πλεονεκτήματα. Η παρεμβολή σε ένα επιπλέον σημείο, δηλαδή παρεμβολή στα σημεία x... xn και x n, απαιτεί τον υπολογισμό νέων πολυωνύμων Lagrange από την αρχή που σε συνδυασμό με το γεγονός ότι ο υπολογισμός της τιμής του πολυωνύμου σε ένα σημείο στη μορφή Lagrange απαιτεί περισσότερες πράξεις σε σχέση με τις πράξεις τάξης On ( που απαιτούνται από την Newton, καθιστούν την μέθοδο Lagrange ασύμφορη. γ Παρεμβολή με κυβικές Splnes Με παρόμοιο τρόπο δουλεύουμε και με τη μέθοδο των κυβικών Splnes. Για τα τρία υποδιαστήματα ανάμεσα στα ζεύγη που έχουμε επιλέξει είναι '' '' '' '' y 3 y 3 yh y h S( x = ( x x ( x x ( x x ( x x 6h 6h h 6 h 6 (4 '' '' '' '' y 3 y 3 yh yh S( x = ( x x ( x x ( x x ( x x (5 6h 6h h 6 h 6 6
'' '' '' '' y y y h yh S( x = x3 x x x x x x3 x 6h 6h h 6 h 6 όπου οι όροι 3 3 3 3 3 ( ( ( ( h και Δ n που χρειάζονται για τη μέθοδο υπολογίζονται από τις σχέσεις (6 h x x = (7 και Δ = (8 n n n αντίστοιχα. '' '' Για να κλείσουμε το σύστημα των εξισώσεων θέτουμε y = y3 = απ όπου τελικά προκύπτει το τριδιαγώνιο σύστημα Δ Δ '' ( h h h y h h '' = h ( h h y Δ Δ h h Ο κώδικας που χρησιμοποιήθηκε κάνοντας χρήση κυβικών Splnes φαίνεται παρακάτω Πρόγραμμα 3: Παρεμβολή με κυβικές Splnes NaturalSplne@XY_D := ModuleA8XY = XY<, Derences := ModuleA8k<, n = Length@XYD ; X = Transpose@XYD PT ; Y = Transpose@XYD PT ; h= d = Table@, 8n<D; m = Table@, 8n<D; a= b= c= v = Table@, 8n <D; s = Table@, 8n<, 84<D; h PT = X PT X PT ; d PT = Y PT Y PT ; h PT ForA k=, k n, k, h PkT = X PkT X PkT ; d PkT = Y PkT Y PkT ; h PkT a Pk T = h PkT ; b Pk T = Hh P k T h PkT L; c Pk T = h PkT ; v Pk T = 6Hd PkT d Pk T LE;E; l l dla 7
TrDagonal := ModuleA8k, t<, m PT = ; m PnT = ; ForA k=, k n, k, t = a Pk T ; b Pk T b PkT = b PkT tc Pk T ; = v PkT tv Pk T ;E; v PkT m PnT = v Pn T b Pn T ; ForA k= n, k, k, m PkT = v PkT c PkT m P kt ;E;E; b PkT ComputeCoe := ModuleA8k<, ForA k=, k n, k, s Pk,T = Y PkT ; s Pk,T = d P kt 6 h PkT Hm PkT m PkT L; s Pk,3T = s Pk,4T = m PkT CS@t_D := Module@8<, ; m PkT m PkT ;E;E; 6h PkT For@ =, n,, I@ X PT t&&t< X PT,k= D;D; I@t< X PT,k= D; I@X PnT t, k = nd; w = t X PkT ; Return@HHs Pk,4T w s Pk,3T L w s Pk,T L w s Pk,T D;D; Derences; TrDagonal; ComputeCoe; E; @x_d = x 3 3x 4x 5; XY = 88., @.D<, 8., @.D<, 85., @5.D<, 89., @9.D<<; NaturalSplne@XYD; Needs@"Graphcs`Colors`"D; dots = LstPlot@XY, PlotStyle 8Red, PontSze@.D<, DsplayFuncton IdenttyD; gr = Plot@8CS@xD,@xD<, 8x,, <, PlotStyle 8Blue, Magenta<, DsplayFuncton IdenttyD; Show@gr, dots, AxesLabel 8"x", "y "<, DsplayFuncton $DsplayFunctonD; Prnt@"Splne y = ", S,"@xD"D; Prnt@"data ponts = ", XYD; 8
Η εκτέλεση του προγράμματος 3 μας επιστρέφει τη γραφική παράσταση της αρχικής ( x μαζί με τα πολυώνυμα παρεμβολής που προκύπτουν από τη χρήση των κυβικών Splnes (Σχήμα 3. y 75 5 5 75 5 5 4 6 8 x Σχήμα 3: Γραφική παράσταση της αρχικής ( x και του πολυωνύμου των κυβικών Splnes Για την εμφάνιση των συντελεστών που οδηγούν στο πολυώνυμο παρεμβολής εισάγουμε στον κώδικα την εντολή MatrxForm[Chop[s]] η οποία επιστρέφει τον πίνακα των συντελεστών 5. 3.5498.6454 y 7..96 3.687 4.33588 z k 9. 5.7 4.799 3.5596 { [ ] S 3 ( x =.6454 x 3.5498 x 5, x, (9 [ ] S 3 ( x = 4.33588 x.383 x 48.985 x 34.779, x,5 ( [ ] S 3 ( x = 3.5596 x 96.973 x 543.99 x 95., x 5,9 ( Για τον έλεγχο της σωστής λειτουργίας του προγράμματος 3 συγκρίνουμε τα αποτελέσματα που επιστρέφει με τα αντίστοιχα που δίνει η υπορουτίνα που περιέχει η Mathematca. Για το σκοπό αυτό εισάγουνε τον παρακάτω κώδικα @x_d = x 3 3x 4x 5; XY = 88., @.D<, 8., @.D<, 85., @5.D<, 89., @9.D<<; Needs@"NumercalMath`SplneFt`"D; splne = SplneFt@XY, CubcD; ParametrcPlot@splne@tD, 8t,, <, PlotRange All, Compled False, PlotStyle Blue D; που επιστρέφει τα ίδια αποτελέσματα. 9
3. Με βάση την παραπάνω συνάρτηση ( x επιλέξτε δέκα ζευγάρια σημείων ( x, ( x, έτσι ώστε τα σημεία x να μην ισαπέχουν και εφαρμόστε παρεμβολή µε τη μέθοδο των ελαχίστων τετραγώνων μηδενικής, πρώτης και δεύτερης τάξης. Σχολιάστε µε λεπτομέρεια τα αποτελέσματα. Απάντηση: Για την επίλυση της άσκησης χρησιμοποιούμε και πάλι την αρχική συνάρτηση 3 ( x = x 3x 4x 5 (9 και τα αντίστοιχα ζεύγη τιμών {-.,-4.}, {.,-5.}, {.5,.}, {.3,.664}, {3.,38.5}, {4.5,34.5}, {5.8,37.54}, {6.,38.36}, {7.9,85.448},{8.4,.33}, έτσι ώστε οι αποστάσεις μεταξύ των σημείων να μην παραμένουν σταθερές. α Πολυώνυμο μηδενικού βαθμού Για την περίπτωση του πολυωνύμου μηδενικού βαθμού δεν χρειάζεται να λύσουμε σύστημα εξισώσεων. Το πολυώνυμο σε αυτή την περίπτωση υπολογίζεται από τη σχέση P( x = a ( όπου το υπολογίζεται μέσα από τη σχέση na a n = y = Κάνοντας χρήση Mathematca υπολογίζουμε το πολυώνυμο P( x = 68.373 και η αντίστοιχη γραφική παράσταση φαίνεται στο σχήμα 4. (
y 8 6 4 4 6 8 Σχήμα 4: Γραφική παράσταση του πολυωνύμου ου βαθμού με ελάχιστα τετράγωνα x β Πολυώνυμο πρώτου βαθμού Για την περίπτωση του πολυωνύμου πρώτου βαθμού οδηγούμαστε στην επίλυση ενός γραμμικού συστήματος x. Το πολυώνυμο σε αυτή την περίπτωση υπολογίζεται από τη σχέση P( x = a a x ( όπου τα και a υπολογίζονται μέσα από τις σχέσεις a n n = (3 = = na a x y και n n n = (4 = = = a x a x x y Κάνοντας χρήση Mathematca υπολογίζουμε το πολυώνυμο P ( x =.8 x.86 και η αντίστοιχη γραφική παράσταση φαίνεται στο σχήμα 5.
y 8 6 4 x 4 6 8 - Σχήμα 5: Γραφική παράσταση του πολυωνύμου ου βαθμού με ελάχιστα τετράγωνα γ Πολυώνυμο δεύτερου βαθμού Για την περίπτωση του πολυωνύμου δεύτερου βαθμού οδηγούμαστε στην επίλυση ενός γραμμικού συστήματος 3x3. Το πολυώνυμο σε αυτή την περίπτωση υπολογίζεται από τη σχέση ( = (5 P x a a x a x όπου τα, και a υπολογίζονται μέσα από τις σχέσεις a a n n n = = = = na a x a x y (6 n n n n 3 = (7 = = = = a x a x a x x y και n n n n 3 4 = (8 = = = = a x a x a x x y Ο κώδικας που χρησιμοποιήθηκε κάνοντας χρήση θεωρίας ελαχίστων τετραγώνων για τον υπολογισμό πολυωνύμου δευτέρου βαθμού φαίνεται παρακάτω
Πρόγραμμα 4: Πολυώνυμο ου βαθμού με θεωρία ελαχίστων τετραγώνων LSParabolc@XY_D := ModuleA 8k, n, XY = XY <, n= Length@XYD; X= Transpose@XYD PT ; Y= Transpose@XYD PT ; A= B= k n n k= X PkT k= n X P kt n k= X PkT n X n k= PkT k= X 3 P kt n k= X n PkT k= X 3 PkT k= Y PkT n k= y n k= X PkT Y PkT ; n k HXPkT L k= Y z PkT { n X P kt 4 Z = LnearSolve@A, BD; a= Z P,T ; b= Z P,T ; c= Z P3,T ; ReturnA a bx cx E; E; p@x_d = x 3 3x 4 x 5; XY = 88., p@.d<, 8., p@.d<, 8.5, p@.5d<, 8.3, p@.3d<, 83., p@3.d<, 84.5, p@4.5d<, 85.8, p@5.8d<, 86., p@6.d<, 87.9, p@7.9d<, 88.4, p@8.4d<< ; @x_d = LSParabolc@XYD; p@x_d = FtAXY, 9, x, x =,xe; y ; z { Prnt@"Ponts = ", XYD; Prnt@"Usng the subroutne LSParabolc"D; Prnt@"y = @xd = ", @xdd; Prnt@"y = @xd = ", N@@xDD, "\n"d; Prnt@"Usng Mathematca's procedure `Ft`"D; Prnt @"y = p@ x D = ", p@ x DD; PrntA"y = a bx cx "E; Prnt@"The normal equatons or ndng the coecents a and b are:"d; PrntAMatrxForm@AD, MatrxFormA "a" y "b" z E," = ", MatrxForm@BDE; k "c" { Prnt@"The soluton s"d; PrntAMatrxFormA "a" y "b" z E," = ", MatrxForm@ZDE; k "c" { Prnt@"a = ", ad; Prnt@"b = ", bd; Prnt@"c = ", cd; Prnt@""D; 3
Prnt@"The `least squares parabolc` s"d; Prnt A"y = ", a bx cx," = ", NA a bx cx EE ; Needs@"Graphcs`Colors`"D; dots = LstPlot@XY, PlotStyle 8Red, PontSze@.D<, DsplayFuncton IdenttyD; graph = Plot@@xD, 8x,, 9<, PlotStyle Blue, DsplayFuncton IdenttyD; Show@graph, dots, PlotRange All, AxesLabel 8"x", "y"<, DsplayFuncton $DsplayFunctonD; Prnt@"Ponts = ", XYD; Prnt@"The `least squares parabolc` s"d; PrntA"y = ", a bx cx E; Η εκτέλεση του προγράμματος 4 μας επιστρέφει το πολυώνυμο παρεμβολής ου βαθμού όπως αυτό προκύπτει αναλυτικά από τη λύση του γραμμικού συστήματος. Ο κώδικας επιστρέφει y = a bx cx 38.7 43.45 y a y 683.73 y 38.7 43.45 654.64 b z z = 9855.3 z k 43.45 654.64 9.5 { k c { k 538. { The soluton s a 4.4355 y b yz = 45.9566 z k c { k 9.333 { a = -4.4355 b = -45.9566 c = 9.333 y = 4.4355 45.9566 x 9.333 x και επομένως το πολυώνυμο παρεμβολής είναι ( = 9.333 45.9566 4.4355 P x x x Για τον έλεγχο της σωστής λειτουργίας του προγράμματος 4 συγκρίνουμε τα αποτελέσματα που επιστρέφει με τα αντίστοιχα που δίνει η υπορουτίνα `Ft` που περιέχει η Mathematca. Ο έλεγχος αυτός περιλαμβάνεται μέσα στο πρόγραμμα 4. Η γραφική παράσταση του πολυωνύμου παρεμβολής όπως αυτό υπολογίζεται μέσα από το πρόγραμμα 4 φαίνεται στο σχήμα 6. 4
y 8 6 4 4 6 8 Σχήμα 6: Γραφική παράσταση του πολυωνύμου ου βαθμού με ελάχιστα τετράγωνα x 5