
La funzione polyfit() di Matlab
La funzione polyfit() di Matlab ti permette di trovare un polinomio che si adatta a una serie di dati.
polyfit(Y)
L'argomento della funzione è un array contenente una serie di dati.
Ti faccio un esempio pratico.
Considera questa serie di dati.
>> X = [ 1 2 3 4 5 6 ]
>> Y = [ 3 8 6 9 7 8 ]
Rappresenta questa serie in un grafico tramite la funzione plot(X,Y)
>> plot(X,Y)
Il grafico della serie di dati è il seguente
Ora cerca un polinomio di primo grado che si adatti a questa serie di dati
>> P = polyfit(X,Y,1)
Il risultato è
P =
0.71429 4.33333
Sono i coefficienti del polinomio di primo grado
$$ P_1(x) = 0.71429 \cdot x + 4.33333 $$
Calcola i valori del polinomio tramite la funzione polyval() usando come argomento l'array X
>> polyval(P,X)
Questa funzione ti calcola i valori del polinomio per ogni elemento dell'array X
ans =
5.0476 5.7619 6.4762 7.1905 7.9048 8.6190
Visualizza entrambi i grafici sul diagramma cartesiano tramite la funzione plot()
plot(X,Y,X,polyval(P,X))
La funzione polinomiale di primo grado (lineare) trova una retta che approssima la serie di dati.
Esempio 2
Ora calcola un polinomio di secondo grado che si adatti ai dati
>> P = polyfit(X,Y,2)
Il risultato è
P =
-0.35714 3.21429 1.00000
Sono i coefficienti del polinomio di secondo grado
$$ P_2(x) = -0.35714 \cdot x^2 + 3.21429 x + 1.0 $$
Calcola i valori del polinomio tramite la funzione polyval()
>> polyval(P,X)
Il risultato è un array con i valori del polinomio per ogni elemento dell'array X
ans =
3.8571 6.0000 7.4286 8.1429 8.1429 7.4286
A questo punto visualizza entrambi i grafici sul diagramma cartesiano tramite la funzione plot()
plot(X,Y,X,polyval(P,X))
La funzione polinomiale di secondo grado (linea rossa) si adatta meglio alla serie di dati.
Esempio 3
Infine calcola un polinomio di terzo grado che si adatti ai dati
>> P = polyfit(X,Y,3)
Il risultato della funzione è
P =
0.18519 -2.30159 9.08466 -3.66667
Sono i coefficienti del polinomio di terzo grado
$$ P_3(x) = 0.18519x^3 -2.30159 \cdot x^2 + 9.08466 x - 3.66667 $$
Calcola i valori del polinomio con la funzione polyval()
>> polyval(P,X)
In questo modo ottieni i relativi valori del polinomio per ogni elemento dell'array X
ans =
3.3016 6.7778 7.8730 7.6984 7.3651 7.9841
Visualizza i grafici sul diagramma cartesiano tramite la funzione plot()
plot(X,Y,X,polyval(P,X))
La funzione polinomiale di terzo grado (linea rossa) approssima ancora meglio la serie di dati
In conclusione, man mano che aumenti il grado del polinomio, la funzione polinomiale l'errore di approssimazione si riduce perché il polinomio si adatta meglio alla serie dei dati.