I Python
und scipy.integrate.odeint
zu verwenden, versuchen folgendes dynamisches System zu simulieren:Scipy Odein bricht mit diskontinuierlicher Dynamikfunktion, z.B. xdot = -sgn (x)
Aber diese Integration bricht in Python
was zu den folgenden und ähnlichen Bildern (in der Regel auch numerisch schlimmer als diese):
folgend in iPython/Jupyter notebook
generierten mit:
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
%matplotlib inline
f = lambda x,t: -np.sign(x)
x0 = 3
ts = np.linspace(0,10,1000)
xs = odeint(f,x0,ts)
plt.plot(ts,xs)
plt.show()
Irgendwelche Ratschläge, wie man ein solches System mit diskontinuierlicher Dynamik besser simuliert?
Edit # 1:
Beispiel Ergebnis, wenn lief mit kleinem Zeitschritt, ts = np.linspace(0,10,1000000)
, als Antwort auf @ Hun Antwort. Dies ist auch ein falsches Ergebnis gemäß meinen Erwartungen.
Nur hinzufügen, dass ich verschiedene Bilder bei der Ausführung des Codes wiederholen ... –
Auch ausgeführt Python-Version: 2.7.11 –
Ich benutze Python 3.5.1, numpy 1.10.4, scipy 0.17.0. Es hat einfach gut funktioniert, als ich Ihren Code genau wie gezeigt lief. – Hun