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 polynomer T HxL minimere maksimumsverdien av Q(x). odene velges da som nullpunktene til T HxL. 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, 8k, 0, 7<D Simplify Expand Column x x - 4 x3-3 x 8 x4-8 x + 6 x5-0 x3 + 5 x 3 x6-48 x4 + 8 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@8k = 5<, Plot@ChebyshevT@Range@kD, xd, 8x, -, <DD - - - - Chebyshev interpolerende polynom Chebyshev approksimasjonen av grad er basert på de + nullpunkter av T+ HxL. Chebyshevpolynomene tilfredsstiller følgende ortogonalitetsrelasjoner: Ú Ti Hxk L T j Hxk L = 0 når i ¹ j Ú Ti Hxk L Ti Hxk L = + når i ¹ 0 Ú T0 Hxk L T0 Hxk L = + Sjekker for I = j = : â CosBΠ k+ + + F Simplify Sjekker for i = 3, j = 5 : â CosB3 Π 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 Ú f Hxk L T0 Hxk L = Ú Új=0 c j T j Hxk L T0 Hxk L = Új=0 Ú c j T j Hxk L T0 Hxk L = Ú c0 T0 Hxk L T0 Hxk L = Þ c0 = c0 Ú T0 Hxk L T0 Hxk L = c0 Ú = c0 H + L + Ú f Hxk L T0 Hxk L = + Ú f Hxk L
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 Ú f Hxk L T0 Hxk L = Ú Új=0 c j T j Hxk L T0 Hxk L = Új=0 Ú c j T j Hxk L T0 Hxk L = Ú c0 T0 Hxk L T0 Hxk L = Þ c0 = c0 Ú T0 Hxk L T0 Hxk L = c0 Ú = c0 H + L + Ú f Hxk L T0 Hxk L = + Ú f Hxk L Ú f Hxk L Ti Hxk L = Ú Új=0 c j T j Hxk L Ti Hxk L = Új=0 Ú c j T j Hxk L Ti Hxk L = Ú ci Ti Hxk L Ti Hxk L = ci = ci Ú Ti Hxk L Ti Hxk L = ci J + Ú f Hxk L Ti Hxk L = Algoritme + + Ú f Hxk L coshi arccoshxk LL = + Ú 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.
5 ChPoly@x_, n_d := ModuleB8c, z<, k+ z@k_d := B CosBΠ n+ c@j_d := n+ â f@z@kdd ChebyshevT@j, z@kdd; n â c@kd ChebyshevT@k, xd Simplify n F FF; â f@z@kdd ChebyshevT@0, z@kdd; n c@0d := Hn + L Eksempel Som eksempel ønsker vi å bestemme polynomet P3 HxL som approksimerer funksjonen f HxL = ãx på intervallet [-,] odene er gitt ved xk = cosj f@x_d := ãx ΠH k+l 8 når n = 3.. ChebyshevInterpolatingPolynomial@x, 3D Chebyshevpolynomet Pn HxL = 0.7576 x3 + 490 x + 0.998933 x + 0.99465 ChPoly@x, 3D 0.7576 x3 + 490 x + 0.998933 x + 0.99465 P3 @x_d = â c@kd ChebyshevT@k, xd Simplify 3 3 0.7576 z + 490 z + 0.998933 z + 0.99465 Plot@8P3 @xd, Exp@xD<, 8x, -, <, PlotStyle 8 8Thick, Dashed, Red<, 8Blue<<D.5.0.5 - -
6 Oppgave Bestem Chebyshevpolynomet av grad som approksimerer besselfunksjonen av grad på intervallet [-,]. Lag et plott som viser polynomet og funksjonen sammen over dette intervallet slik som demonstrert i eksemplene. f@x_d := BesselJ@, xd ChPoly@x, D Chop 0.7368 x Plot@8ChPoly@x, D, f@xd<, 8x, -, <, PlotStyle 8 8Thick, Dashed, Red<, 8Blue<<D 0. 0.0 0.08 0.06 0.04 0.0 - - Plot@8ChPoly@x, D, f@xd<, 8x, - 4, 4<, PlotStyle 8 8Thick, Dashed, Red<, 8Blue<<D.5-4 - Konvergensområdet er tydeligvis [-, ] 4
Plot@8ChPoly@x, 5D, f@xd<, 8x, - 4, 4<, PlotStyle 8 8Thick, Dashed, Red<, 8Blue<<D 0. -4-4 -0. - Høyere grad av chebyshevpolynom endrer ikke konvergensområdet [-, ] Oppgave Bestem Chebyshevpolynomet av grad 8 som approksimerer f HxL = sin 4 x +8 x på intervallet [-,]. Plott polynomet med stiplet, rød linje sammen med f(x) i samme graf. Beregn deretter Lagrangeplolynomet over de ekvidistante nodene pts =Table[{-.+ k,f[-.+ 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 +8 x Sin@4 xd f@x_d := + 8 x ChPoly@x, 8D Chop -5.477 x7 +.648 x5-9.768 x3 +.4580 x Plot@8ChPoly@x, 8D, f@xd<, 8x, -, <, PlotStyle 8 8Thick, Dashed, Red<, 8Blue<<D 0. - - -0. - 7
8 pts = Table@8-. + k, f@-. + kd<, 8k,, 9<D -0.97-0.73-9 - -0.0 0.3 7 0.7 0.95 0.0789369-0.047586-0.36766-6098 -0.0399574 5903 0.34438 0.0590-0.0744353 LP@x_, 8D = InterpolatingPolynomial@pts, xd Simplify -4.696 x8-5.909 x7 + 7.4937 x6 + 8.9884 x5-3.833 x4-6.8076 x3 + 439 x + 3.4 x - 0.00787455 Plot@8LP@x, 8D, f@xd<, 8x, -, <, PlotStyle 8 8Thick, Dashed, Red<, 8Blue<<D 0. - - -0. - - 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. f@x_d := Cos@xD0
Plot@f@xD, 8x, -, <D 0.8 0. - - Plot@8ChPoly@x, 5D, f@xd<, 8x, -, <, PlotStyle 8 8Thick, Dashed, Red<, 8Blue<<, PlotRange 8-0.3, <D 0.8 0. - - -0. k X@k_D := - + pts = Table@8X@iD, f@x@idd<, 8i, 0, 4<D -. 0.0006-0.70944 0.. 0.70944. 0.0006 LPoly@x_, 5D = InterpolatingPolynomial@pts, xd Expand Chop.55779 x4-3.55567 x +. 9
0 Plot@8LPoly@x, 5D, f@xd<, 8x, -, <, PlotStyle 8 8Thick, Dashed, Red<, 8Blue<<, PlotRange 8-0.3, <D 0.8 0. - - -0. Øker vi graden til 0, vil begge polynomer gi god tilpasning til funksjonen på intervallet <-, >, men vi ser tendenser til Runges fenomen i endepunktene ved lagrangepolynomet. Plot@8ChPoly@x, 0D, f@xd<, 8x, -, <, PlotStyle 8 8Thick, Dashed, Red<, 8Blue<<, PlotRange 80, <D 0.8 0. - - 0.0 k X@k_D := - + 9 pts = Table@8X@iD, f@x@idd<, 8i, 0, 9<D -. 0.0006-0.777778 0.033705-55556 0.95967-0.333333 6770-0. 0.94008 0. 0.94008 0.333333 6770 55556 0.95967 0.777778 0.033705. 0.0006
Plot@8LPoly@x, 0D, f@xd<, 8x, -, <, PlotStyle 8 8Thick, Dashed, Red<, 8Blue<<, PlotRange 8-0., <D 0.8 0. - -