from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
import math
from scipy.integrate import odeint
from scipy.fftpack import fft, ifft
def pend(y, t, a, b, ohm):
theta, omega, phi = y
dydt = [omega, -b*omega-np.sin(theta)-a*np.cos(phi), ohm]
return dydt
b = 1.0/2.0 #beta
ohm = 2.0/3.0 #capital Omega
period = 2.0*math.pi/ohm #driving period
t0 = 0.0 #initial time
t = np.linspace(t0,t0+period*10**3,10**3+1) #time for Poincare map
theta0 = 0.75
omega0 = 1.6
phi0 = 0.8
y0 = [theta0,omega0,phi0] #initial conditions
N = 100 #number of transient points to delete
a_array = np.linspace(0,1.15,50) #varying parameter of a values
for a in a_array:
sol = odeint(pend,y0,t,args=(a,b,ohm)) #numerical integration of differential equation
sol = sol[N:10**3-N] #removing transients
w = sol[:,1] #frequency
A = np.full(len(w),a) #array of a-values
plt.plot(A, w)
plt.draw()
Ich versuche derzeit, ein Bifurkationsdiagramm zu erstellen. In dem von uns verwendeten Gleichungssystem ist a der Steuerparameter, den wir für Werte zwischen 0 und 1,15 auf der X-Achse im Vergleich zu einem Array von Werten (genannt w) für einen bestimmten Wert von a zeichnen. Ich bin mir nicht wirklich sicher, wie ich Dinge aus einer For-Schleife wie dieser plotten soll. Ich habe gehört, dass Subplots der beste Weg sind, aber ich bin mit der Implementierung nicht vertraut und könnte Hilfe gebrauchen. Vielen Dank!Plotten mehrerer Unterplots auf demselben Diagramm
Lauf jetzt Ihren Code. Eine Weile dauern, um zu laufen. In der Zwischenzeit verschiebe ich normalerweise die plt.draw() oder plt.show() außerhalb der Schleife. –