Contenuto principale

polyval

R2026b

Valutazione polinomiale

Descrizione

y = polyval(coeffs,x) calcola il polinomio definito dal vettore dei coefficienti coeffs in ciascun punto di x. Il vettore coeffs ha lunghezza n+1 e contiene i coefficienti di grado n di un polinomio p in ordine decrescente di potenza:

p(x)=coeffs(1)⋅xn+coeffs(2)⋅xn−1+...+coeffs(n)⋅x+coeffs(n+1).

I coefficienti polinomiali in coeffs 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(coeffs,x,fitStats) utilizza la struttura di output opzionale fitStats prodotta da polyfit per generare le stime di errore. delta a stima dell'errore standard nella previsione di un'osservazione futura in x da coeffs(x).

esempio

y = polyval(coeffs,x,[],centerScale) o [y,delta] = polyval(coeffs,x,fitStats,centerScale) valuta il polinomio nei punti normalizzati x−centerScale(1)centerScale(2), dove centerScale è prodotto da polyfit. Utilizzare la seconda sintassi per valutare un polinomio adattato e calcolare le stime di errore, con coefficienti, statistiche di adattamento e parametri di normalizzazione ottenuti da polyfit.

esempio

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].

coeffs = [3 2 1];
x = [5 7 9];
y = polyval(coeffs,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.

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

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

q = polyint(coeffs)
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 = 0:100; 
y = -0.3*x + 2*randn(1,101); 
[coeffs,fitStats] = polyfit(x,y,1);

Valutare il polinomio di primo grado nei punti in 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.

[yfit,delta] = polyval(coeffs,x,fitStats);

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

plot(x,y,"o")
hold on
plot(x,yfit)

xinterval = [x flip(x)];
yinterval = [yfit-2*delta flip(yfit)+2*delta];
interval = fill(xinterval,yinterval,"yellow",FaceAlpha=0.2);

legend("Sample data","First-degree polynomial","95% prediction interval")
hold off

Figure contains an axes object. The axes object contains 3 objects of type line, patch. One or more of the lines displays its values using only markers These objects represent Sample data, First-degree polynomial, 95% prediction interval.

Creare dei dati campione sulla popolazione per gli anni dal 1750 al 2000 e tracciare i punti dati.

x = 1750:25:2000;
y = 1e6*[791 856 978 1050 1262 1544 1650 2532 6122 8170 11560];

Utilizzare polyfit per adattare un polinomio di quinto grado ai dati. È possibile migliorare il condizionamento numerico normalizzando il vettore di query prima di adattare un polinomio. Questo esempio normalizza i dati year e calcola un adattamento polinomiale di quinto grado. La funzione restituisce inoltre la centratura e la scalatura utilizzate per la normalizzazione.

[coeffsNorm,~,centerScale] = polyfit(x,y,5,Normalize=true);

Normalizzare i punti di query utilizzando lo stesso valore di centratura e scalatura, quindi valutare il polinomio specificando centerScale quando si chiama la funzione polyval. Quindi, tracciare i risultati.

yfit = polyval(coeffsNorm,x,[],centerScale);

plot(x,y,"o")
hold on
plot(x,yfit)
legend("Sample data","Fifth-degree polynomial")
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 These objects represent Sample data, Fifth-degree polynomial.

Argomenti di input

comprimi tutto

Coefficienti polinomiali, specificati come vettore. coeffs ha lunghezza n+1 e contiene i coefficienti polinomiali in ordine decrescente di potenza, dove il grado del polinomio è n. Ad esempio, il vettore [1 0 1] rappresenta il polinomio x2+1.

I coefficienti polinomiali in coeffs possono essere calcolati per funzioni come polyint, polyder e polyfit, ma è possibile specificare qualsiasi vettore per i coefficienti. Per maggiori informazioni, vedere Creazione e valutazione dei polinomi.

Tipi di dati: double | single
Supporto numeri complessi: Sì

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

Tipi di dati: double | single
Supporto numeri complessi: Sì

Statistiche di adattamento, specificate come struttura restituita da polyfit. La struttura fitStats deve contenere questi campi.

CampoDescrizione
RFattore triangolare R (eventualmente permutato) da una decomposizione QR della matrice di Vandermonde di x
dfGradi di libertà dell'adattamento
normrNorma euclidea dei residui

rsquared (da R2024a)

Coefficiente di determinazione (R-quadrato non aggiustato)

Valori di centratura e scalatura utilizzati per normalizzare i punti di query in x prima di valutare il polinomio, specificati come vettore a due elementi.

Se si utilizza polyfit con Normalize=true per calcolare i coefficienti polinomiali, specificare centerScale quando si chiama polyval per normalizzare i punti di query alla stessa centratura e alla stessa scalatura.

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 coeffs 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 coeffs 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

espandi tutto

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

Generazione di codice GPU
Genera codice CUDA® per GPU NVIDIA® con GPU Coder™.

Cronologia versioni

Introduzione prima di R2006a