= 0
xmin = 5
xmax = np.linspace(xmin, xmax, 100)
x
= 25
ni
# x-Werte mit leichtem Rauschen
= np.linspace(xmin, xmax, ni) + 0.2*(2 * np.random.random(ni) -1)
xi
# y(x) = 2x+0.5 mit leichtem Rauschen
= 2*xi + 0.5 + 2*(2 * np.random.random(ni) -1)
yi
='C1')
plt.scatter(xi, yi, color plt.grid()
25 Fitting
Beim Fitting wird eine Modellfunktion gesucht, weche die Messdaten nicht unbedingt exakt abbildet. Wird ein Polynom verwendet, so hat es eine Grad, welcher deutlich kleiner ist, als die Anzahl der Messpunkte. Lineare Regression ist ein Beispiel für ein Fitting durch ein Polynom mit dem Grad Eins.
Zum Fitten durch ein Polynom kann die Funktion np.polyfit
verwendet werden, genauso wie bei der Polynominterpolation. Diesmal jedoch mit einem kleineren Polynomgrad.
Im folgenden Beispiel werden zunächst Modelldaten generiert und dann mit entsprechenden Polynomen gefittet.
= np.polyfit(xi, yi, 1)
P1
='C1', zorder=3, label='Messpunkte')
plt.scatter(xi, yi, color='C0', label="Modellfunktion")
plt.plot(x, np.polyval(P1, x), color
plt.grid() plt.legend()
# x-Werte mit leichtem Rauschen
= np.linspace(xmin, xmax, ni) + 0.2*(2 * np.random.random(ni) -1)
xi
# y(x) = 2x+0.5 mit leichtem Rauschen
= (xi - 2)**2 -2*xi + 2.5 + 2*(2 * np.random.random(ni) -1) yi
= np.polyfit(xi, yi, 1)
P1 = np.polyfit(xi, yi, 2)
P2
='C1', zorder=3, label='Messpunkte')
plt.scatter(xi, yi, color='C0', label="Modellfunktion, Grad 1")
plt.plot(x, np.polyval(P1, x), color='C2', label="Modellfunktion, Grad 2")
plt.plot(x, np.polyval(P2, x), color
plt.grid()
plt.legend() plt.show()