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


gdzie:

0x01 graphic

Współczynnik obliczamy oddzielnie stosując kwadraturę (5.30).

5.6. Aproksymacja funkcjami sklejanymi

Funkcje sklejane dzięki swoim znakomitym własnościom są często wykorzystywane do aproksymacji rozmaitych funkcji i wygładzania danych eksperymentalnych. W niniejszym rozdziale ograniczymy się do przedstawienia dwu zagadnień aproksymacji funkcji określonych na dyskretnym zbiorze argumentów za pomocą funkcji sklejanych trzeciego stopnia.

Pierwsze z tych zagadnień dotyczy aproksymacji średniokwadratowej. Zapisując funkcję sklejaną trzeciego stopnia w postaci kombinacji liniowej znormalizowanych B-funkcji (4.120) z warunku (5.64) na minimum odchylenia kwadratowego

0x01 graphic
(5.99)

przy założeniu, że n > + 3, otrzymujemy układ normalny (5.67) dla współczyn- ników 0x01 graphic

0x01 graphic
(5.100)

gdzie:

0x01 graphic

0x01 graphic

Z definicji B-funkcji sklejanych (4.117) - (4.118) oraz z rysunku 4.18 wynika, że

0x01 graphic
(5.101)

co oznacza tym samym, że macierz współczynników układu równań (5.100) jest symetryczną macierzą siedmiodiagonalną. Układ równań (5.100) można zatem przed-stawić w postaci

0x01 graphic
(5.102)

gdzie:

0x01 graphic

Do rozwiązania tego układu równań można więc zastosować algorytm opisany wzorami (2.99) - (2.100), co w istotny sposób upraszcza zadanie wyznaczania aproksymacyjnej funkcji sklejanej trzeciego stopnia.

*

Jako drugie zagadnienie rozważymy zadanie wygładzania funkcji 0x01 graphic
, która na zbiorze punktów: przyjmuje wartości:

Wygładzającą funkcję sklejaną trzeciego stopnia, która przechodzi blisko zadanych punktów i jest bardziej gładka niż interpolacyjna funkcja sklejana trzeciego stopnia wyznaczymy minimalizując funkcjonał

0x01 graphic
(5.103)

gdzie współczynniki są wagami, 0x01 graphic
- dodatkowym parametrem. Jeśli wszystkie wartości 0x01 graphic
są określone z jednakową dokładnością, wtedy przyjmujemy W punktach, w których wartości określone są z inną dokładnością, niż w pozostałych - przyjmujemy Dla 0x01 graphic
funkcja aproksymująca jest funkcją interpolacyjną.

Niech będzie funkcją sklejaną trzeciego stopnia z węzłami w punktach: , a dowolną, dwukrotnie różniczkowalną funkcją aproksymujacą. Z (5.103) mamy

0x01 graphic

0x01 graphic
(5.104)

Występującą w wyrażeniu (5.104) całkę

0x01 graphic

przekształcimy całkując przez części

0x01 graphic

Przy wyprowadzaniu tego związku wykorzystano fakt, że trzecia pochodna jest stała dla 0x01 graphic
Dla ciągłej funkcji otrzymujemy

i ostatecznie dla funkcji sklejanej spełniającej warunki:

(5.105)

nazywanej naturalną funkcją sklejaną, jest

(5.106)

Po podstawieniu (5.106) do (5.104) stwierdzamy, że funkcja sklejana trzeciego stopnia, spełniająca warunki wynikające ze znikania mnożników stojących przy wy-razach

0x01 graphic
(5.107)

minimalizuje funkcjonał (5.103), a także całkę (4.106), gdyż 0x01 graphic
wtedy i tylko wtedy, gdy

Z warunków (5.107) i wzorów określających trzecie pochodne

wynika układ równań:

0x01 graphic
(5.108)

Zakładając, że 0x01 graphic
jest interpolacyjną, naturalną funkcją sklejaną względem samej siebie, dołączymy do układu (5.108) równanie (4.78). Po podstawieniu do (4.78) związków dla uzyskamy układ równań określający drugie pochodne wygładzającej funkcji sklejanej trzeciego stopnia

