Interpolacja i aproksymacja, pojęcie modelu regresji

Transkrypt

Interpolacja i aproksymacja, pojęcie modelu regresji
27 styczeń 2009
SciLab w obliczeniach numerycznych - część 3
Slajd1
Interpolacja i aproksymacja,
pojęcie modelu regresji
nstytut K onstrukcji Budowlanych
Zakład K omputerowego W spomagania Projektowania
M etody Obliczeniowe
Semestr II.
27 styczeń 2009
SciLab w obliczeniach numerycznych - część 3
Slajd2
Plan zajęć
1. Interpolacja wielomianowa.
2. Interpolacja liniowa funkcji jednej zmiennej.
3. Interpolacja funkcjami sklejanymi - przykład funkcji dwóch
zmiennych.
4. Interpolacja funkcjami sklejanymi - funkcja jednej zmiennej.
5. Zadanie regresji liniowej
nstytut K onstrukcji Budowlanych
Zakład K omputerowego W spomagania Projektowania
M etody Obliczeniowe
Semestr II.
27 styczeń 2009
SciLab w obliczeniach numerycznych - część 3
Slajd3
Zadanie 1
W nowym skrypcie (nadając mu nazwę ~/interpolacja.sce) zapisać
polecenia przy pomocy których można wyznaczyć wielomian interpolacyjny
postaci W(x)=a0+a1·x1 +a2·x2+..+an·xn dla podanych punktów o
współrzędnych zapisanych jako wektory:
X = [-5,-4, -3, -2, -1, 0, 1, 2, 3, 4, 5],
f(X)=[-82.5,-39.8,-13.9,-0.6,4.3,5,5.7,10.6,23.9,49.8,92.5]
rozwiązując układ równań (niewiadomą jest wektor a =[a0,a1,a2,...,an]):
Macierz współczynników
tego układu ma postać:
Narysuj wykres funkcji interpolującej
nstytut K onstrukcji Budowlanych
Zakład K omputerowego W spomagania Projektowania
1

1

A=
 ...

 1
x 10
...
x 11
...
...
...
x 1n
...
x 0n 
n
x1 
... 

