Main Content

La traduzione di questa pagina non è aggiornata. Fai clic qui per vedere l'ultima versione in inglese.

polyval

Valutazione polinomiale

Descrizione

esempio

y = polyval(p,x) valuta il polinomio p in ciascun punto di x. L'argomento p è un vettore di lunghezza n+1 i cu elementi sono i coefficienti (in potenze decrescenti) di un polinomio di grado n-esimo:

p(x)=p1xn+p2xn1+...+pnx+pn+1.

I coefficienti polinomiali in p possono essere calcolati per scopi diversi da funzioni come polyint, polyder e polyfit, ma è possibile specificare qualsiasi vettore per i coefficienti.

Per valutare un polinomio in senso matriciale, utilizzare invece polyvalm.

esempio

[y,delta] = polyval(p,x,S) utilizza la struttura di output opzionale S prodotta da polyfit per generare le stime di errore. delta a stima dell'errore standard nella previsione di un'osservazione futura in x da p(x).

esempio

y = polyval(p,x,[],mu) o [y,delta] = polyval(p,x,S,mu) utilizza l'output opzionale mu prodotto da polyfit per centrare e scalare i dati. mu(1) è mean(x) e mu(2) è std(x). Utilizzando questi valori, polyval centra x sullo zero e lo scala per ottenere una deviazione standard unitaria,

x^=xx¯σx.

Questa trasformazione di centratura e scalatura migliora le proprietà numeriche del polinomio.

Esempi

comprimi tutto

Valutare il polinomio p(x)=3x2+2x+1 nei punti x=5,7,9. I coefficienti polinomiali possono essere rappresentati dal vettore [3 2 1].

p = [3 2 1];
x = [5 7 9];
y = polyval(p,x)
y = 1×3

    86   162   262

Valutare l'integrale definito

I=-13(3x4-4x2+10x-25)dx.

Creare un vettore per rappresentare l'integranda polinomiale 3x4-4x2+10x-25. Il termine x3 è assente, quindi ha un coefficiente pari a 0.

p = [3 0 -4 10 -25];

Utilizzare polyint per integrare il polinomio utilizzando una costante di integrazione pari a 0.

q = polyint(p)
q = 1×6

    0.6000         0   -1.3333    5.0000  -25.0000         0

Trovare il valore dell'integrale valutando q ai limiti dell'integrazione.

a = -1;
b = 3;
I = diff(polyval(q,[a b]))
I = 49.0667

Adattare un modello lineare a una serie di punti di dati e tracciare i risultati, compresa una stima di un intervallo di previsione del 95%.

Creare qualche vettore di punti di dati campione (x,y). Utilizzare polyfit per adattare un polinomio di primo grado ai dati. Specificare due output per restituire i coefficienti dell'adattamento lineare nonché la struttura di stima dell'errore.

x = 1:100; 
y = -0.3*x + 2*randn(1,100); 
[p,S] = polyfit(x,y,1); 

Valutare l’adattamento polinomiale di primo grado in p nei punti di x. Specificare la struttura di stima dell'errore come terzo input in modo che polyval calcoli una stima dell’errore standard. La stima dell'errore standard è restituita in delta.

[y_fit,delta] = polyval(p,x,S);

Tracciare i dati originali, l'adattamento lineare e l'intervallo di previsione del 95% y±2Δ.

plot(x,y,'bo')
hold on
plot(x,y_fit,'r-')
plot(x,y_fit+2*delta,'m--',x,y_fit-2*delta,'m--')
title('Linear Fit of Data with 95% Prediction Interval')
legend('Data','Linear Fit','95% Prediction Interval')

Figure contains an axes object. The axes object with title Linear Fit of Data with 95% Prediction Interval contains 4 objects of type line. One or more of the lines displays its values using only markers These objects represent Data, Linear Fit, 95% Prediction Interval.

Creare una tabella di dati sulla popolazione per gli anni 1750-2000 e tracciare i punti di dati.

