Sunteți pe pagina 1din 20

Metode numerice

Laborator Nr. 6

5 aprilie 2017

Laborator Nr. 6 MNUM 5 aprilie 2017 1 / 20


Calculul derivatei polinoamelor
Derivata unui polinom în MATLAB se poate calcula folosind funcția
polyder.
D = polyder(C)

C este vectorul linie al coeficienților polinomului, în ordinea


descrescătoare a puterilor variabilei, iar D este vectorul linie al
coeficienților polinomului derivat.
D = polyder(A,B)

returnează în vectorul D coeficienții derivatei polinomului produs AB.


[M,N] = polyder(A,B)

returnează în vectorii M și N coeficienții numărătorului și numitorului


derivatei raportului polinoamelor A/B.

Laborator Nr. 6 MNUM 5 aprilie 2017 2 / 20


Calculul derivatei polinoamelor

Exercițiul 1
Fie polinoamele:

A(x) = x2 + 2x − 1
B(x) = x − 1

Calculați:

A′ (x)
B ′ (x)
(A(x)B(x))′
( )
A(x) ′
B(x)

Laborator Nr. 6 MNUM 5 aprilie 2017 3 / 20


Exercițiul 1

1 A = [1, 2, -1];
2 B = [1, -1];
3 Ad = polyder(A);
4 Bd = polyder(B);
5 disp(['Ad: ' num2str(Ad)]);
6 disp(['Bd: ' num2str(Bd)]);
7 Cd = polyder(A, B);
8 disp(['Cd: ' num2str(Cd)]);
9 [M, N] = polyder(A, B);
10 disp(['M: ' num2str(M)]);
11 disp(['N: ' num2str(N)]);

Laborator Nr. 6 MNUM 5 aprilie 2017 4 / 20


Interpolarea și aproximarea datelor

Funcția interp1 poate interpola datele după o lege liniară, cubică sau
spline cubică.
yi = interp1(x, y, xi, 'regula')

unde 'regula' este unul din următoarele cuvinte cheie:


linear - pentru interpolare liniară
spline - pentru interpolare spline cubică
pchip - pentru interpolare cubică
Toate legile de interpolare necesită ca x să fie ordonat monoton.

Laborator Nr. 6 MNUM 5 aprilie 2017 5 / 20


Interpolarea și aproximarea datelor

Exercițiul 2
Fie următoarele date ale unei funcții de o singură variabilă:

x -2 -1 0 1 2
y 6 2 3 1 7

Să se estimeze cu funcția interp1 valoarea y care corespunde lui x1 = −1 și


x2 = 1.5 folosind interpolarea liniară, spline și cubică.

Laborator Nr. 6 MNUM 5 aprilie 2017 6 / 20


Exercițiul 2

1 x = [-2 -1 0 1 2];
2 y = [6 2 3 1 7];
3 yi = interp1(x, y, [-1, 1.5], 'linear');
4 disp(['linear: ' num2str(yi)]);
5 yi = interp1(x, y, [-1, 1.5], 'spline');
6 disp(['spline: ' num2str(yi)]);
7 yi = interp1(x, y, [-1, 1.5], 'pchip');
8 disp(['cubic: ' num2str(yi)]);

Laborator Nr. 6 MNUM 5 aprilie 2017 7 / 20


Interpolarea liniară

Exercițiul 3
Estimați valorile temperaturii la momentele de timp 2.5 sec și 4.9 sec, cu
datele din tabelul de mai jos, folosind interpolare liniară.

Timp [s] Temperatură [o C]


0.0 0.0
1.0 20.0
2.0 60.0
3.0 68.0
4.0 77.0
5.0 110.0

Laborator Nr. 6 MNUM 5 aprilie 2017 8 / 20


Exercițiul 3

1 load 'date.txt';
2 x=date(:,1);
3 y=date(:,2);
4 yi=interp1(x,y,[2.5, 4.9], 'linear');
5 disp(yi);

Laborator Nr. 6 MNUM 5 aprilie 2017 9 / 20


Interpolarea spline cubică

Exercițiul 4
Estimați valorile temperaturii la momentele de timp 2.6 sec și 4.9 sec, cu
datele din tabelul de mai jos, folosind interpolarea spline cubică.

Timp [s] Temperatură [o C]


0.0 0.0
1.0 20.0
2.0 60.0
3.0 68.0
4.0 77.0
5.0 110.0

Laborator Nr. 6 MNUM 5 aprilie 2017 10 / 20


Exercițiul 4

