[PYTHON] Störungsentwicklung und Simulation Störungsmethode

Was ist die Störungsmethode?

Die Störungsmethode ist eine ungefähre Berechnungsmethode für Gleichungen, die auf dem Gebiet der Physik hoch entwickelt wurde. Mit dieser Lösungsmethode ist es möglich, Differentialgleichungen und partielle Differentialgleichungen, die mit gewöhnlichen Berechnungen schwer zu lösen sind, näherungsweise zu lösen. Wenn das Störungsverfahren in zwei Typen klassifiziert wird, kann es in zwei Typen unterteilt werden: "Störungsproblem" und "spezifisches Störungsproblem". Ersteres kann Schritt für Schritt gelöst werden, es gibt jedoch nur wenige etablierte Lösungen für das Problem der singulären Störung.

In diesem Artikel werde ich die Störungsproblemmethode vorstellen. Die Ergebnisse der Ableitung der Lösung einer einfachen Differentialgleichung und der Durchführung einer numerischen Simulation werden gezeigt.

Nichtlineare normale Differentialgleichung erster Ordnung

\dot{y} + y + \epsilon y^2 =0 \\
s.t.   y(0)=1, \epsilon=o(1)

Es ist bekannt, dass das Lösen nichtlinearer Probleme im Allgemeinen sehr schwierig ist. Hier nehmen wir an, dass $ \ epsilon $ klein genug ist. Einfach ausgedrückt, wenn $ \ epsilon $ klein genug ist, fragen sich einige vielleicht, ob es als 0 behandelt werden sollte. Die Lösung zu diesem Zeitpunkt ist einfach

y=exp(-x)

Kann abgeleitet werden. Ist diese Näherungsberechnung eine gute Näherung?

def sim(time,y=1,e=0.01):
    save=[y]
    dt=0.01*e
    step=int(time/dt)
    for i in range(step):
        y=y-dt*y-e*dt*y**2
        save.append(y)
    return save
y1=sim(2)
a=np.linspace(0,2,len(y1))
y=np.exp(-a)
plt.plot(sim(2),a)
plt.plot(y,a)
plt.show()

result.png

Wie Sie sehen können, unterscheidet es sich nicht wesentlich von der tatsächlichen Verteilung. Diese Näherung wird im Sinne der Störungstheorie als Näherung nullter Ordnung bezeichnet. Um diese Annäherung zu verbessern, führen wir eine Störungsexpansion durch.

y=y_0+\epsilon y_1+\epsilon^2 y_2+...

Auf diese Weise erstellen wir eine progressive Reihe von $ \ epsilon $. Einsetzen in die Differentialgleichung und Lösen bis zur zweiten Ordnung,

y_0=exp(-x)\\
\dot{y_1}+y_1+y_o^2=0\\
y_1=-exp(-x)+exp(-2x)\\
\dot{y_2}+y_2+2y_0y_1=0\\
y_2=exp(-x)-2exp(-2x)+exp(-3x)\\

Simulieren Sie dies.


y1=sim(2)
a=np.linspace(0,2,len(y1))
y=np.exp(-a)
y2=np.exp(-2*a)
y3=np.exp(-3*a)
plt.plot(sim(2),a)
plt.plot(y,a)
plt.plot(y1+(y2-y)*0.01,a)
plt.plot(y1+(y2-y)*0.01+(y-2*y2+y3)*0.0001,a)
plt.savefig("simu")
plt.show()

simu.png

Wie Sie den Ergebnissen entnehmen können, ist es sehr genau.

Fazit

Es ist ersichtlich, dass die Genauigkeit der Approximation erheblich verbessert wird, indem die Approximationsberechnung auf diese Weise durchgeführt wird.

Das nächste Mal werde ich das Problem des mehrjährigen Begriffs vorstellen, bei dem diese ungefähre Berechnung nicht funktioniert, und die singuläre Störungsmethode erläutern.

Recommended Posts

Störungsentwicklung und Simulation Störungsmethode
Methodenüberschreibung und super
Kumulative Summen- und Kartoffelmethode
Prophezeiungstheorie und ihre Simulation (2)
Akustische Simulation FDTD-Methode Ableitung und Implementierung der Mur-Absorptionsgrenze
Ordnungsgemäße Verwendung der Instanzmethode und der Klassenmethode
Normalisierungsmethode (Codierung) und Umkehrung (Decodierung)
Einführung in die Erkennung von Anomalien und Zusammenfassung der Methoden
[Python] Unterschied zwischen Funktion und Methode