Chebyshev interpolasjon Chebyshev polynomer Vi vil studere polynomapproksimasjon på intervallet [-, ]. Målet er å minimalisere den største verdien av feilestimatet E HxL = f HxL - P HxL, hvor maksimum tas over alle x Î [-,], Både lagrangepolynomer og newtonpolynomer gir et feilestimat som involverer nodene xk, k = 0,,,..., : E HxL = QHxL f H+L HcL H+L!, c Î @x0, x D, QHxL = Hx - x0 L Hx - x L... Hx - x- L Hx - x L Hvis nodene kan velges fritt, vil Chebyshev interpolasjonspolynomer P HxL minimere maksimumsverdien av Q(x). odene velges da som nullpunktene til Chebyshev polynomet T HxL av grad.. Disse ligger alle i intervallet [-,] og er gitt ved xk = cosj +. H k+l Π, k = 0,,..., -. Polynomet Q(x) er av grad Chebyshev polynomer kan defineres rekursivt ved T@0, x_d = ; T@, x_d = x; T@k_, x_d := x T@k -, xd - T@k -, xd ; Table@T@k, xd, k, 0, 7<D Simplify Expand Column x x - 4 x3-3 x x4 - x + 6 x5-0 x3 + 5 x 3 x6-4 x4 + x - 64 x7 - x5 + 56 x3-7 x Den ledende koeffisienten for x i polynomet T HxL er - når ³. Polynomene har en trigonometrisk representasjon T HxL = cos H arccos xl, x Î @-, D Chebyshev polynomer ( av første slag) er implementert i Mathematica som ChebyshevT[k,x]. Her er et plott av de 5 første polynomene, av grad,...,5. Her ser vi tydelig at alle nullpunktene ligger innenfor intervallet <-,>.
With@k = 5<, Plot@ChebyshevT@Range@kD, xd, x, -, <DD.0 -.0 -.0 - -.0 Chebyshev interpolerende polynom Chebyshev approksimasjonen av grad er basert på de + nullpunkter av T+ HxL. Chebyshevpolynomene tilfredsstiller følgende ortogonalitetsrelasjoner: Ú k=0 Ti Hxk L T j Hxk L = 0 når i ¹ j Ú k=0 Ti Hxk L Ti Hxk L = + når i ¹ 0 Ú k=0 T0 Hxk L T0 Hxk L = + Sjekker for I = j = : â CosBΠ k=0 k+ + + F Simplify Sjekker for i = 3, j = 5 : â CosB3 Π k=0 k+ + 0 F CosB5 Π k+ + F Det interpolerende polynom kan da utvikles i en sum av ortogonale funksjoner: P HxL = Új=0 c j T j HxL For å bestemme koeffisientene ck, benyttes ortogonalitetsegenskapene. Med xk = cosj vi: k+ Π + får f Hxk L = Pn Hxk L = Új=0 c j T j Hxk L Ú k=0 f Hxk L T0 Hxk L = Úk=0 Új=0 c j T j Hxk L T0 Hxk L = Új=0 Úk=0 c j T j Hxk L T0 Hxk L = Úk=0 c0 T0 Hxk L T0 Hxk L = c0 Ú k=0 T0 Hxk L T0 Hxk L = c0 Úk=0 = c0 H + L HVi har byttet om rekkefølgen av summasjonene over k og j og benyttet at bare j = 0 gir bidrag til den indre summen over k. Videre har vi benyttet at T0 Hxk L = siden polynomet er konstantl
For å bestemme koeffisientene ck, benyttes ortogonalitetsegenskapene. Med xk = cosj vi: k+ Π + får f Hxk L = Pn Hxk L = Új=0 c j T j Hxk L Ú k=0 f Hxk L T0 Hxk L = Úk=0 Új=0 c j T j Hxk L T0 Hxk L = Új=0 Úk=0 c j T j Hxk L T0 Hxk L = Úk=0 c0 T0 Hxk L T0 Hxk L = c0 Ú k=0 T0 Hxk L T0 Hxk L = c0 Úk=0 = c0 H + L HVi har byttet om rekkefølgen av summasjonene over k og j og benyttet at bare j = 0 gir bidrag til den indre summen over k. Videre har vi benyttet at T0 Hxk L = siden polynomet er konstantl Þ + c0 = Ú k=0 f Hxk L T0 Hxk L = + Ú k=0 f Hxk L Videre får vi, ved ombytte av summasjonene og bruk av ortogonalitetsrelasjonene : Ú k=0 f Hxk L Ti Hxk L = Úk=0 Új=0 c j T j Hxk L Ti Hxk L = Új=0 Úk=0 c j T j Hxk L Ti Hxk L = Úk=0 ci Ti Hxk L Ti Hxk L = ci = ci Ú k=0 Ti Hxk L Ti Hxk L = ci J + Ú k=0 f Hxk L Ti Hxk L = Algoritme + + Ú k=0 f Hxk L coshi arccoshxk LL = + Ú k=0 f Hxk L cos Ji k+ Π + 3
4 ChebyshevInterpolatingPolynomial@x_, n_d := Π ModuleB: d = *, c, T>, n+ H* definer noder, lagre funksjonsverdier, initialiser koeffisientliste *L For@k = 0, k n, ++k, x@kd = @Cos@H k + L ddd; y@kd = f@x@kdd; c@kd = 0 D; H* Beregn koeffiisentene *L For@j = 0, j n, ++j, For@k = 0, k n, ++k, c@jd = c@jd + y@kd Cos@ j H k + L dd D D; c@0d = c@0d; n+ ForBj =, j n, ++j, c@jd = F c@jdf; n+ H* beregn chebyshevpolynomene rekursivt *L T@0D = ; T@D = x; If@n >, For@j =, j < n, ++j, T@j + D = x T@jD - T@j - D D D; P = 0; For@j = 0, j n, ++j, P = P + c@jd T@jD D; P = Expand Simplify P; Print@" Chebyshevpolynomet Pn HxL = ", PD Mathematica kode Koden i Mathematica blir mye kortere fordi Chebyshevpolynomene allerede er implementert i programmet.
In[]:= 5 ChPoly@x_, n_d := ModuleBc, z<, k+ Hn + L z@k_d := B CosBΠ â f@z@kdd ChebyshevT@0, z@kdd; n c@0d := n+ k=0 â f@z@kdd ChebyshevT@j, z@kdd; n c@j_d := n+ k=0 â c@kd ChebyshevT@k, xd Simplify n F FF; k=0 Eksempel Som eksempel ønsker vi å bestemme polynomet P3 HxL som approksimerer funksjonen f HxL = ãx på intervallet [-,] odene er gitt ved xk = cosj c0 = 4 c = c = c3 = Ú3k=0 exk T0 Hxk L = Ú3k=0 exk T Hxk L = Ú3k=0 exk T Hxk L = Ú3k=0 exk T3 Hxk L = 4 ΠH k+l når n = 3.. Ú3k=0 exk =.660656 Ú3k=0 exk xk =.303500 Ú3k=0 exk cosj Ú3k=0 exk cosj3 ΠH k+l = ΠH k+l = 0.745036 0.0437939 P3 HxL =.660656 T0 HxL +.303500 T HxL + 0.745036 T HxL + 0.0437939 T3 HxL = 0.994653 + 0.999334 x + 49007 x + 0.75756 x3 f@x_d := ãx ChebyshevInterpolatingPolynomial@x, 3D Chebyshevpolynomet Pn HxL = 0.7576 x3 + 490 x + 0.99933 x + 0.99465 Detaljert Mathematica kode : Clear@xD Beregner nullpunkter: nodes = x. Solve@ChebyshevT@4, xd 0, xd :- - - +,-, +, >
6 @nodesd Sort -0.93, -0.363, 0.363, 0.93< k+ x = B TableBCosB ΠF, k, 0, 3<FF Sort -0.93, -0.363, 0.363, 0.93< ullpunktene til Chebyshevpolynomet T4 HxL stemmer med listen x Beregner koeffisientene c@0d = 4.6607 Sum@Exp@x@@kDDD, k,, 4<D Alternativt : Plus Exp@xD 4.6607 c@d = SumBExp@x@@kDDD CosB Π H k - L.303 F, k,, 4<F Alternativt : Plus HExp@xD xl.303 c@d = SumBExp@x@@kDDD CosB 0.745 c@3d = Π H k - L SumBExp@x@@kDDD CosB 3 Π H k - L 0.0437939 F, k,, 4<F F, k,, 4<F P3 @x_d = â c@kd ChebyshevT@k, xd Simplify 3 k=0 3 0.7576 z + 490 z + 0.99933 z + 0.99465
Plot@P3 @xd, Exp@xD<, x, -, <, PlotStyle Thick, Dashed, Red<, Blue<<D.5.0.5.0 -.0 -.0 Egenprogrammert: f@x_d := ãx ChPoly@x, 3D 0.7576 x3 + 490 x + 0.99933 x + 0.99465 Sammenlikning med Lagrange interpolasjon Vi vil approksimere f(x) = ex med et Lagrangepolynom av grad n = 3 over intervallet [-, ]. 3 odene er ekvidistante med abscisser x0 = -, x = -, x =, 3 vi gjør med tilsvarende beregning med Chebyshevnoder. Ved Lagrangeinterpolasjon: k X@k_D := - + 3 f@x_d := Exp@xD pts = Table@X@iD, f@x@idd<, i, 0, 3<D -. 0.36779-0.333333 0.7653 0.333333.3956..7 LPoly@x_, 3D = InterpolatingPolynomial@pts, xd Expand 0.765 x3 + 475 x + 0.999049 x + 0.99596 errorl@x_d := f@xd - LPoly@x, 3D x3 =.Vi sammenlikner feilen 7
p = Plot@errorL@xD, x, -, <, PlotStyle RedD 0.004 0.00 -.0 -.0-0.00-0.004-0.006-0.00-0.00 Kontrollerer at feilen er null i de ekvidistante nodene : Table@errorL@X@kDD, k, 0, 3<D 0., 0., 0., 0.< Ser av grafen at største absolutte feil ligger nær x = 0.: FindRoot@D@errorL@xD 0, xd, x, 0.<D x 0.75490< Vi ser av grafen at dette punktet er globalt maksimum på intervallet [-,]: Abs@errorL@0.75490DD 0.00994 Ved Chebyshevinterpolasjon : errorch@x_d := f@xd - ChPoly@x, 3D p = Plot@errorCh@xD, x, -, <D 0.006 0.004 0.00 -.0 - -0.00-0.004-0.006 Kontrollerer at feilen er null i Chebyshevnodene : errorch@nodesd Chop 0, 0, 0, 0< Finner ekstremalpunkt for feilfunksjonen :.0
9 FindRoot@D@errorCh@xD 0, xd, x, <D x 0.733< Største absolutte feil i det indre av området: Abs@errorCh@0.733DD 0.00647 Sjekker feilen i endepunktet Abs@errorCh@DD 0.0066567 Den største absolutte feil er derfor for x = (globalt maksimum på [-,] ). Show@p, p, PlotRange AllD 0.005 -.0 -.0-0.005-0.00 For Lagrangeinterpolasjonen er den største absolutte feilen vi gjør på intervallet [-, ] gitt ved 0.0099 ved x = 0.7549, mens ved Chebyshevinterpolasjonen er maksimal absolutt feil = 0.006657 ved x =. Feilen er altså redusert med ca. 30% og er fordelt mer jamnt over intervallet. Dette bekrefter at Chebyshevpolynomene minimaliserer feilen over intervallet [-,]. Eksempel Chebyshevpolynomene har odde symmetri for odde og like symmetri for par. En symmetrisk funksjon vil derfor bevare symmetrien i sitt interpolerende polynom. f@x_d := Cos@xD ChebyshevInterpolatingPolynomial@x, 6D Chebyshevpolynomet Pn HxL = -0.003460 x6 + 0.046454 x4-6.3443 0-7 x3-0.499997 x -.5603 0-7 x +. c@x_d := - 0.003460 x6 + 0.046453 x4-0.499997 x +
0 Plot@c@xD, Cos@xD<, x, -, <, PlotStyle Thick, Dashed, Red<, Blue<<, AxesOrigin 0, 0<D.0 0. 0.6 0.4 0. -.5 -.0 -.0.5 Eksempel 3 (Runge fenomen) f@x_d := + x ChebyshevInterpolatingPolynomial@x, 0D Chebyshevpolynomet Pn HxL = -5.05 x0 + 73.5 x + 4.0377 0-6 x7-77.0 x6 7.67063 0-6 x5 + 37.4905 x4 + 3.967 0-6 x3 -.675 x - 4.54 0-7 x +. CP@x_D := - 5.05 x0 + 73.0 x - 77.0 x6 + 37.4905 x4 -.675 x + Plot@CP@xD, f@xd<, x, -, <, PlotStyle Thick, Dashed, Red<, Blue<<, PlotRange 0, <D.0 0. 0.6 0.4 0. -.0 - ChPoly@x, 0D Chop 0.0.0-5.05 x0 + 73.5 x - 77.0 x6 + 37.4905 x4 -.675 x +.
Plot@ChPoly@x, 0D, f@xd<, x, -, <, PlotStyle Thick, Dashed, Red<, Blue<<, PlotRange 0, <D.0 0. 0.6 0.4 0. -.0-0.0.0 Dette eksemplet viser at Chebyshev interpolasjon kan være bedre enn Lagrange interpolasjon da feilleddet E HxL = f HxL - P HxL 0 når. Det kan vises at når f(x) og f (x) er kontinuerlige på intervallet [-,], vil P HxL konvergere uniformt mot f HxL over intervallet [-,]. Vår funksjon er et eksempel hvor Lagrangepolynomet av grad ikke konvergerer. Lagrangepolynomet er basert på noder med lik avstand seg imellom. Lagrangepolynomer er implementert i Mathematica ved kommandoen InterpolatingPolynomial. Vi deler intervallet [-,] i 0 like deler, og beregner funksjonsverdiene der. pts = Table@- + 0. k, f@- + 0. kd<, k, 0, 0<D -. -0. -0.6-0.4-0. 0. 0. 0.4 0.6 0.. 0.07693 07 0.797 0.34466 0.675676. 0.675676 0.34466 0.797 07 0.07693 LP@x_, 0D = InterpolatingPolynomial@pts, xd Simplify Chop 4.5797 x0 + 7.934 x9-9.6433 x - 6.4 x7 + 6.0595 x6 + 3.39 x5 -.497 x4-4.537 x3 + 0.055 x + 0.90 x - 0.00464
Plot@LP@x, 0D, f@xd<, x, -, <, PlotStyle Thick, Dashed, Red<, Blue<<, PlotRange 0, <D.0 0. 0.6 0.4 0. -.0-0.0.0 Vi observerer ville oscillasjoner nær endepunktene av intervallet. Oscillasjonene øker med større verdi for. Problemet opptrer fordi nodene er ekvidistante. Denne mangel på konvergens kalles Runge s fenomen. Eksempel 4 år f(x) ikke er kontinuerlig på intervallet [-,], kan Chebyshevpolynomene gi dårligere tilpasning enn Lagrangepolynomene. Sin@xD f@x_d := - x ChPoly@x, 9D Chop 430.33 x9-646.5 x7 + 96.9 x5-40.397 x3 +.447 x Plot@ChPoly@x, D, f@xd<, x, -, <, PlotStyle Thick, Dashed, Red<, Blue<<D 4 -.0 - - -4.0
3 pts = Table@-.0 + k, f@-.0 + kd<, k, 0, <D -.0.09-0.77 -.70999 - -0.603-0.7-0.7705-0.0-0.000067 0.3 0.407 0.4 0.60005 0.73.476 0.9 0.97 LP@x_, D = InterpolatingPolynomial@pts, xd Simplify 70.356 x -.4047 x7-63.6 x6 + 7.66 x5 + 4.6065 x4 -.6465 x3-0.776 x +.663 x + 0.006573 Plot@LP@x, D, f@xd<, x, -, <, PlotStyle Thick, Dashed, Red<, Blue<<D 4 -.0 -.0 - -4 Oppgave Bestem Chebyshevpolynomet av grad som approksimerer besselfunksjonen av grad på intervallet [-,]. Lag et plott som viser polynomet og funksjonen sammen over intervallet [-,] slik som demonstrert i eksemplene. Gjenta plottet over intervallet [-4,4]. Hvor er konvergensområdet for Chebyshevpolynomer? Plott også Chebyshevpolynomet av grad 5 sammen med f(x) over de to intervallene. Har graden av polynom noe å si på konvergensintervallet? Oppgave Bestem Chebyshevpolynomet av grad som approksimerer f HxL = sin 4 x + x på intervallet [-,]. Plott olynomet med stiplet, rød linje sammen med f(x) i samme graf. Beregn deretter Lagrangeplolynomet over de ekvidistante nodene pts =Table[{-.+ 0.4 k,f[-.+0.4 k]},{k,,9}]. (Bruk InterpolatingPolynomial[pts,x]). Plott polynomet med stiplet, rød linje sammen med f(x) i samme graf. Observer Runge fenomenet. Eksperimenter med andre funksjoner, f.eks. f HxL = sin x + x Oppgave 3 Bestem Chebyshevpolynomet av grad 5 som approksimerer f HxL = cos0 x på intervallet [-,]. Plott polynomet med stiplet, rød linje sammen med f(x) i samme graf. k k Beregn deretter Lagrangeplolynomet over de ekvidistante nodene pts =Table[{-+,f[-+ ]},{k,,9}]. Plott polynomet med stiplet, rød linje sammen med f(x) i samme graf. Hvis tid, eksperimenter med polynomer av grad 0.
4 Bestem Chebyshevpolynomet av grad 5 som approksimerer f HxL = cos0 x på intervallet [-,]. Plott polynomet med stiplet, rød linje sammen med f(x) i samme graf. k k Beregn deretter Lagrangeplolynomet over de ekvidistante nodene pts =Table[{-+,f[-+ ]},{k,,9}]. Plott polynomet med stiplet, rød linje sammen med f(x) i samme graf. Hvis tid, eksperimenter med polynomer av grad 0.