4 f, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numeryczne [2009], Kosma Z - Metody i algorytmy numeryczne [2009]


4.6. Interpolacja trygonometryczna

W wielu zagadnieniach zachodzi potrzeba interpolacji danej funkcji okresowej

o okresie T. Po dokonaniu zamiany zmiennej niezależnej 0x01 graphic
otrzymujemy funkcję okresową

0x01 graphic
(4.43)

o okresie 2 π, którą wystarczy rozpatrywać bez zmniejszania ogólności rozważań.

Zadanie interpolacji trygonometrycznej polega na znalezieniu dla danej funkcji y wielomianu trygonometrycznego

0x01 graphic
(4.44)

zawierającego nieznanych parametrów, który w różnych punktach wewnątrz przedziału [0, 2 π] przyjmuje te same wartości co interpolowana funkcja.

Najbardziej istotny w praktyce jest przypadek węzłów równoodległych, dobranych w następujący sposób

0x01 graphic
(4.45)

czyli:

0x01 graphic

Biorąc pod uwagę własności sum zawierających iloczyny funkcji oraz dla kątów (4.45):

0x01 graphic

0x01 graphic

0x01 graphic

możemy łatwo stwierdzić, że macierz

0x01 graphic
(4.46)

gdzie

0x01 graphic
(4.47)

jest macierzą ortogonalną. Zatem układ równań liniowych dla nieznanych parametrów wielomianu trygonometrycznego (4.44)

(4.48)

w którym:

0x01 graphic

0x01 graphic

można rozwiązać w taki sam sposób jak układ równań dla współczynników optymalnego wielomianu interpolacyjnego

0x01 graphic
(4.49)

sprowadzający się do pomnożenia transponowanej macierzy (4.47) przez wektor Y, zawierający wartości funkcji w węzłach interpolacji (4.45).

Obliczanie współczynników wielomianu trygonometrycznego (4.44) według wzoru (4.49) dla podziału równoodległego (4.45) odbywa się w programie 4.4, którego tabulogram jest następujący:

{Program 4.4}

unit Obliczenia;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls,

Forms, Dialogs, StdCtrls, Buttons, OleCtnrs;

type

Tabl1 = array[0..100] of Real;

Tabl2 = array[1..1000] of Real;

Tabl3 = array[0..50,0..50] of Real;

. . . . . . . . . . . . . . . . . . .

var

Form3: TForm3;

i,j,K,n,nn,n1,m,m1,X0,Y0,ZX,ZY: Integer;

a,al,b,bl,h,sum,th,x,y: Real;

af,bf,ck,sk,xw,yw: Tabl1;

xx,yy,Xekr,Yekr: Tabl2;

plik,plik1: Text;

mac,mac1: Tabl3;

implementation

uses Ustawienia, Informacje, Grafika, Podglad;

{$R *.DFM}

function f(x: Real): Real;

begin

if Form3.RadioButton1.Checked then

f:=100*x*x*Exp(-10*x);

if Form3.RadioButton2.Checked then

f:=1/(1+25*x*x);

if Form3.RadioButton3.Checked then

f:=16*x*x*(x-1)*(x-1);

end;

procedure fsico(k: Integer; x: Real; var ck,sk: Tabl1);

var

i: Integer;

co,si: Real;

label kon;

begin

co:=Cos(x); si:=Sin(x);

ck[0]:=1; sk[0]:=0;

if k=0 then goto kon;

for i:=1 to k do begin

ck[i]:=co*ck[i-1]-si*sk[i-1];

sk[i]:=si*ck[i-1]+co*sk[i-1];

end;

kon:

end;

. . . . . . . . . . . . . . . . . . . . . .

procedure TForm3.BitBtn1Click(Sender: TObject);

begin

Form2.Show;

AssignFile(plik,Edit6.Text);

AssignFile(plik1,Edit5.Text);

Rewrite(plik); Rewrite(plik1);

a:=StrtoFloat(Edit1.Text); b:=StrtoFloat(Edit2.Text);

n:=StrtoInt(Edit3.Text); m:=StrtoInt(Edit4.Text);

Writeln(plik,'PROGRAM 4.4.');