n
x n 
M etody Obliczeniowe
Semestr II.
27 styczeń 2009
SciLab w obliczeniach numerycznych - część 3
Slajd4
Zadanie 1 - cd
// sformowanie wektorów
x=[-5:5]
x, y
y=[-82.5 -39.8 -13.9 -0.6 4.3 5 5.7 10.6 23.9 49.8 92.5]'
m=length(x)
nstytut K onstrukcji Budowlanych
Zakład K omputerowego W spomagania Projektowania
M etody Obliczeniowe
Semestr II.
27 styczeń 2009
SciLab w obliczeniach numerycznych - część 3
Slajd5
Zadanie 1 - cd
// sformowanie wektorów
x=[-5:5]
x, y
y=[-82.5 -39.8 -13.9 -0.6 4.3 5 5.7 10.6 23.9 49.8 92.5]'
m=length(x)
// sformowanie macierzy A
A = ones(m,m)
for i = 1:m
for j=2:m
A(i,j) = x(i)^(j-1)
end
end
nstytut K onstrukcji Budowlanych
Zakład K omputerowego W spomagania Projektowania
M etody Obliczeniowe
Semestr II.
27 styczeń 2009
SciLab w obliczeniach numerycznych - część 3
Zadanie 1 - cd
// sformowanie wektorów
x=[-5:5]
x, y
y=[-82.5 -39.8 -13.9 -0.6 4.3 5 5.7 10.6
m=length(x)
// sformowanie macierzy A
A = ones(m,m)
for i = 1:m
for j=2:m
A(i,j) = x(i)^(j-1)
end
end
Slajd6
a1 =
a2 =
4.3863982
5.
0.2395459
- 1.665D-16
1.5191751
- 5.135D-15
0.5710342
0.7
23.9
49.8
92.5]'
- 0.6258516
- 7.772D-16
0.0201306
- 1.443D-15
0.0880366
- 8.517D-16
- 0.0011664
- 2.862D-17
- 0.0048473
4.272D-17
0.0000221
- 2.982D-19
0.0000893
1.863D-19
// rozwiązanie układu równań A*a=y
a1 = linsolve(A,-y); a2 = inv(A)*y
// wykres
plot2d(x,y)
nstytut K onstrukcji Budowlanych
Zakład K omputerowego W spomagania Projektowania
M etody Obliczeniowe
Semestr II.
27 styczeń 2009
SciLab w obliczeniach numerycznych - część 3
Slajd7
Przykład 2
interpolacja funkcji jednej zmiennej - funkcje interpln(), smooth()
●
dane są punkty: -6,-1,2,6,11 oraz wartości pewnej funkcji w tych
punktach, odpowiednio: 1,0,2,2,3. Należy:
–
zdefiniować macierz W2x5 zapisując w pierwszym wierszu współrzędne
punktów, w drugim wartości funkcji w tych punktach;
–
obliczyć interpolowane wartości funkcji (oznaczając jako wektor Y) przy
użyciu funkcji interpln() dla wektora argumentów X=[-5,10]
podzielonego na 20 części;
–
narysować wykres krzywej łączącej punkty (X,Y)
nstytut K onstrukcji Budowlanych
Zakład K omputerowego W spomagania Projektowania
M etody Obliczeniowe
Semestr II.
27 styczeń 2009
SciLab w obliczeniach numerycznych - część 3
Slajd8
Przykład 2
interpolacja funkcji jednej zmiennej - funkcje interpln(), smooth()
●
dane są punkty: -6,-1,2,6,11 oraz wartości pewnej funkcji w tych
punktach, odpowiednio: 1,0,2,2,3. Należy:
–
zdefiniować macierz W2x5 zapisując w pierwszym wierszu współrzędne
punktów, w drugim wartości funkcji w tych punktach;
–
obliczyć interpolowane wartości funkcji (oznaczając jako wektor Y) przy
użyciu funkcji interpln() dla wektora argumentów X=[-5,10]
podzielonego na 20 części;
–
narysować wykres krzywej łączącej punkty (X,Y)
W=[ -6, -1, 2, 6, 11; 1, 0, 2, 2, 3]
X= linspace(-5,10,20)
Y= interpln(W,X)
plot2d(X,Y,[2])
nstytut K onstrukcji Budowlanych
Zakład K omputerowego W spomagania Projektowania
M etody Obliczeniowe
Semestr II.
27 styczeń 2009
SciLab w obliczeniach numerycznych - część 3
Slajd9
Przykład 2
interpolacja funkcji jednej zmiennej - funkcje interpln(), smooth()
●
dane są punkty: -6,-1,2,6,11 oraz wartości pewnej funkcji w tych
punktach, odpowiednio: 1,0,2,2,3. Należy:
–
zdefiniować macierz W2x5 zapisując w pierwszym wierszu współrzędne
punktów, w drugim wartości funkcji w tych punktach;
–
obliczyć interpolowane wartości funkcji (oznaczając jako wektor Y) przy
użyciu funkcji interpln() dla wektora argumentów X=[-5,10]
podzielonego na 20 części;
–
narysować wykres krzywej łączącej punkty (X,Y)
W=[ -6, -1, 2, 6, 11; 1, 0, 2, 2, 3]
X= linspace(-5,10,20)
Y= interpln(W,X)
plot2d(X,Y,[2])
nstytut K onstrukcji Budowlanych
Zakład K omputerowego W spomagania Projektowania
M etody Obliczeniowe
Semestr II.
27 styczeń 2009
SciLab w obliczeniach numerycznych - część 3
Slajd 10
Przykład 2 - cd
interpolacja funkcji jednej zmiennej - funkcje interpln(), smooth()
●
wykorzystując funkcję smooth() wyznaczyć współrzędne punktów krzywej
sklejanej, interpolującej punkty węzłowe o współrzędnych zapisanych w
macierzy W, narysować wykres krzywej sklejanej (spline).
nstytut K onstrukcji Budowlanych
Zakład K omputerowego W spomagania Projektowania
M etody Obliczeniowe
Semestr II.
27 styczeń 2009
SciLab w obliczeniach numerycznych - część 3
Slajd 11
Przykład 2 - cd
interpolacja funkcji jednej zmiennej - funkcje interpln(), smooth()
●
wykorzystując funkcję smooth() wyznaczyć współrzędne punktów krzywej
sklejanej, interpolującej punkty węzłowe o współrzędnych zapisanych w
macierzy W, narysować wykres krzywej sklejanej (spline).
Xs= smooth(W)
plot2d(Xs(1,:)',Xs(2,:)',[3])
3.2
2.8
2.4
2.0
1.6
1.2
0.8
0.4
0.0
-0.4
-6
nstytut K onstrukcji Budowlanych
Zakład K omputerowego W spomagania Projektowania
-4
-2
0
2
4
6
8
10
12
M etody Obliczeniowe
Semestr II.
27 styczeń 2009
SciLab w obliczeniach numerycznych - część 3
Slajd 12
Przykład 3
interpolacja funkcji dwóch zmiennych – funkcje splin2d(), interp2d(), linear_interpn()
●
●
●
zdefiniować zmienne x=[0,2,3,5],y=[0,2,3,5], oraz macierz z
zwierającą wartości pewnej funkcji f w punktach (xi,yi) (i=1,...,4)
jako z=[10,15,11,12;13,16,11,20;22,23,23,17;17,13,14,12];
wykorzystując funkcję splin2d() obliczyć współczynniki funkcji spline
interpolującej funkcję f ;
przy użyciu funkcji ndgrid() zbudować siatkę punktów opartej na wektorach
[0,5] podzielonych na 20 części.
nstytut K onstrukcji Budowlanych
Zakład K omputerowego W spomagania Projektowania
M etody Obliczeniowe
Semestr II.
27 styczeń 2009
SciLab w obliczeniach numerycznych - część 3
Slajd 13
Przykład 3
interpolacja funkcji dwóch zmiennych – funkcje splin2d(), interp2d(), linear_interpn()
●
●
●
zdefiniować zmienne x=[0,2,3,5],y=[0,2,3,5], oraz macierz z
zwierającą wartości pewnej funkcji f w punktach (xi,yi) (i=1,...,4)
jako z=[10,15,11,12;13,16,11,20;22,23,23,17;17,13,14,12];
wykorzystując funkcję splin2d() obliczyć współczynniki funkcji spline
interpolującej funkcję f ;
przy użyciu funkcji ndgrid() zbudować siatkę punktów opartej na wektorach
[0,5] podzielonych na 20 części.
x =[0,2,3,5]; y = x
z =[10,15,11,12;13,16,11,20;22,23,23,17;17,13,14,12]
// obliczenie współczynników funkcji spline
b = splin2d(x,y,z)
// budowa siatki
400 punktów na prostokącie[0,5]x[0,5]
xp = linspace(0,5,20)
[Xx,Yy] = ndgrid(xp,xp)
nstytut K onstrukcji Budowlanych
Zakład K omputerowego W spomagania Projektowania
M etody Obliczeniowe
Semestr II.
27 styczeń 2009
SciLab w obliczeniach numerycznych - część 3
Slajd 14
Przykład 3 - cd
interpolacja funkcji dwóch zmiennych – funkcje splin2d(), interp2d(), linear_interpn()
●
●
przy użyciu funkcji interp2d() obliczyć wartości interpolującej funkcji spline w
punktach siatki, oraz narysować wykres powierzchni interpolującej.
korzystając z funkcji linear_interpn() znaleźć wartości interpolującej funkcji
liniowej w punktach siatki, oraz narysować wykres powierzchni interpolującej w
innym oknie graficznym.
nstytut K onstrukcji Budowlanych
Zakład K omputerowego W spomagania Projektowania
M etody Obliczeniowe
Semestr II.
27 styczeń 2009
SciLab w obliczeniach numerycznych - część 3
Slajd 15
Przykład 3 - cd
interpolacja funkcji dwóch zmiennych – funkcje splin2d(), interp2d(), linear_interpn()
●
●
przy użyciu funkcji interp2d() obliczyć wartości interpolującej funkcji spline w
punktach siatki, oraz narysować wykres powierzchni interpolującej.
korzystając z funkcji linear_interpn() znaleźć wartości interpolującej funkcji
liniowej w punktach siatki, oraz narysować wykres powierzchni interpolującej w
innym oknie graficznym.
Zz = interp2d(Xx,Yy,x,y,b)
plot3d(xp,xp,Zz)
// otwarcie nowego okna graficznego
scf()
Zs = linear_interpn(Xx,Yy,x,y,z)
plot3d(xp,xp,Zs)
nstytut K onstrukcji Budowlanych
Zakład K omputerowego W spomagania Projektowania
M etody Obliczeniowe
Semestr II.
SciLab w obliczeniach numerycznych - część 3
27 styczeń 2009
Slajd 16
Przykład 3 - cd
interpolacja funkcji dwóch zmiennych – funkcje splin2d(), interp2d(), linear_interpn()
30
25
15
10
5
0
0
1
2
3
Y
4
5
5
4
3
2
1
0
24
22
X
20
18
Z
Z
20
16
14
12
10
0
0
1
1
2
2
3
Y
nstytut K onstrukcji Budowlanych
Zakład K omputerowego W spomagania Projektowania
3
4
4
5
5
X
M etody Obliczeniowe
Semestr II.
27 styczeń 2009
SciLab w obliczeniach numerycznych - część 3
Slajd 17
Ćwiczenie 4
Zapisać w nowym skrypcie polecenia które dla podanych danych
pomiarowych:(-1,2),(2,1),(-3,3),(6,2),(4,3),(5,2) przy
użyciu funkcji splin(), interp() zbudują i przedstawią na wykresie
interpolującą je funkcje sklejaną. Wykres należy narysować w oparciu o
wektor [-3,6] podzielony na 50 części. Na wykresie zaznaczyć punkty
węzłowe.
nstytut K onstrukcji Budowlanych
Zakład K omputerowego W spomagania Projektowania
M etody Obliczeniowe
Semestr II.
27 styczeń 2009
SciLab w obliczeniach numerycznych - część 3
Slajd 18
Ćwiczenie 4
Zapisać w nowym skrypcie polecenia które dla podanych danych
pomiarowych:(-1,2),(2,1),(-3,3),(6,2),(4,3),(5,2) przy
użyciu funkcji splin(), interp() zbudują i przedstawią na wykresie
interpolującą je funkcje sklejaną. Wykres należy narysować w oparciu o
wektor [-3,6] podzielony na 50 części. Na wykresie zaznaczyć punkty
węzłowe.
3.5
x=[-3,-1,2,4,5,6],
y=[3,2,1,3,2,2]
xp = linspace(-3,6,50)
d = splin(x,y);
yp = interp(xp, x, y, d);
plot2d(xp,yp)
plot2d(x,y, style =-2)
3.0
2.5
2.0
1.5
1.0
0.5
-3
nstytut K onstrukcji Budowlanych
Zakład K omputerowego W spomagania Projektowania
-2
-1
0
1
2
3
4
5
6
M etody Obliczeniowe
Semestr II.
27 styczeń 2009
SciLab w obliczeniach numerycznych - część 3
Slajd 19
Przykład 5
regresja liniowa
Na
podstawie
danych
pomiarowych zapisanych w pliku o nazwie
/pub/programy/regdane.txt oraz wbudowanej funkcji reglin() znaleźć
równanie prostej regresji o równaniu y=a*x+b, po czym przedstawić jej
wykres wraz z punktami pomiarowymi.
nstytut K onstrukcji Budowlanych
Zakład K omputerowego W spomagania Projektowania
M etody Obliczeniowe
Semestr II.
27 styczeń 2009
SciLab w obliczeniach numerycznych - część 3
Slajd 20
Przykład 5
regresja liniowa
Na
podstawie
danych
pomiarowych zapisanych w pliku o nazwie
/pub/programy/regdane.txt oraz wbudowanej funkcji reglin() znaleźć
równanie prostej regresji o równaniu y=a*x+b, po czym przedstawić jej
wykres wraz z punktami pomiarowymi.
// wczytanie danych
u = file('open','/pub/programy/regdane.txt','old')
A = read(u,-1,2);
file('close',u);
//obliczenie parametrów krzywej regresji
[a,b]= reglin(A(:,1)',A(:,2)')
x = A(:,1); y = A(:,2)
yn=a*x+b
plot2d(x,yn, style = 5); plot2d(x,y, style =-2);
disp(a); disp(b)
nstytut K onstrukcji Budowlanych
Zakład K omputerowego W spomagania Projektowania
M etody Obliczeniowe
Semestr II.
27 styczeń 2009
SciLab w obliczeniach numerycznych - część 3
Slajd 21
Przykład 5
regresja liniowa
Na
podstawie
danych
22
× ×
×
pomiarowych zapisanych w pliku o nazwie
/pub/programy/regdane.txt oraz wbudowanej funkcji reglin() znaleźć
równanie prostej regresji o równaniu y=a*x+b, po czym przedstawić jej
wykres wraz z punktami pomiarowymi.
21
×
20
×
19
×
× ×
×
×
×
18
×
17
16
×
×
15
×
14
13
0.26
×
×
×
×
×
××
×
× ××
×
××
×× ×
×
×
×
×
×
×
××
×
×
××
× ×
×
××
×
×
×× ×
×
×
×
×
×
×
×
×
×
×
×
×
×
×
×
// wczytanie danych
u = file('open','/pub/programy/regdane.txt','old')
A = read(u,-1,2);
file('close',u);
0.28
×
×
0.30
0.32
0.34
0.36
0.38
//obliczenie parametrów krzywej regresji
[a,b]= reglin(A(:,1)',A(:,2)')
x = A(:,1); y = A(:,2)
yn=a*x+b
plot2d(x,yn, style = 5); plot2d(x,y, style =-2);
disp(a); disp(b)
nstytut K onstrukcji Budowlanych
Zakład K omputerowego W spomagania Projektowania
M etody Obliczeniowe
Semestr II.
27 styczeń 2009
SciLab w obliczeniach numerycznych - część 3
Slajd 22
Funkcje SciLaba
Wykorzystywane funkcje:
●
●
●
●
smooth(), interp() , interp2d(), interp3d() – interpolacja funkcjami
sklejanymi
interpln(), linear_interpn() – interpolacja liniowa
splin(), splin2d(), splin3d() – obliczenie współczynników funkcji
sklejanej, interpolującej podane punkty węzłowe
reglin(), regress() – wyznaczenie współczynników regresji liniowej
nstytut K onstrukcji Budowlanych
Zakład K omputerowego W spomagania Projektowania
M etody Obliczeniowe
Semestr II.

Podobne dokumenty