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()
В настоящее время я пытаюсь построить диаграмму бифуркации. В системе уравнений, которые мы используем, a - это управляющий параметр, который мы рисуем для значений от 0 до 1.15 по оси x по сравнению с массивом значений (называемых w) для конкретного значения a. Я не совсем уверен, как строить сюжеты из цикла for, как это. Я слышал, что подзаголовки - лучший способ пойти, но я не знаком с реализацией и могу использовать некоторую помощь. Благодаря!Построение нескольких подсетей на одном графике
Запуск кода прямо сейчас. Взять время, чтобы бежать. В то же время я обычно перемещаю plt.draw() или plt.show() вне цикла. –