(5.109)

gdzie:

*

Zadaniem programu 5.4 jest wyznaczanie przybliżeń średniokwadratowych funkcji 0x01 graphic
określonej na dyskretnym zbiorze punktów za pomocą wielomianowej funkcji sklejanej trzeciego stopnia. Program działa w podobny sposób jak program 5.2; wczytywana z formularza Dane wartość zmiennej m oznacza w tym przypadku liczbę równoodległych węzłów funkcji sklejanej.

Występująca w programie 5.4 procedura funkcyjna Bf(i,x,a,h) jest przeznaczona do obliczania wartości funkcji 0x01 graphic
według wzorów (4.117) - (4.118); parametr i oznacza numer węzła, x jest zadaną wartością odciętej, a - początkiem przedziału, h - stałą odległością między węzłami.

{Program 5.4}

unit Obliczenia;

interface

uses

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

Forms, Dialogs, StdCtrls, Buttons, OleCtnrs;

const

mmax = 51;

type

Wekt1 = array[0..mmax] of Real;

Wekt2 = array[0..500] of Real;

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

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

var

Form3: TForm3;

al,be,ga,de: array[-4..mmax] of Real;

a,b,bl,h,odch,ep,la,x,y,y1,y2: Real;

i,j,k,n,m,Q,X0,Y0,ZX,ZY: Integer;

qq: array[-1..mmax] of Real;

c: array[-3..4] of Real;

xx,yy,Xekr,Yekr: Wekt3;

der2,xw,yw: Wekt1;

plik,plik1: Text;

xp,yp: Wekt2;

implementation

uses Ustawienia, Informacje, Grafika, Podglad;

{$R *.DFM}

{function f(x: Real): Real;}

function Bf(i: Integer; x,a,h: Real): Real;

var

s,xx: Real;

begin

s:=0; xx:=a+i*h;

xx:=Abs((x-xx)/h);

if (xx>=0) and (xx<=1) then

s:=3*xx*xx*xx-6*xx*xx+4;

if (xx>1) and (xx<=2) then begin

s:=2-xx; s:=s*s*s;

end;

Bf:=s/6;

end;

{procedure FunSklej2(n:Integer; x:Real; var y,y1,y2: Real;

xw,yw,der2: Wekt1);}

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

procedure TForm3.BitBtn1Click(Sender: TObject);

begin

Form2.Show;

AssignFile(plik,Edit6.Text);

AssignFile(plik1,Edit5.Text);

Rewrite(plik); Rewrite(plik1);

Writeln(plik,'PROGRAM 5.4.');

Writeln(plik,'Aproksymacja średniokwadratowa.');

Writeln(plik,'Funkcja sklejana trzeciego stopnia.');

Writeln(plik);

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

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

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

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

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

Writeln(plik,'Liczba podprzedziałów: m = ',m:3);

Writeln(plik1,n:3); Writeln(plik); h:=(b-a)/n;

for i:=0 to n do begin

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

xp[i]:=x; yp[i]:=y;

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

end;

Q:=n+2; xx[Q]:=0; yy[Q]:=0;

for k:=-4 to m+1 do begin

al[k]:=0; be[k]:=0;

ga[k]:=0; de[k]:=0;

end;

h:=(b-a)/m;

for j:=-1 to m+1 do begin

for k:=-3 to 4 do c[k]:=0;

for i:=0 to n do begin

x:=xp[i];

for k:=-3 to 3 do

c[k]:=c[k]+Bf(j+k,x,a,h)*Bf(j,x,a,h);

c[4]:=c[4]+yp[i]*Bf(j,x,a,h);

end;

ep:=c[-1]+c[-2]*al[j-2]+c[-3]*(be[j-3]+al[j-2]*al[j-3]);

la:=c[0]+ep*al[j-1]+c[-2]*be[j-2]+c[-3]*ga[j-3]+

c[-3]*al[j-3]*be[j-2];

