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