Схема Чуа с использованием python и графики - PullRequest
0 голосов
/ 09 апреля 2020

Я пытался внедрить систему Chua, используя Python. Но график сильно отличается от того, что нам нужно. Реализация с такой системой введите описание изображения здесь Я нигде не нашел на Inte rnet и пытался сделать это сам. Но в python у меня все еще мало опыта. что я получаю что нужно

    import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

a,b,e,x2=2.8,3,0.03,9
def f(y, t):
 y1, y2, y3 = y
 return [(-a/b)*(y2-y1),
 (-1/b)*((y2-y1)+y3)+(e/b)*(x2-y2),
         (b*y2)]

t = np.linspace(0,20,2001)
y0 = [1, -1, 10]
[y1,y2,y3]=odeint(f, y0, t, full_output=False).T
fig = plt.figure(facecolor='white') 
ax=Axes3D(fig)
ax.plot(y1,y2,y3,linewidth=2)
plt.xlabel('y1')
plt.ylabel('y2')
plt.title("primary: y0 = [1, -1, 10]")
y0 = [1.0001, -1, 10]
[y1,y2,y3]=odeint(f, y0, t, full_output=False).T
fig = plt.figure(facecolor='white') 
ax=Axes3D(fig)
ax.plot(y1,y2,y3,linewidth=2)
plt.xlabel('y1')
plt.ylabel('y2')
plt.title("primary: y0 = [1.0001, -1, 10]")
plt.show()

1 Ответ

0 голосов
/ 14 апреля 2020

Поскольку я не очень хорошо знаю осциллятор Чуа и, если я не ошибаюсь, я предположил, что в определении вашей системы ODE просто ошибка.

Просто на основе википедии engli sh страница Схема Чуа . Похоже, вы не смогли предоставить выражение функции f, описывающей электрический отклик нелинейного резистора. Итак, начиная с заданных уравнений и выражения f, вот моя попытка с odeint:

import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# parameters
alpha = 15.395
beta = 28
R = -1.143
C_2 = -0.714

def chua(u, t):
    x, y, z = u  
    # electrical response of the nonlinear resistor
    f_x = C_2*x + 0.5*(R-C_2)*(abs(x+1)-abs(x-1))
    dudt = [alpha*(y-x-f_x), x - y + z, -beta * y]
    return dudt

# time discretization
t_0 = 0
dt = 1e-3
t_final = 300
t = np.arange(t_0, t_final, dt)

# initial conditions
u0 = [0.1,0,0]
# integrate ode system
sol = odeint(chua, u0, t)

# 3d-plot
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')

ax.plot(sol[:,0],sol[:,1],sol[:,2])

, которая дает предполагаемое поведение хаоти c в 3d:

chaotic_chua

и это хорошее время эволюции в плоскости xy:

chua_gif

Надеюсь, это поможет решить вашу проблему с вашим собственным набором параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...