nstytut K onstrukcji Budowlanych Metody ObliczenioweZakład K omputerowego Wspomagania Projektowania Semestr II.
27 styczeń 2009 SciLab w obliczeniach numerycznych - część 3 Slajd 1
Interpolacja i aproksymacja,pojęcie modelu regresji
nstytut K onstrukcji Budowlanych Metody ObliczenioweZakład K omputerowego Wspomagania Projektowania Semestr II.
27 styczeń 2009 SciLab w obliczeniach numerycznych - część 3 Slajd 2
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 Metody ObliczenioweZakład K omputerowego Wspomagania Projektowania Semestr II.
27 styczeń 2009 SciLab w obliczeniach numerycznych - część 3 Slajd 3
Zadanie 1W 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ć:
=
nn
1n
n1
11
n0
10
x...x1............x...x1x...x1
A
Narysuj wykres funkcji interpolującej
nstytut K onstrukcji Budowlanych Metody ObliczenioweZakład K omputerowego Wspomagania Projektowania Semestr II.
27 styczeń 2009 SciLab w obliczeniach numerycznych - część 3 Slajd 4
// sformowanie wektorów x, yx=[-5:5]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)
Zadanie 1 - cd
nstytut K onstrukcji Budowlanych Metody ObliczenioweZakład K omputerowego Wspomagania Projektowania Semestr II.
27 styczeń 2009 SciLab w obliczeniach numerycznych - część 3 Slajd 5
// sformowanie wektorów x, yx=[-5:5]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 AA = ones(m,m)for i = 1:m
for j=2:mA(i,j) = x(i)^(j-1)
endend
Zadanie 1 - cd
nstytut K onstrukcji Budowlanych Metody ObliczenioweZakład K omputerowego Wspomagania Projektowania Semestr II.
27 styczeń 2009 SciLab w obliczeniach numerycznych - część 3 Slajd 6
// sformowanie wektorów x, yx=[-5:5]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 AA = ones(m,m)for i = 1:m
for j=2:mA(i,j) = x(i)^(j-1)
endend// rozwiązanie układu równań A*a=ya1 = linsolve(A,-y); a2 = inv(A)*y // wykresplot2d(x,y)
Zadanie 1 - cd a1 = 4.3863982 0.2395459 1.5191751 0.5710342 - 0.6258516 0.0201306 0.0880366 - 0.0011664 - 0.0048473 0.0000221 0.0000893
a2 = 5. - 1.665D-16 - 5.135D-15 0.7 - 7.772D-16 - 1.443D-15 - 8.517D-16 - 2.862D-17 4.272D-17 - 2.982D-19 1.863D-19
nstytut K onstrukcji Budowlanych Metody ObliczenioweZakład K omputerowego Wspomagania Projektowania Semestr II.
27 styczeń 2009 SciLab w obliczeniach numerycznych - część 3 Slajd 7
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 Metody ObliczenioweZakład K omputerowego Wspomagania Projektowania Semestr II.
27 styczeń 2009 SciLab w obliczeniach numerycznych - część 3 Slajd 8
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 Metody ObliczenioweZakład K omputerowego Wspomagania Projektowania Semestr II.
27 styczeń 2009 SciLab w obliczeniach numerycznych - część 3 Slajd 9
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 Metody ObliczenioweZakład K omputerowego Wspomagania Projektowania 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 Metody ObliczenioweZakład K omputerowego Wspomagania Projektowania 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])
-6 -4 -2 0 2 4 6 8 10 12-0.4
0.0
0.4
0.8
1.2
1.6
2.0
2.4
2.8
3.2
nstytut K onstrukcji Budowlanych Metody ObliczenioweZakład K omputerowego Wspomagania Projektowania Semestr II.
27 styczeń 2009 SciLab w obliczeniach numerycznych - część 3 Slajd 12
Przykład 3interpolacja 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 Metody ObliczenioweZakład K omputerowego Wspomagania Projektowania Semestr II.
27 styczeń 2009 SciLab w obliczeniach numerycznych - część 3 Slajd 13
Przykład 3interpolacja 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 = xz =[10,15,11,12;13,16,11,20;22,23,23,17;17,13,14,12]// obliczenie współczynników funkcji splineb = 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 Metody ObliczenioweZakład K omputerowego Wspomagania Projektowania Semestr II.
27 styczeń 2009 SciLab w obliczeniach numerycznych - część 3 Slajd 14
Przykład 3 - cdinterpolacja 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 Metody ObliczenioweZakład K omputerowego Wspomagania Projektowania Semestr II.
27 styczeń 2009 SciLab w obliczeniach numerycznych - część 3 Slajd 15
Przykład 3 - cdinterpolacja 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 graficznegoscf()
Zs = linear_interpn(Xx,Yy,x,y,z)plot3d(xp,xp,Zs)
nstytut K onstrukcji Budowlanych Metody ObliczenioweZakład K omputerowego Wspomagania Projektowania Semestr II.
27 styczeń 2009 SciLab w obliczeniach numerycznych - część 3 Slajd 16
Przykład 3 - cdinterpolacja funkcji dwóch zmiennych – funkcje splin2d(), interp2d(), linear_interpn()
0
5
10
15
20
25
30
Z
01
23
45
X
01
23
45
Y
10
12
14
16
18
20
22
24
Z
01
23
45 X
01
23
45Y
nstytut K onstrukcji Budowlanych Metody ObliczenioweZakład K omputerowego Wspomagania Projektowania 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 Metody ObliczenioweZakład K omputerowego Wspomagania Projektowania 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.
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 -2 -1 0 1 2 3 4 5 60.5
1.0
1.5
2.0
2.5
3.0
3.5
nstytut K onstrukcji Budowlanych Metody ObliczenioweZakład K omputerowego Wspomagania Projektowania Semestr II.
27 styczeń 2009 SciLab w obliczeniach numerycznych - część 3 Slajd 19
Przykład 5regresja 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 Metody ObliczenioweZakład K omputerowego Wspomagania Projektowania Semestr II.
27 styczeń 2009 SciLab w obliczeniach numerycznych - część 3 Slajd 20
Przykład 5regresja 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 danychu = 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+bplot2d(x,yn, style = 5); plot2d(x,y, style =-2);disp(a); disp(b)
nstytut K onstrukcji Budowlanych Metody ObliczenioweZakład K omputerowego Wspomagania Projektowania Semestr II.
27 styczeń 2009 SciLab w obliczeniach numerycznych - część 3 Slajd 21
Przykład 5regresja 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 danychu = 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+bplot2d(x,yn, style = 5); plot2d(x,y, style =-2);disp(a); disp(b)
0.26 0.28 0.30 0.32 0.34 0.36 0.3813
14
15
16
17
18
19
20
21
22
×
× ×××
×
×
××
×
××
××
×
×
×
×
×
×
× ××
×
××
×× ×
×
× ××
× ×
×
××
×
×
×
×
× ×
× ×
×
×
×
××
×
×
×
××
×
×
×
×
× ×××
××
×
×
× ×× ×
nstytut K onstrukcji Budowlanych Metody ObliczenioweZakład K omputerowego Wspomagania Projektowania Semestr II.
27 styczeń 2009 SciLab w obliczeniach numerycznych - część 3 Slajd 22
Funkcje SciLabaWykorzystywane 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