al[j]:=-(c[1]+ep*be[j-1]+c[-2]*ga[j-2]+

c[-3]*al[j-3]*ga[j-2])/la;

be[j]:=-(c[2]+ep*ga[j-1])/la;

ga[j]:=-c[3]/la;

de[j]:=(c[4]-ep*de[j-1]-c[-2]*de[j-2]-c[-3]*

(de[j-3]+al[j-3]*de[j-2]))/la;

end;

qq[m+1]:=de[m+1];

qq[m]:=al[m]*qq[m+1]+de[m];

qq[m-1]:=al[m-1]*qq[m]+be[m-1]*qq[m+1]+de[m-1];

for k:=m-2 downto -1 do

qq[k]:=al[k]*qq[k+1]+be[k]*qq[k+2]+ga[k]*qq[k+3]+de[k];

for k:=0 to m do begin

xw[k]:=a+k*h;

yw[k]:=(qq[k-1]+4*qq[k]+qq[k+1])/6;

der2[k]:=(qq[k-1]-2*qq[k]+qq[k+1])/h/h;

end;

odch:=0; Writeln(plik,'Wyniki aproksymacji funkcji:');

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

for i:=0 to n do begin

x:=xp[i];

FunSklej2(m,x,y,y1,y2,xw,yw,der2);

bl:=f(x)-y; odch:=odch+Sqr(y-yp[i]);

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

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

end;

Writeln(plik);

Writeln(plik,'Odchylenie kwadratowe: ',odch:13);

for k:=1 to 2*n+3 do

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

CloseFile(plik); CloseFile(plik1);

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

end;

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

0x01 graphic

Rys. 5.28

0x01 graphic

Rys. 5.29

0x01 graphic

Rys. 5.30

0x01 graphic

Rys. 5.31

0x01 graphic

Rys. 5.32

0x01 graphic

Rys. 5.33

Przedstawione na rysunkach 5.28 ÷ 5.33 wyniki obliczeń numerycznych dotyczą aproksymacji tych samych funkcji, które były już wykorzystane przy testowaniu programu 5.2 (tabl. 5.1); wyniki te zostały uzyskane dla danych podstawowych przyjętych zgodnie z tablicą 5.2.

Tablica 5.2

Rys.

Funkcja

a

b

n

m

5.28

5.29

0x01 graphic

−1

−1

1

1

100

100

6

20

5.30

5.31

0x01 graphic

−1

−1

1

1

100

100

6

20

5.32

5.33

0

0

1

1

100

100

6

20

Fragment wydruku komputerowego zawierającego wyniki obliczeń numerycznych aproksymacji średniokwadratowej funkcji za pomocą funkcji sklejanej trzeciego stopnia (rys. 5.33) jest następujący:

PROGRAM 5.4.

Aproksymacja średniokwadratowa.

Funkcja sklejana trzeciego stopnia.

Początek przedziału: a = 0.0000E+0000

Koniec przedziału: b = 1.0000E+0000

Liczba punktów: n = 100

Liczba podprzedziałów: m = 20

Wyniki aproksymacji funkcji:

i x[i] y[i] błąd

0 0.0000E+0000 -1.332752168E-0004 1.3328E-0004

1 1.0000E-0002 9.391081959E-0003 -3.4271E-0004

2 2.0000E-0002 3.264868414E-0002 1.0054E-0004

3 3.0000E-0002 6.635630616E-0002 3.1733E-0004

4 4.0000E-0002 1.072307228E-0001 2.0484E-0005

5 5.0000E-0002 1.519887092E-0001 -3.5604E-0004

6 6.0000E-0002 1.977383800E-0001 -1.6619E-0004

7 7.0000E-0002 2.431532106E-0001 1.7359E-0004

8 8.0000E-0002 2.872980166E-0001 2.7252E-0004

9 9.0000E-0002 3.292376133E-0001 8.3811E-0005

10 1.0000E-0001 3.680368162E-0001 -1.5738E-0004

11 1.1000E-0001 4.029192778E-0001 -1.4527E-0004