1 load 'date.txt';
2 x=date(:,1);
3 y=date(:,2);
4 yi=interp1(x,y,[2.6, 4.9], 'spline');
5 disp(yi);

Laborator Nr. 6 MNUM 5 aprilie 2017 11 / 20


Reprezentarea grafică a interpolării

Exercițiul 5
Să se reprezinte grafic o interpolare liniară și spline cubică prin șase puncte
folosind datele din tabelul de mai jos.

Timp [s] Temperatură [o C]


0.0 0.0
1.0 20.0
2.0 60.0
3.0 68.0
4.0 77.0
5.0 110.0

Laborator Nr. 6 MNUM 5 aprilie 2017 12 / 20


Exercițiul 5

1 load 'date.txt';
2 x=date(:,1);
3 y=date(:,2);
4 xi=0:0.01:5;
5 yi_lin=interp1(x, y, xi, 'linear');
6 yi_spl=interp1(x, y, xi, 'spline');
7 yi_pch=interp1(x, y, xi, 'pchip');
8 scatter(x,y, 'x');
9 hold on;
10 plot(xi,yi_lin, 'r');
11 hold on;
12 plot(xi,yi_spl, 'b');
13 hold on;
14 plot(xi,yi_pch, 'g');

Laborator Nr. 6 MNUM 5 aprilie 2017 13 / 20


Regresia polinomială

Regresia polinomială este o aproximare a unui set de date printr-un


polinom de forma
∑n
P(x) = ai xn−i
i=0

Determinarea celei mai bune aproximări a unui set de date (x, y) cu un


polinom de ordin n se realizează cu ajutorul funcției polyfit.
p = polyfit(x,y,n)

Funcția polyfit returnează coeficienții polinomului P(x).

Laborator Nr. 6 MNUM 5 aprilie 2017 14 / 20


Regresia polinomială

Exercițiul 6
Să se determine coeficienții polinoamelor de grad 3 și 5 care aproximează
punctele (x, y) precizate în tabelul de mai jos.

x y
-2 -15
-1 -3
0 2
2 -3
4 10
6 4

Laborator Nr. 6 MNUM 5 aprilie 2017 15 / 20


Exercițiul 6

1 x=[-2 -1 0 2 4 6];
2 y=[-15 -3 2 -3 10 4];
3 c3 = polyfit(x,y,3);
4 disp(['c3 = ' num2str(c3)]);
5 c5 = polyfit(x,y,5);
6 disp(['c5 = ' num2str(c5)]);

Laborator Nr. 6 MNUM 5 aprilie 2017 16 / 20


Regresia polinomială

Exercițiul 7
Aproximați prin polinoame de gradul 2, 5 și 7 și prin funcții spline 5
perechi de puncte de coordonate cunoscute. Să se reprezinte grafic
aproximările determinate.

x y
-2 -19
-1 -3
0 1
2 -3
4 17

Laborator Nr. 6 MNUM 5 aprilie 2017 17 / 20


Exercițiul 7
1 x=[-2,-1,0,2,4];
2 y=[-19,-3,1,-3,17];
3 c2=polyfit(x,y,2);
4 c5=polyfit(x,y,5);
5 c7=polyfit(x,y,7);
6 xi=-2:0.01:4;
7 yi_spl=interp1(x,y,xi,'spline');
8 yi_2=polyval(c2,xi);
9 yi_5=polyval(c5,xi);
10 yi_7=polyval(c7,xi);
11 scatter(x,y);
12 hold on;
13 plot(xi,yi_spl, 'r');
14 hold on;
15 plot(xi,yi_2, 'g');
16 hold on;
17 plot(xi,yi_5, 'b');
18 hold on;
19 plot(xi,yi_7, 'y');

Laborator Nr. 6 MNUM 5 aprilie 2017 18 / 20


Regresia polinomială

Exercițiul 8
Fie polinomul P(x) = x3 − 6x2 + 11x − 6, peste care este suprapus un
zgomot gaussian. Aproximați datele cu un polinom de gradul 3 pentru
intervalul x ∈ [0, 4]. Reprezentați grafic datele cu zgomot și polinomul
aproximant.

Laborator Nr. 6 MNUM 5 aprilie 2017 19 / 20


Exercițiul 8

1 p = [1, -6, 11, -6];


2 x = 0:0.01:4;
3 y=polyval(p,x)+randn(size(x));
4 c=polyfit(x,y,3);
5 z=polyval(c,x);
6 scatter(x,y);
7 hold on;
8 plot(x,z);

Laborator Nr. 6 MNUM 5 aprilie 2017 20 / 20

S-ar putea să vă placă și