40 APROKSYMACJA Zmienna y 36 33 30 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) 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: (x 1, y 1 ), (x 2, y 2 ),..., (x n, y n ) 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: a 0, a 1,...,a m, 4. wyznaczyć parametry charakteryzujące jakość aproksymacji, 5. sporządzić wykres. (19)
Przykład obliczeniowy aproksymacji liniowej: Tab. 1. Tabela obliczeniowa Lp. x y x 2 x y y 2 1 1 1 1 1 1 2 2 5 4 10 25 3 3 7 9 21 49 4 4 12 16 48 144 5 5 17 25 85 289 n=5 15 42 55 165 508 18 5; 17 16 14 12 4; 12 Zmienna y 10 8 3; 7 6 2; 5 4 2 1; 1 Rys. 2. Punkty pomiarowe 0 0,5 1,0 1,5 2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5 Zmienna x Na podstawie danych pomiarowych (x i, y i ) obliczamy współczynniki funkcji aproksymującej w ogólnej postaci: (20) Na podstawie tabeli 1 oraz (15) sporządzono macierz: Na tej podstawie obliczono: Wyznacznik główny macierzy: Wyznacznik szczegółowy dla współczynnika a 0 : (21) (22) (23)
Wyznacznik szczegółowy dla współczynnika a 1 : (24) Stąd wartości współczynników a 0 oraz a 1 wynoszą: (25) oraz: (26) Po podstawieniu współczynników a0 (25) oraz a1 (26) do równania (20): (27) 18 5; 17 16 Zmienna y 14 12 10 8 6 4 y =-3,3+3,9x 3; 7 2; 5 4; 12 2 1; 1 0 0,5 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: oraz na podstawie równania (17) otrzymano: otrzymuje się na podstawie zależności (18) odchylenie standardowe: (28) (29) (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; repeat ClrScr; Writeln(' * Program oblicza wyznacznik macierzy 2X2 *':50); For i:=1 to n do for j:=1 to n do Write('Podaj element macierzy a[',i,',',j,']='); ReadLn(A[i,j]); wyznacznik:=a[1,1]*a[2,2]-a[2,1]*a[1,2]; WriteLn('Wyznacznik macierzy A:'); for i:=1 to n do for j:=1 to n do Write(A[i,j]:8:2,' '); Writeln; 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; ClrScr; for i:=1 to 3 do for j:=1 to 3 do Write('a[',i,',',j,']='); ReadLn(a[i,j]); for i:=1 to 3 do for j:=1 to 3 do write(a[i,j]:5); writeln; 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; S1:=0; S2:=0; S3:=0; S4:=0; S5:=0; for i:=1 to n do xi:=x[i]; yi:=y[i]; S1:=S1+xi; S2:=S2+sqr(xi); S3:=S3+xi*yi; S4:=S4+yi; S5:=S5+sqr(yi) 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); {***********************************************************************} 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 Write('x[',i,']='); ReadLn (x[i]); Write('y[',i,']='); ReadLn (y[i]); Writeln; AproksymacjaLiniowa(n,x,y,a,b,S,r); 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. {wywolanie procedury}
Przykład obliczeniowy aproksymacji wielomianowej: Tab. 2. Tabela obliczeniowa Lp. x y x 2 x 3 x 4 x y x 2 y y 2 1 1 1 1 1 1 1 1 1 2 2 5 4 8 16 10 20 25 3 3 7 9 27 81 21 63 49 4 4 12 16 64 256 48 192 144 5 5 17 25 125 625 85 425 289 n=5 15 42 55 225 979 165 701 508 Na podstawie danych pomiarowych (x i, y i ) obliczamy współczynniki funkcji aproksymującej w ogólnej postaci: Na podstawie tabeli 2 oraz (15) sporządzono macierz: Na tej podstawie obliczono: Wyznacznik główny macierzy: Wyznacznik szczegółowy dla współczynnika a 0 : Wyznacznik szczegółowy dla współczynnika a 1 : Wyznacznik szczegółowy dla współczynnika a 2 : Stąd wartości współczynników a 0, a 1 oraz a 2 wynoszą: (32) (33) (34) (35) (36) (37) (38) oraz: (39) (40) Po podstawieniu współczynników a 0 (38), a 1 (39) oraz a 2 (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 5; 17 16 14 y=-0,8+1,7571*x+0,3571*x 2 12 4; 12 Zmienna y 10 8 3; 7 6 2; 5 4 2 1; 1 0 0,5 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 funkcja wielomianowa 2 stopnia