Interpolacja funkcji sinus

Jako węzły wybieramy wartości, które znamy.

dane={{0,0},{π/6,1/2},{π/4,(Sqrt[2])/2},{π/3,(Sqrt[3])/2},{π/2,1},{2 π/3,(Sqrt[3])/2},{3π/4,(Sqrt[2])/2},{5π/6,1/2},{π,0},{7π/6,-1/2},{5π/4,-(Sqrt[2])/2},{4π/3,-(Sqrt[3])/2},{3π/2,-1},{5π/3,-(Sqrt[3])/2},{7π/4,-(Sqrt[2])/2},{11π/6,-1/2},{2π,0}}

ListPlot[dane]

n=Length[dane];

Tu można zmieniać nn. Uwaga, dla nn=n-1 obliczenia chwilę trwają! Można je istotnie przyśpieszyć rezygnując z obliczeń symbolicznych (wyliczjąć wartości węzłów interpolacji za pomocą funkcji N[]).

nn=16;

oraz metodę (alternatywy to “Hermite” i “Spline”).

Metoda="Hermite";

sin=Interpolation[dane,Method->Metoda,InterpolationOrder->nn]

Plot[Sin[x]-sin[x],{x,0,2π},PlotRange->All]

Porównamy różnicę między jedną interpolacją a drugą.

sinusik=Interpolation[N[dane],Method->Metoda,InterpolationOrder->nn]

Plot[sin[x]-sinusik[x],{x,0,2π},PlotRange->All]