aproksymacja i interpolacja

29
Aproksymacja i interpolacja PWSZ, Elbląg 2002

Upload: marcin-drwal

Post on 23-Oct-2015

110 views

Category:

Documents


3 download

TRANSCRIPT

Aproksymacja i interpolacja

PWSZ, Elbląg 2002

Elbąg, PWSZ 2002r. 2

Aproksymacja

Aproksymacja jest to przybliŜanie, zastępowanie jednych wielkości drugimi. Aproksymacja moŜe dotyczyć dowolnych wielkości matematycznych – liczb, funkcji, krzywych, obszarów, wektorów, macierzy. Zastępowanie danej wielkości inną obarczone jest pewnym błędem. Oszacowanie wielkości błędu pozwala na ocenę, czy dane przybliŜenie jest zadawalające, czy teŜ nie.

Niech poszukiwana jest krzywa dla zadanej liczby punktów:

jest opisana równaniem:

Aproksymacja stosowana jest wówczas, gdy ilość zadanych punktów mjest mniejsza od ilości nieznanych współczynników n krzywej F(x).

Zwykle nie moŜna przeprowadzić krzywej przez wszystkie punkty. Poszukiwana jest wówczas najbliŜsza krzywa w sensie minimum kwadratu bł ędu .

)(xFy =),( ii yx

)(...)()()( 2211 xfcxfcxfcxF nn+++=

Elbąg, PWSZ 2002r. 3

Regresja liniowa

Najbardziej podstawową i najprostszą metodą aproksymacji średniokwadratowej jest aproksymacja funkcją liniową czyli regresja liniowa. Wówczas:

Pozostałe funkcje:

Dla kolejnych punktów otrzymujemy:

1)(,)( 21 == xfxxf

1)( =xf j

=

=+

=+=+

mmmmn

y

y

y

c

c

x

x

x

ycxc

ycxc

ycxc

ΜΜΜ

2

1

2

12

1

2

2221

1211

1

1

1

lub

Elbąg, PWSZ 2002r. 4

Regresja liniowa

co moŜna zapisać w postaci macierzowej Ac=y. Równanie to dla m>n nie ma dokładnego rozwiązania, stąd:

gdzie: r – wektor pionowych odległości pomiędzy poszukiwaną krzywą a zadanymi punktami. Szukane jest takie rozwiązanie, dla którego:

lub macierzowo osiąga minimum.

Stąd:

Acyr −=

∑=

m

iir

1

2 rrT

( ) ( )

AcAcAcyyy

AcAcyAcAcyyy

AcyAcyrr

TTTT

TTTTTT

TT

+−=+−−=

−−=

2

Elbąg, PWSZ 2002r. 5

Regresja liniowa

Iloczyn ten osiągnie minimum jeśli:

stąd:

PowyŜsze równanie nazywane jest równaniem aproksymacji .

( ) 00 =+−→= AcAyArrdc

d TTT

( ) yAcAA TT =

Elbąg, PWSZ 2002r. 6

Regresja liniowa

Przykład 1:Wyznaczenie prostej aproksymującej punkty o współrzędnych (1,1), (2,2), (4,2), (5,3):

x=[1 2 4 5]; y=[1 2 2 3];

x=x'; y=y';

A=[x ones(size(x))];

c=(A'*A)\(A'*y)

ya=c(1)*x+c(2)

plot(x,y,'o',x,ya,'-')

grid on

xlabel('x')

ylabel('y=F(x)')1 1.5 2 2.5 3 3.5 4 4.5 5

1

1.2

1.4

1.6

1.8

2

2.2

2.4

2.6

2.8

3

x

y=F

(x)

Elbąg, PWSZ 2002r. 7

Regresja liniowa

W programie MATLAB dzielenie lewostronne jest równoznaczne operacji:

y=A\y=(A’*A)\(A’*y)

JeŜeli macierz A ma wymiar m x n, gdzie m>n program MATLABrozwiązuje zagadnienie regresji liniowej (znajduje współczynniki linii prostej).

Przykład 2:Przedstawione poniŜej polecenia realizują aproksymację funkcją liniową. Wygenerowane dane umieszczono w wektorach kolumnowych x i y . Przy generowaniu danych uŜyto funkcję r and generująca liczby pseudolosowe o rozkładzie normalnym o zadanej wartości średniej i wariancji. Dane generowane są w pętli, w kaŜdym jej kroku zwiększa się średniągenerowanych liczb.

Elbąg, PWSZ 2002r. 8

Regresja liniowa

%% Przygotowanie danych do obliczen

clear

x=[0.1:0.1:10]';

[m,n]=size(x);

for i=1:m

y(i,1)=i*0.1*rand(1,1);

end

plot(x,y,'.');

%% poszukiwanie funkcji y=ax

%% najlepiej w sensie sumy kwadratów

%% przyblizajace te dane

a=x\y;

plot(x,y,x,a*x);

0 1 2 3 4 5 6 7 8 9 100

1

2

3

4

5

6

7

8

9

10

Elbąg, PWSZ 2002r. 9

Regresja liniowa

0 1 2 3 4 5 6 7 8 9 100

1

2

3

4

5

6

7

8

9

10

Elbąg, PWSZ 2002r. 10

Aproksymacja

Równanie aproksymacji:

jest prawdziwe dla dowolnej funkcji aproksymacji:

gdzie: - nieznane współczynniki, - funkcje bazowe, zaśmacierze A, c i y:

( ) yAcAA TT =

)(...)()()( 2211 xfcxfcxfcxF nn+++=

jc ( )xf j

( ) ( ) ( )( ) ( ) ( )

( ) ( ) ( )

=

=

=

mnmnmm

n

n

y

y

y

y

c

c

c

c

xfxfxf

xfxfxf

xfxfxf

AΜΜ

ΚΜ

ΚΚ

2

1

2

1

21

22221

11211

,,

Elbąg, PWSZ 2002r. 11

Aproksymacja

Przykład 3:Dla zadanego zbioru punktów poszukiwana jest funkcja aproksymująca:

x=[0.955 1.380 1.854 2.093 2.674 3.006 3.255]';

y=[5.722 4.812 4.727 4.850 5.011 5.253 5.253]';

A=[1./x x]; %przygotowanie macierzy A

c=(A'*A)\(A'*y)

%funkcja linspace generuje wektor%wierszowy o elementach równoodleglych

%w zadanym zakresie

xa=linspace(min(x),max(x),100);

xa=xa';

Aa=[1./xa xa]; ya=Aa*c;

xcx

cy 2

1 +=

Elbąg, PWSZ 2002r. 12

Aproksymacja

plot(x,y,'o',xa,ya,'-');

xlabel('x'); ylabel('y=F(x)');

legend('dane','aproksymacja')

0.5 1 1.5 2 2.5 3 3.5

5

5.5

6

x

y=F

(x)

daneaproksymacja

Elbąg, PWSZ 2002r. 13

Aproksymacja wielomianem

Aproksymacja funkcją liniową moŜe okazać się nie wystarczająca wówczas, gdy między danymi występuje bardziej złoŜona zaleŜność. Stosuje się wówczas zazwyczaj aproksymacj ę wielomianem :

którą w programie MATLAB moŜna zrealizować przy pomocy funkcjipolyfit :

a=polyfit(x,y,r)

dla danych wektorów x i y wyznaczającej współczynniki wielomianu stopnia r przybliŜającego najlepiej w sensie średniokwadratowym zaleŜność między serią danych x a y .

( ) 011

1 ... axaxaxaxW rr

rr ++++= −

Elbąg, PWSZ 2002r. 14

Aproksymacja wielomianemPrzykład 4:Przedstawione poniŜej polecenia generują dane losowe, a następnie przybliŜają zaleŜność pomiędzy nimi wielomianami stopni od 1 do 10:

clear

close all

x=[0.1:0.1:10]';

[m,n]=size(x);for i=1:m

y(i,1)=(sin(0.05*i)+2*cos(0.08*i))*rand(1,1);

end

d=1

for N=1:d:10figure(N)

a=polyfit(x,y,N);

ya(:,N/d)=polyval(a,x);

plot(x,y,'.',x,ya);

end

Elbąg, PWSZ 2002r. 15

Aproksymacja wielomianem

0 1 2 3 4 5 6 7 8 9 10-1

-0.5

0

0.5

1

1.5

2

2.5

Elbąg, PWSZ 2002r. 16

Interpolacja

Interpolacja polega na poszukiwaniu funkcji pomiędzy znanymi punktami (podobnie jak aproksymacja). W odróŜnieniu jednak od aproksymacji funkcja ta przechodzi przez te punkty. JeŜeli poszukiwana jest funkcja poza zakresem zadanych punktów mamy do czynienia z ekstrapolacj ą.

Wybrane metody interpolacji:1) interpolacja wielomianem:

