Hauptinhalt

polyval

R2026b

Polynomiale Auswertung

Beschreibung

y = polyval(coeffs,x) wertet das durch den Koeffizientenvektor coeffs definierte Polynom bei jedem Punkt von x aus. Der Vektor coeffs hat die Länge n+1 und enthält die Koeffizienten eines Polynoms p n-ten Grades nach Potenz in absteigender Reihenfolge:

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

Die polynomialen Koeffizienten in coeffs können von Funktionen wie polyint, polyder und polyfit für verschiedene Zwecke berechnet werden, Sie könne jedoch beliebige Vektoren für die Koeffizienten angeben.

Um ein Polynom im Sinne einer Matrix auszuwerten, verwenden Sie stattdessen polyvalm.

Beispiel

[y,delta] = polyval(coeffs,x,fitStats) verwendet die optionale Ausgabestruktur fitStats, die von polyfit erzeugt wird, um Fehlerschätzungen zu generieren. delta ist eine Schätzung des Standardfehlers bei der Prognose einer zukünftigen Beobachtung bei x von coeffs(x).

Beispiel

y = polyval(coeffs,x,[],centerScale) oder [y,delta] = polyval(coeffs,x,fitStats,centerScale) werten das Polynom an den normalisierten Punkten x−centerScale(1)centerScale(2) aus, wobei centerScale durch polyfit erzeugt wird. Verwenden Sie die zweite Syntax, um ein angepasstes Polynom auszuwerten und Fehlerschätzungen zu berechnen. Hierbei werden die von polyfit übernommenen Koeffizienten, Anpassungsstatistiken und Normalisierungsparameter berücksichtigt.

Beispiel

Beispiele

alle reduzieren

Werten Sie das Polynom p(x)=3x2+2x+1 an den Punkten x=5,7,9 aus. Die polynomialen Koeffizienten können durch den Vektor [3 2 1] dargestellt werden.

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

    86   162   262

Auswerten des definiten Integrals

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

Erstellen Sie einen Vektor zur Darstellung des polynomialen Integranden 3x4-4x2+10x-25. Der Term x3 fehlt und hat dementsprechend einen Koeffizienten von 0.

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

Verwenden Sie polyint, um das Polynom mit einer Integrationskonstante gleich 0 zu integrieren.

q = polyint(coeffs)
q = 1×6

    0.6000         0   -1.3333    5.0000  -25.0000         0

Finden Sie den Wert des Integrals, indem Sie q an den Grenzwerten der Integration auswerten.

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

Passen Sie ein lineares Modell an einen Satz von Datenpunkten an und plotten Sie die Ergebnisse. Berücksichtigen Sie dabei eine Schätzung eines 95%-Vorhersageintervalls.

Erstellen Sie einige Vektoren aus Stichprobendatenpunkten (x, y). Verwenden Sie polyfit, um ein Polynom ersten Grades an die Daten anzupassen. Geben Sie zwei Ausgaben an, um die Koeffizienten für die lineare Anpassung und die Fehlerschätzstruktur zurückzugeben.

x = 0:100; 
y = -0.3*x + 2*randn(1,101); 
[coeffs,fitStats] = polyfit(x,y,1);

Werten Sie das Polynom 1. Grades an den Punkten in x aus. Geben Sie die Fehlerschätzstruktur als dritte Eingabe an, sodass polyval eine Schätzung des Standardfehlers berechnet. Die Standardfehlerschätzung wird in delta zurückgegeben.

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

Plotten Sie die Originaldaten, die lineare Anpassung und das 95%-Vorhersageintervall 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.

Erstellen Sie eine Tabelle mit den Stichproben-Populationsdaten für die Jahre 1750 bis 2000 und plotten Sie die Datenpunkte.

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

Passen Sie mithilfe von polyfit ein Polynom 5. Grades an die Punkte an. Sie können die numerische Konditionierung verbessern, indem Sie vor dem Anpassen des Polynoms den Abfragevektor normalisieren. In diesem Beispiel werden die year-Daten normalisiert und es wird ein angepasstes Polynom 5. Grades berechnet. Die Funktion gibt außerdem die für die Normalisierung verwendeten Mittel- und Skalierungswerte zurück.

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

Normalisieren Sie die Abfragepunkte mit derselben Mitte und Skalierung und werten Sie das Polynom anschließend aus, indem Sie beim Aufrufen der polyval-Funktion centerScale angeben. Plotten Sie dann die Ergebnisse.

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.

Eingabeargumente

alle reduzieren

Polynomiale Koeffizienten, angegeben als Vektor. coeffs hat die Länge n+1 und enthält die polynomialen Koeffizienten nach Potenz in absteigender Reihenfolge, wobei der polynomiale Grad n ist. Beispielsweise stellt der Vektor [1 0 1] das Polynom x2+1 dar.

Die polynomialen Koeffizienten in coeffs können von Funktionen wie polyint, polyder und polyfit berechnet werden, Sie können jedoch beliebige Vektoren für die Koeffizienten angeben. Weitere Informationen finden Sie unter Erstellen und Auswerten von Polynomen.

Datentypen: double | single
Unterstützung komplexer Zahlen: Ja

Abfragepunkte, angegeben als Vektor. polyval wertet das Polynom coeffs an den Punkten in x aus und gibt die entsprechenden Funktionswerte in y zurück.

Datentypen: double | single
Unterstützung komplexer Zahlen: Ja

Anpassungsstatistiken, angegeben als von polyfit zurückgegebene Struktur. Die fitStats-Struktur muss diese Felder enthalten.

FeldBeschreibung
RDreiecksfaktor R (möglicherweise permutiert) aus einer QR-Zerlegung der Vandermonde-Matrix von x
dfFreiheitsgrad der Anpassung
normrEuklidische Norm des Residuums

rsquared (seit R2024a)

Bestimmtheitskoeffizient (nicht angepasstes R-Quadrat)

Mittel- und Skalierungswerte zum Normalisieren der Abfragepunkte in x vor Auswertung des Polynoms, zurückgegeben als Vektor mit zwei Elementen.

Wenn Sie zum Berechnen der polynomialen Koeffizienten polyfit mit Normalize=true verwenden, geben Sie beim Aufrufen von polyval centerScale an, um die Abfragepunkte mit derselben Mitte und Skalierung zu normalisieren.

Ausgabeargumente

alle reduzieren

Funktionswerte, zurückgegeben als Vektor mit derselben Größe wie die Abfragepunkte x. Der Vektor enthält das Ergebnis einer Auswertung des Polynoms coeffs bei jedem Punkt in x.

Standardfehler der Prognose, zurückgegeben als Vektor mit derselben Größe wie die Abfragepunkte x.

Im Allgemeinen entspricht ein Intervall von y ± Δ etwa einem 68-prozentigen Prognoseintervall für zukünftige Beobachtungen großer Stichproben und y ± 2Δ einem 95-prozentigen Prognoseintervall.

Wenn es sich bei den Koeffizienten in coeffs um Kleinste-Quadrat-Schätzungen handelt, die von polyfit berechnet wurden und die Fehler in der Dateneingabe für polyfit unabhängig, normal und konstantvariant sind, ist y ± Δ ein mindestens 50-prozentiges Prognoseintervall.

Erweiterte Fähigkeiten

alle erweitern

C/C++ Codegenerierung
Generieren Sie C und C++ Code mit MATLAB® Coder™.

GPU-Codegenerierung
Generieren von CUDA® Code für NVIDIA® Grafikprozessoren mit dem GPU Coder™.

Versionsverlauf

Eingeführt vor R2006a