Brusselator model
を超えるか否かでダイナミクスが変化するらしい
hopf 分岐の現象の例を理解する上で良い。
Euler methodでモデルする。
======================
import numpy as np
import matplotlib.pyplot as plt
import random
import time
import matplotlib.animation as animation
def main():
time_start = time.time()
fig, ax = plt.subplots(figsize=(10,10))
def f(x,y):
a = 1;
b = 2.5
dt = T / N
x_diff = a + x ** 2 * y - b * x - x
y_diff = b * x - x ** 2 * y
return (dt * x_diff, dt * y_diff)
ims = []
x = np.random.random(100)
y = np.random.random(100)
T = 10 * 20
N = 10000 * 5
for i in range(N):
dx, dy = f(x, y)
x, y = x + dx, y + dy
if i % 100 == 0:
im1 = ax.plot(x,y,color = "red",linestyle = "None",marker = "o")
ims.append(im1)
ani = animation.ArtistAnimation(fig,ims,interval = 10)
ax.set_aspect("equal")
time_end = time.time()
plt.show()
print(time_end - time_start)
if __name__ == '__main__':
main()
========================