2) interpolacja wielomianem Lagrange’a:

3) interpolacja wielomianem Newtona:

( ) nnnn

n cxcxcxcxP ++++= −−−

− 12

21

11 Κ

( ) ( ) ( ) ( ) ( ) ∏≠=

− −−=+++=

n

jkk kj

kjnnn xx

xxxLgdziexLyxLyxLyxP

,122111 ,Κ

( ) ( ) ( )( ) ( )( ) ( )nnn xxxxxxcxcxxcxxccxP −−−++−−+−+=− ΛΚ 212131211

Elbąg, PWSZ 2002r. 17

Interpolacja

Elbąg, PWSZ 2002r. 18

Interpolacja

Interpolacja wielomianami sklejanymiW interpolacji wielomianami sklejanymi zamiast stosowania jednego wielomianu dla wszystkich danych punktów stosowane jest wiele wielomianów niskiego poziomu dla danego przedziału danych:

Punkty łączenia wielomianów nazywamy węzłami . We węzłach sprawdzane są warunki ci ągłości (np. ciągłość pochodnych).

( )xPi

1+≤≤ ii xxx

Elbąg, PWSZ 2002r. 19

Interpolacja

Interpolacja kawałkami liniowa

Przykład 5:x1=linspace(0,2*pi,100);x2=linspace(0,2*pi,6);

