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.