12 1.2000E-0001 4.337439985E-0001 -2.4333E-0005

13 1.3000E-0001 4.605288159E-0001 4.9914E-0005

14 1.4000E-0001 4.832915673E-0001 3.8482E-0005

15 1.5000E-0001 5.020500902E-0001 -7.2299E-0006

16 1.6000E-0001 5.168617616E-0001 -6.6755E-0006

17 1.7000E-0001 5.279421160E-0001 1.3268E-0005

18 1.8000E-0001 5.355462276E-0001 2.2170E-0005

19 1.9000E-0001 5.399291703E-0001 1.3545E-0005

20 2.0000E-0001 5.413460182E-0001 -4.8852E-0006

21 2.1000E-0001 5.400529951E-0001 -2.0147E-0005

22 2.2000E-0001 5.363109241E-0001 -2.3638E-0005

23 2.3000E-0001 5.303817777E-0001 -1.2494E-0005

24 2.4000E-0001 5.225275289E-0001 7.8820E-0006

25 2.5000E-0001 5.130101503E-0001 2.1091E-0005

26 2.6000E-0001 5.020790383E-0001 1.0350E-0005

27 2.7000E-0001 4.899332836E-0001 -5.0957E-0006

28 2.8000E-0001 4.767594007E-0001 -8.5097E-0006

29 2.9000E-0001 4.627439038E-0001 1.3768E-0006

30 3.0000E-0001 4.480733075E-0001 1.0307E-0005

31 3.1000E-0001 4.329220021E-0001 8.3287E-0007

32 3.2000E-0001 4.174158831E-0001 -1.0914E-0005

33 3.3000E-0001 4.016687216E-0001 -1.1028E-0005

34 3.4000E-0001 3.857942892E-0001 7.1159E-0007

35 3.5000E-0001 3.699063571E-0001 1.1589E-0005

36 3.6000E-0001 3.541090874E-0001 6.3555E-0006

37 3.7000E-0001 3.384682046E-0001 -3.1272E-0006

38 3.8000E-0001 3.230398238E-0001 -5.8782E-0006

39 3.9000E-0001 3.078800600E-0001 -5.8693E-0007

40 4.0000E-0001 2.930450284E-0001 5.1938E-0006

41 4.1000E-0001 2.785848313E-0001 1.8422E-0006

42 4.2000E-0001 2.645255197E-0001 -3.5446E-0006

43 4.3000E-0001 2.508871319E-0001 -4.4758E-0006

44 4.4000E-0001 2.376897062E-0001 -4.0567E-0007

45 4.5000E-0001 2.249532808E-0001 3.8991E-0006

46 4.6000E-0001 2.126943729E-0001 2.4714E-0006

47 4.7000E-0001 2.009154158E-0001 -7.4462E-0007

48 4.8000E-0001 1.896153215E-0001 -1.9495E-0006

49 4.9000E-0001 1.787930023E-0001 -5.4277E-0007

50 5.0000E-0001 1.684473702E-0001 1.3047E-0006

51 5.1000E-0001 1.585756794E-0001 6.9872E-0007

52 5.2000E-0001 1.491685520E-0001 -6.5011E-0007

53 5.3000E-0001 1.402149521E-0001 -1.0792E-0006

54 5.4000E-0001 1.317038437E-0001 -3.4339E-0007

55 5.5000E-0001 1.236241908E-0001 6.4516E-0007

56 5.6000E-0001 1.159643475E-0001 6.5860E-0007

57 5.7000E-0001 1.087102269E-0001 1.9073E-0007

58 5.8000E-0001 1.018471322E-0001 -1.9059E-0007

59 5.9000E-0001 9.536036634E-0002 -2.9220E-0007

60 6.0000E-0001 8.923523240E-0002 -1.5404E-0007

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

Odchylenie kwadratowe: 5.6616E-0007

320 5. Różniczkowanie, całkowanie i aproksymacja

5.6. Aproksymacja funkcjami sklejanymi 323



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
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