Hier wollen wir die Parameter bestimmen, indem wir die experimentellen Daten aus dem Zustand anpassen, der in der txt- oder dat-Datei erhalten wurde. Um die Funktion unabhängig davon zu verwenden, ob sie linear oder nicht linear ist, verwenden wir ein Modul namens kurven_fit, das Teil des Moduls scipy.optimize ist, das im Python scipy-Paket enthalten ist.
Laden Sie zunächst das gewünschte Modul.
#Erforderlich für die Montage
from scipy.optimize import curve_fit
import numpy as np
#Zur Veranschaulichung erforderlich
import matplotlib.pyplot as plt
Versuchen Sie, die folgenden Daten anzupassen.
x = np.asarray([1,2,4,6,7])
y = np.asarray([1,3,3,5,4])
plt.scatter(x, y, c='k')
plt.show()
Definieren Sie die zu montierende Funktionsform und führen Sie die Anpassung tatsächlich durch.
#Definieren Sie den Funktionsausdruck, den Sie anpassen möchten. Hier ist eine lineare Funktion.
def linear_fit(x, a, b):
return a*x + b
#Montage durchführen.
#prameter_initial = np.array([1,2])← Stellen Sie hier den Anfangswert ein, überspringen Sie ihn hier.
popt, pcov = curve_fit( linear_fit, x, y)#, p0= prameter_initial)
Bisher wurde eine Anpassung durchgeführt, und die Ergebnisse der Parameter a und b werden im ersten Rückgabewert popt gespeichert. Dieses Mal sind die beiden Parameter der Steigung a und des Abschnitts b der linearen Funktion in popt enthalten als [a, b] = [popt [0], popt [1]]. Überprüfen Sie den Wert.
print (popt[0],popt[1])
Vielleicht finden Sie a = 0,4999 ..., b = 1,2000 ... Plot überlagert, um zu sehen, ob dieser Wert gültig ist. Es sieht nicht gut aus.
c=popt[0]
d=popt[1]
f = c*x + d #f = linear_fit(x,popt[0],popt[1])Oder f= linear_fit(x,*popt)Aber ok.
plt.scatter(x, y, c='k')
plt.plot(x, f, c='r')
plt.show()
Laden Sie ebenfalls das gewünschte Modul.
#Erforderlich für die Montage
from scipy.optimize import curve_fit
import numpy as np
#Zur Veranschaulichung erforderlich
import matplotlib.pyplot as plt
Versuchen Sie, die folgenden Daten anzupassen.
x = np.asarray([1,2,2.5,4,5,6,7,8,9,10])
y = np.asarray([10,8,5,2,1,1.2,2.5,5,7,10])
plt.scatter(x, y, c='k')
plt.show()
Definieren Sie die zu montierende Funktionsform und führen Sie die Anpassung tatsächlich durch.
#Definieren Sie den Funktionsausdruck, den Sie anpassen möchten. Hier ist eine quadratische Funktion.
def two_fit(x,a,b):
return a*(x-b)**2
#Montage durchführen. Der Anfangswert wird ebenfalls eingestellt.
prameter_initial = np.array([1,5])
popt, pcov = curve_fit(two_fit, x, y, p0= prameter_initial)
Bisher wurde eine Anpassung durchgeführt, und die Ergebnisse der Parameter a und b werden im ersten Rückgabewert popt gespeichert. Dieses Mal sind die beiden Parameter der Steigung a und des Abschnitts b der linearen Funktion in popt enthalten als [a, b] = [popt [0], popt [1]]. Überprüfen Sie den Wert.
print (popt[0],popt[1])
Vielleicht finden Sie a = 0.5404046977156955, b = 5.48472528172034. Plot überlagert, um zu sehen, ob dieser Wert gültig ist. Obwohl in der linearen Funktion nicht erläutert, gibt es derzeit zwei Methoden zum Zeichnen. Versuchen Sie zunächst die gleiche Methode wie für die lineare Funktion.
c=popt[0]
d=popt[1]
f = c*(x-d)**2 #f = two_fit(x,popt[0],popt[1])#Sie können so schreiben, f= two_fit(x,*popt)Aber ok.
plt.scatter(x, y, c='k')
plt.plot(x, f, c='r')
plt.show()
Ich wusste nicht, wann es eine lineare Funktion war, aber Sie können sehen, dass es ruckelt. Wenn es viele Daten gibt, stört mich das nicht, aber ich mag das Aussehen nicht, deshalb schreibe ich es als zweite Methode reibungslos.
#Angeben des Zeichenbereichs
# x1 = np.arange(x-Achse Minimum,Maximalwert auf der x-Achse,Eingekerbt)
x1 = np.arange(1, 10, 0.000001)
c=popt[0]
d=popt[1]
f = c*(x1-d)**2
plt.scatter(x, y, c='k')
plt.plot(x1, f, c='r')
plt.show()
Es fühlt sich schön und glatt an. Erstellen Sie x1 als Zeichenbereich und verfeinern Sie die Schritte. Nachdem wir die grundlegende Anpassungs- und Zeichenmethode kennen, werden wir endlich die experimentellen Daten der txt-Datei und der dat-Datei lesen und die Anpassung durchführen.
Lesen Sie abschließend die Daten aus der txt-Datei und der dat-Datei, führen Sie die Anpassung durch und bestimmen Sie die Parameter. Ich werde den ganzen Code ganz am Ende setzen.
Recommended Posts