Writeln(plik,'Interpolacja trygonometryczna funkcji jednej zmiennej.');

Writeln(plik,'Początek przedziału: a = ',a:13);

Writeln(plik,'Koniec przedziału: b = ',b:13);

Writeln(plik,'Stopień wielomianu: n = ',n:3);

Writeln(plik,'Liczba punktów wykresu: m = ',m:3);

Writeln(plik); nn:=2*n; n1:=2*n+1;

m1:=2*m+1; h:=(b-a)/n1; al:=2*Pi/n1;

Writeln(plik1,n1:3); Writeln(plik1,nn:3);

Writeln(plik1,m1:3);

for i:=0 to n1 do begin

x:=a+i*h; y:=f(x);

xw[i]:=x; yw[i]:=y;

xx[i+1]:=x; yy[i+1]:=y;

end;

for i:=0 to nn do

mac[i,0]:=1/Sqrt(2);

for i:=0 to nn do begin

th:=i*al;

fsico(n,th,ck,sk);

for j:=1 to n do begin

mac[i,2*(j-1)+1]:=sk[j];

mac[i,2*(j-1)+2]:=ck[j];

end;

end;

for i:=0 to nn do

for j:=0 to nn do

mac1[i,j]:=2*mac[j,i]/n1;

sum:=0;

for j:=0 to nn do

sum:=sum+mac1[0,j]*yw[j];

af[0]:=sum; bf[0]:=0;

for i:=1 to nn do begin

sum:=0;

for j:=0 to nn do

sum:=sum+mac1[i,j]*yw[j];

if Odd(i) then bf[(i+1) div 2]:=sum

else af[i div 2]:=sum;

end;

xx[nn+3]:=0; yy[nn+3]:=0; K:=nn+3;

Writeln(plik,'Wyniki interpolacji funkcji:');

Writeln(plik,' i x[i] y[i] błąd');

h:=(b-a)/m1; al:=2*Pi/m1;

for i:=0 to m1 do begin

x:=a+i*h; th:=i*al;

fsico(n,th,ck,sk);

y:=af[0]/Sqrt(2);

for j:=1 to n do

y:=y+af[j]*ck[j]+bf[j]*sk[j];

bl:=f(x)-y;

Writeln(plik,i:3,' ',x:13,' ',y:16,' ',bl:13);

K:=K+1; xx[K]:=x; yy[K]:=y;

end;

for i:=1 to m1+n1+3 do

Writeln(plik1,xx[i]:13,' ',yy[i]:13);

CloseFile(plik); CloseFile(plik1);

Form2.Wyniki.Lines.LoadFromFile(Edit6.Text);

end;

. . . . . . . . . . . . . . . . . . . . . . .

procedure TForm3.BitBtn3Click(Sender: TObject);

begin

Close;

end;

end.

W programie 4.4 występuje procedura o nazwie fsico przeznaczona do obliczania funkcji trygonometrycznych i ze wzorów:

dla znanych wartości oraz

Na rysunkach 4.10 ÷ 4.12 przedstawione zostały wielomiany trygonometryczne uzyskane dla n = 5 za pomocą programu 4.4 dla trzech funkcji, odpowiednio, (4.20) w przedziale , (4.32) w przedziale [−1, 1] oraz

(4.50)

w przedziale Na wykresie wielomianu trygonometrycznego funkcji (4.20) (rys. 4.10) wystąpiły duże oscylacje przy końcu przedziału, gdyż zarówno funkcja ta jak i jej pochodne nie są funkcjami okresowymi.

0x01 graphic

Rys. 4.10

0x01 graphic

Rys. 4.11

0x01 graphic

Rys. 4.12

192 4. Interpolacja

4.6. Interpolacja trygonometryczna 193



Wyszukiwarka

Podobne podstrony:
7 h, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
Spis tresci, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy
4 a, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
1 c, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
4 m, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
Okladka, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy nume
1 h, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
Przedmowa, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy nu
Contents, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy num
4 i, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
6 c, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
5 f, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
2 c, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
2 f, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
1 d, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
7 c 2, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numery
5 h, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
7 b, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
1 e, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz

więcej podobnych podstron