Documente Academic
Documente Profesional
Documente Cultură
Probleme Matlab
Probleme Matlab
Problema 1
Se consideră următorul exemplu în care sunt înregistrate valorile temperaturii pe primele 10 luni ale
unei lunii de vară. Se cere să se determine formula ce definește dreapta de regresie liniară.
Ziua
Temperatura [ C ]
1 20.5
2 22.6
3 23
4 24.8
5 26.2
6 27.4
7 27.9
8 29
9 29.8
10 30
Primul pas este reprezentat de minimizarea sumei prin determinarea punctelor de extremum prin
studiera minimului functiei S(a,b) care are derivatele partiale de ordinul al doilea continue.
S S
n 2
(a xi b y( x i ))
i 1 b
0;
a
0 (1)
n 2 n n
a xi b xi y ( xi ) xi
i 1 i 1 i 1
n n
(2)
a x n b y ( x )
i 1
i
i 1
i
Notăm:
n
S x xi
i 1
n
S y y ( xi )
i 1
n
(3)
S x2 x 2
i
i 1
n
S xy y ( xi ) xi
i 1
a S x 2 b S x S xy
(4)
a S x n b S y
n S xy S x S y
a
n S x2 S x
2
(5)
b S x 2 S y S x S xy
n S x 2 S x2
n=10;
S x 1 2 3 4 5 6 7 8 9 10 55
S y 20.5 22.6 23 24.8 26.2 27.4 27.9 29 29.8 30 261.2
S x 2 12 2 2 32 4 2 5 2 6 2 7 2 8 2 9 2 10 2 389 (6)
S xy 1 20.5 2 22.6 3 23 4 24.8 5 26.2 6 27.4 7 27.9 8 29 9 29.8 10 30
20.5 45.2 69 99.2 131 164.4 195.3 232 268.2 300 1524.8
f ( x) y a x b 1.019 x 20.5119
Pentru verificarea corectitudinii, am creat în Matlab o rutină care calculează atat parametrii dreptei de
regresie liniară, cat și eroarea acesteia:
După cum se poate observa din apelarea rutei linear_regression din matlab, valoarea interceptului(a)
precum și valoarea pantei de regresie(b) este aceeași și cea calculată analitic.
Prin determinarea ecuatiei dreptei de regresie, se pot efectua predictii pe baza setului de date anterior.
Se presupune ca dorim sa aflam valoarea medie a temperaturii celei de-a 14 a zi a lunii studiate.
Consideram x = 14
Avem: y (14) 1.019 14 20.5119 34.7779 [ C ] pentru cea de-a 14 a zi a lunii de vara studiate.
În matlab, s-a construit o rutină care conține ca intrări parametrii de umiditate, viteză vântului și
precipitațiile iar la ieșire vor rezulta coeficienții planului de regresie liniară.
y a0 a1 x1 a2 x2 ... an xn e
Problema 3
Cod Matlab:
function f = f()
%inaltime si greutate
x = [1.67;1.8;1.76;1.68;1.78;1.76;1.67;1.82;2;1.67;1.56;1.78;1.82;1.6;1.76];
y = [70;82;75;69;82;78;65;95;113;67;61;81;90;62;78];
mat = [x y];
date_ord = sortrows(mat,1)
x_ord=date_ord(1:15,1)
y_ord=date_ord(1:15,2)
figure
plot(x_ord,y_ord,'-*');
title('Greutate vs inaltime - date initiale')
xlabel('Inaltime')
ylabel('Greutate')
%coeficient de corelatie
r=corrcoef(x_ord,y_ord)
%r=0.9668
f = polytool(x_ord,y_ord,1);
%y = -141.35 +125.84x
End
În urma simulării programului vor rezulta următoarele figuri:
Graficul obținut după apelarea funcției polytool - cu verde dreapta de regresie, roșu –
intervalul de încredere (95% funcția estimează valori în acest interval)
Graficul ce conține reziduurile în urma estimării.