year = (1750:25:2000)';
pop = 1e6*[791 856 978 1050 1262 1544 1650 2532 6122 8170 11560]';
T = table(year, pop)
T=11×2 table
    year       pop   
    ____    _________

    1750     7.91e+08
    1775     8.56e+08
    1800     9.78e+08
    1825     1.05e+09
    1850    1.262e+09
    1875    1.544e+09
    1900     1.65e+09
    1925    2.532e+09
    1950    6.122e+09
    1975     8.17e+09
    2000    1.156e+10

plot(year,pop,'o')

Figure contains an axes object. The axes contains a line object which displays its values using only markers.

Utilizzare polyfit con tre output per adattare un polinomio di 5° grado utilizzando la centratura e la scalatura, che migliorano le proprietà numeriche del problema. polyfit centra i dati in year sullo 0 e li scala in modo da ottenere una deviazione standard di 1, che evita una matrice di Vandermonde mal condizionata nel calcolo dell’adattamento.

[p,~,mu] = polyfit(T.year, T.pop, 5);

Utilizzare polyval con quattro input per valutare p con gli anni scalati (year-mu(1))/mu(2). Tracciare i risultati rispetto agli anni originali.

f = polyval(p,year,[],mu);
hold on
plot(year,f)
hold off

Figure contains an axes object. The axes object contains 2 objects of type line. One or more of the lines displays its values using only markers

Argomenti di input

comprimi tutto

Coefficienti polinomiali, specificati come vettore. Ad esempio, il vettore [1 0 1] rappresenta il polinomio x2+1 e il vettore [3.13 -2.21 5.99] rappresenta il polinomio 3.13x22.21x+5.99.

Per maggiori informazioni, vedere Create and Evaluate Polynomials.

Tipi di dati: single | double
Supporto numeri complessi:

Punti di query, specificati come vettore. polyval valuta il polinomio p nei punti di x e restituisce i corrispondenti valori della funzione in y.

Tipi di dati: single | double
Supporto numeri complessi:

Struttura di stima dell’errore. Questa struttura è un output opzionale di [p,S] = polyfit(x,y,n) che può essere utilizzato per ottenere le stime di errore. S contiene i seguenti campi:

CampoDescrizione
RFattore triangolare da una decomposizione QR della matrice di Vandermonde di x
dfGradi di libertà
normrNorma dei residui

Se i dati in y sono casuali, una stima della matrice di covarianza di p è (Rinv*Rinv')*normr^2/df, dove Rinv è l’inverso di R.

Valori di centratura e scalatura, specificati come vettore a due elementi. Questo vettore è un output opzionale di [p,S,mu] = polyfit(x,y,n) che viene utilizzato per migliorare le proprietà numeriche dell'adattamento e della valutazione del polinomio p. Il valore mu(1) è mean(x) e mu(2) è std(x). Questi valori sono utilizzati per centrare i punti di query in x su zero con deviazione standard unitaria.

Specificare mu per valutare p nei punti scalati, (x - mu(1))/mu(2).

Argomenti di output

comprimi tutto

Valori della funzione, restituiti come vettore della stessa grandezza dei punti di query x. Il vettore contiene il risultato della valutazione del polinomio p in ciascun punto di x.

Errore standard per la previsione, restituito come vettore della stessa grandezza dei punti di query x. In generale, un intervallo di y ± Δ corrisponde a un intervallo di previsione di circa il 68% per le osservazioni future di campioni di grandi dimensioni e y ± 2Δ corrisponde a un intervallo di previsione di circa il 95%.

Se i coefficienti in p sono stime ai minimi quadrati calcolate da polyfit e gli errori nei dati input in polyfit sono indipendenti, normali e con varianza costante, allora y ± Δ è un intervallo di previsione di almeno il 50%.

Funzionalità estese

Generazione di codice C/C++
Genera codice C e C++ con MATLAB® Coder™.

Cronologia versioni

Introduzione prima di R2006a