plot(x1,sin(x1),x2,sin(x2))

grid onxlabel('x')

ylabel('plot(x,sin(x)')

legend('x=linspace(0,2*pi,100)',...

'x=linspace(0,2*pi,6)')

0 1 2 3 4 5 6 7-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

x

plot

(x,s

in(x

)

x=linspace(0,2*pi,100)x=linspace(0,2*pi,6)

Elbąg, PWSZ 2002r. 20

Interpolacja

0 1 2 3 4 5 6 7-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

x

plot

(x,s

in(x

)

x=linspace(0,2*pi,100)x=linspace(0,2*pi,6)

Elbąg, PWSZ 2002r. 21

Interpolacja

Interpolacja kawałkami sze ścienna – Hermite’a

gdzie: są poszukiwanymi współczynnikami, dla których sąspełnione we węzłach następujące warunki:1) ciągłości:

2) znane są wartości pierwszej pochodnej i jej ciągłość:

Interpolacja kawałkami sze ścienna – splajnyMetoda ta w odróŜnieniu od interpolacji Hermite’a nie wymaga znajomości pochodnych we wszystkich punktach węzłowych, muszą być jednak spełnione następujące warunki:

( ) ( ) ( ) ( )32iiiiiiii xxdxxcxxbaxP −+−+−+=

iiii dcba ,,,

( ) ( )iiii xPxP =−1

( ) ( )iiii xPxP ′=′−1

Elbąg, PWSZ 2002r. 22

Interpolacja

1) ciągłość drugiej pochodnej:

2) pierwsze pochodne (nachylenia krzywej) muszą być znane na końcachprzedziału

- ustalone nachylenie:

- naturalne nachylenie:

- nachylenie nieznane:

( ) ( )iiii xPxP ′′=′′−1

( ) ( )nn xPxP ′′ ,11

( ) ( ) ,2,111 stxPstxP nn =′=′

( ) ( ) ,011 =′′=′′ nn xPxP

( ) ( ) ( ) ( )22212221 xPxPixPxP ′′′=′′′′′′=′′′

Elbąg, PWSZ 2002r. 23

Interpolacja

Program MATLAB realizuje interpolację za pomocą następujących metod:1) interpolacja kawałkami liniowa i sześcienna,2) interpolacja za pomocą funkcji sklejanych.

Funkcja interp1 :

yi=interp1(x, y, x1, ‘metoda’)

Funkcja interp1 umoŜliwia wykonanie interpolacji funkcji jednej zmiennej w punktach określonych wektorem xi . Węzły interpolacji określone sąparametrami x i y . Parametr ‘ metoda ’ umoŜliwia wybór metody interpolacji:1) ‘linear’ – interpolacja funkcją łamaną (kawałkami liniowa),2) ‘spline’ – interpolacja funkcjami sklejanymi trzeciego stopnia,3) ‘cubic’ – interpolacja wielomianami trzeciego stopnia (kawałkami

sześcienna),

Elbąg, PWSZ 2002r. 24

Interpolacja

Elementy wektora x muszą tworzyć ciąg rosnący, dodatkowo w przypadku interpolacji wielomianami trzeciego stopnia przyrosty wartości elementów wektora x muszą być sobie równe.

Przykład 6:Interpolacja róŜnymi metodami:

x=0:20; y=sin(x)+sin(2*x);

xi=0:0.2:20;

yi=interp1(x,y,xi,'linear');

plot(x,y,'o',xi,yi,xi,sin(xi)+sin(2*xi));

xlabel('x');

ylabel('y');

title('Interpolacja kawalkami liniowa')

Elbąg, PWSZ 2002r. 25

Interpolacja

figure(2)

yi=interp1(x,y,xi,'cubic');

plot(x,y,'o',xi,yi,xi,sin(xi)+sin(2*xi));

xlabel('x');

ylabel('y');

title('Interpolacja kawalkami szescienna')

figure(3)

yi=interp1(x,y,xi,'spline');

plot(x,y,'o',xi,yi,xi,sin(xi)+sin(2*xi));

xlabel('x');

ylabel('y');

title('Interpolacja funkcjami sklejanymi')

Elbąg, PWSZ 2002r. 26

Interpolacja

0 2 4 6 8 10 12 14 16 18 20-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

x

y

Interpolacja kawalkami liniowa

Elbąg, PWSZ 2002r. 27

Interpolacja

0 2 4 6 8 10 12 14 16 18 20-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

x

y

Interpolacja kawalkami szescienna

Elbąg, PWSZ 2002r. 28

Interpolacja

0 2 4 6 8 10 12 14 16 18 20-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

x

y

Interpolacja funkcjami sklejanymi

Dziękuję za uwagę