APROKSYMACJA
Transkrypt
APROKSYMACJA
APROKSYMACJA 40 36 33 30 Zmienna y 27 24 21 18 15 12 9 6 3 0 0,00 0,01 0,02 0,03 0,04 0,05 0,06 0,07 0,08 Zmienna x Rys. 1. Funkcja aproksymująca zbiór punktów pomiarowych (1) (2) (3) (4) (5) (6) (7) ... (8) ... (9) odchylenie kwadratowe: (10) wariancja (m – stopień wielomianu; n – liczba punktów pomiarowych): (11) odchylenie standardowe: (12) współczynnik korelacji: (13) gdzie: (14) Aproksymacja liniowa (15) (16) (17) (18) (19) Interpretacja wartości współczynnika korelacji: r <-1,1>, współczynnik korelacji jest miarą związku liniowego, r=0 oznacza brak zależności liniowej, na tej podstawie nie można wnioskować o niezależności zmiennych, r>0 - korelacja dodatnia - wzrostowi wartości zmiennej x towarzyszy wzrost wartości zmiennej y, r<0 - korelacja ujemna - wzrostowi wartości zmiennej x towarzyszy spadek wartości drugiej zmiennej, im |r| jest bliższy 1 tym zależność liniowa jest silniejsza, zwykle przyjmuje się: < 0,2 - brak związku liniowego, 0,2 - 0,4 - słaba zależność, 0,4 -0,7 - umiarkowana zależność, 0,7 - 0,9 - dość silna zależność, 0,9 - bardzo silna zależność. Sposób rozwiązania: Dane: Punkty pomiarowe: (x1, y1), (x2, y2), ..., (xn, yn) oraz m - stopień wielomianu Rozwiązanie: 1. znaleźć wartości sum, 2. ułożyć macierz układu równań, 3. rozwiązać układ równań liniowych; z rozwiązań otrzymuje się wartości: a0, a1,...,am, 4. wyznaczyć parametry charakteryzujące jakość aproksymacji, 5. sporządzić wykres. Przykład obliczeniowy aproksymacji liniowej: Tab. 1. Tabela obliczeniowa Lp. 1 2 3 4 5 n=5 x 1 2 3 4 5 15 x2 1 4 9 16 25 55 y 1 5 7 12 17 42 y2 1 25 49 144 289 508 x·y 1 10 21 48 85 165 18 5; 17 16 14 4; 12 Zmienna y 12 10 8 3; 7 6 2; 5 4 2 0 0,5 1; 1 1,0 1,5 2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5 Zmienna x Rys. 2. Punkty pomiarowe Na podstawie danych pomiarowych (xi, yi) obliczamy współczynniki funkcji aproksymującej w ogólnej postaci: (20) Na podstawie tabeli 1 oraz (15) sporządzono macierz: (21) Na tej podstawie obliczono: Wyznacznik główny macierzy: (22) Wyznacznik szczegółowy dla współczynnika a0: (23) Wyznacznik szczegółowy dla współczynnika a1: (24) Stąd wartości współczynników a0 oraz a1 wynoszą: (25) oraz: (26) Po podstawieniu współczynników a0 (25) oraz a1 (26) do równania (20): (27) 18 5; 17 16 14 4; 12 Zmienna y 12 y =-3,3+3,9x 10 8 3; 7 6 2; 5 4 2 0 0,5 1; 1 1,0 1,5 2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5 Zmienna x Rys. 3. Punkty pomiarowe oraz aproksymowana prosta Na podstawie równania (16) otrzymano: (28) oraz na podstawie równania (17) otrzymano: (29) otrzymuje się na podstawie zależności (18) odchylenie standardowe: (30) oraz na podstawie zależności (19) współczynnik korelacji: (31) r>0 - korelacja dodatnia tzn. wraz ze wzrostem wartości zmiennej niezależnej x wzrasta wartość zmiennej wynikowej y, r=0,99 - zależność liniowa między zmienną x i y jest bardzo silna. Zapis źródłowy programu obliczającego wyznacznik macierzy 2x2: {Wyznacznik macierzy} Program Wyznacznik_Macierzy_2x2; uses crt; const n=2; var i, j : integer; wyznacznik : real; klawisz : char; A : array[1..n,1..n] of real; begin repeat ClrScr; Writeln(' * Program oblicza wyznacznik macierzy 2X2 *':50); For i:=1 to n do for j:=1 to n do begin Write('Podaj element macierzy a[',i,',',j,']='); ReadLn(A[i,j]); end; wyznacznik:=A[1,1]*A[2,2]-A[2,1]*A[1,2]; WriteLn('Wyznacznik macierzy A:'); for i:=1 to n do begin for j:=1 to n do Write(A[i,j]:8:2,' '); Writeln; end; WriteLn('wynosi =',wyznacznik:8:2); WriteLn('Zakonczyc program (t/n) ?'); klawisz:=readkey; until (klawisz='t') or (klawisz='T'); end. Zapis źródłowy programu obliczającego wyznacznik macierzy 3x3: Program Wyznacznik_Macierzy_3x3; Uses Crt; var a: Array[1..3,1..3] of Integer; i,j,n,m: Integer; w1,w2: Real; begin ClrScr; for i:=1 to 3 do for j:=1 to 3 do begin Write('a[',i,',',j,']='); ReadLn(a[i,j]); end; for i:=1 to 3 do begin for j:=1 to 3 do write(a[i,j]:5); writeln; end; w1:=a[1,1]*a[2,2]*a[3,3]+a[2,1]*a[3,2]*a[1,3]+a[3,1]*a[1,2]*a[2,3]; w2:=w1-a[1,3]*a[2,2]*a[3,1]-a[2,3]*a[3,2]*a[1,1]-a[3,3]*a[1,2]*a[2,1]; WriteLn('Wyznacznik macierzy wynosi: ',w2:0:2); Repeat until keypressed; end. Zapis źródłowy aproksymacji liniowej: { Aproksymacja liniowa } Program AproLiniowa; Uses Crt; Const Maxn = 30; Type Punkty = Array[1..maxn] of real; Var x,y : punkty; n,i : integer; a,b,S,r : real; {***********************************************************************} Procedure AproksymacjaLiniowa ( n : integer; { liczba punktow } x,y : punkty; { wspolrzedne punktow } var a,b : real; { parametry prostej aproksymujacej } var S : real; { odchylenie standardowe } var r : real { wspolczynnik korelacji } ); var S1,S2,S3,S4,S5,xi,yi,D,P : real; i : integer; begin S1:=0; S2:=0; S3:=0; S4:=0; S5:=0; for i:=1 to n do begin xi:=x[i]; yi:=y[i]; S1:=S1+xi; S2:=S2+sqr(xi); S3:=S3+xi*yi; S4:=S4+yi; S5:=S5+sqr(yi) end; D:=n*S2-sqr(S1); b:=(n*S3-S1*S4)/D; a:=(S4-b*S1)/n; P:=n*S5-sqr(S4); D:=sqr(b)*D; S:=sqrt((P-D)/(n*(n-1))); r:=sqrt(D/P); end; {***********************************************************************} begin ClrScr; Write('Program dokonuje aproksymacji ciagu punktow'); Writeln(' prosta y=a+bx'); Write('Podaj ilosc punktow: '); ReadLn(n); Writeln('Podaj wspolrzedne punktow:'); for i:=1 to n do begin Write('x[',i,']='); ReadLn (x[i]); Write('y[',i,']='); ReadLn (y[i]); end; Writeln; AproksymacjaLiniowa(n,x,y,a,b,S,r); {wywolanie procedury} Writeln('Prosta aproksymujaca ma postac :'); Writeln(' y= ',a:6:3,' + (',b:6:3,') * x'); Writeln; Writeln('odchylenie standardowe = ',S:7:2); Writeln('wspolczynnik korelacji = ',r:7:2); Repeat until Keypressed; end. Przykład obliczeniowy aproksymacji wielomianowej: Tab. 2. Tabela obliczeniowa Lp. 1 2 3 4 5 n=5 x 1 2 3 4 5 15 y 1 5 7 12 17 42 x2 1 4 9 16 25 55 x3 1 8 27 64 125 225 x4 1 16 81 256 625 979 x·y 1 10 21 48 85 165 x2·y 1 20 63 192 425 701 y2 1 25 49 144 289 508 Na podstawie danych pomiarowych (xi, yi) obliczamy współczynniki funkcji aproksymującej w ogólnej postaci: (32) Na podstawie tabeli 2 oraz (15) sporządzono macierz: (33) Na tej podstawie obliczono: Wyznacznik główny macierzy: (34) Wyznacznik szczegółowy dla współczynnika a0: (35) Wyznacznik szczegółowy dla współczynnika a1: (36) Wyznacznik szczegółowy dla współczynnika a2: (37) Stąd wartości współczynników a0, a1 oraz a2 wynoszą: (38) (39) oraz: (40) Po podstawieniu współczynników a0 (38), a1 (39) oraz a2 (40) do równania (32): (41) Parametry charakteryzujące jakość aproksymacji: odchylenie kwadratowe: (42) wariancja (m – stopień wielomianu; n – liczba punktów pomiarowych): (43) odchylenie standardowe: (44) współczynnik korelacji: (45) stąd: (46) 18 16 5; 17 y=-0,8+1,7571*x+0,3571*x2 14 4; 12 Zmienna y 12 10 8 3; 7 6 2; 5 4 2 0 0,5 1; 1 1,0 1,5 2,0 2,5 3,0 3,5 4,0 4,5 Zmienna x Rys. 3. Punkty pomiarowe oraz aproksymowana funkcja wielomianowa 2 stopnia 5,0 5,5