引言:
非线性动力学在众多领域中都得到了较广泛的应用,但各领域研究方向有所不同。在论文中如果涉及到方程的非线性,总会需要定性的分析一下,由于方法比较类似,所以常常也可以参阅别的领域的非线性分析相关的方法或者好看的绘图方式。这篇博客主要讲怎么绘制分岔图,顺便也提了一下怎么绘制庞加莱截面。
动态系统的稳定性【2】-庞加莱截面与分岔图
- 1.庞加莱截面可以用来干啥?
- 1.1 周期性的运动
- 1.2 准周期运动
- 1.3 混沌状态
- 后记
- 参考资料
1.庞加莱截面可以用来干啥?
其实,光看理论讲解,很难明白庞加莱截面的物理意义,参考这篇博文可知,其意义主要在于:
由庞加莱截面分析可得到关于运动特性的信息。 如不考虑初始阶段的暂态过渡过程,只考虑Poincare截面的稳态图像,当Poincare截面上只有一个不动点和少数离散点时,可判定运动是周期的;当Poincare截面上是一封闭曲线时,可判定运动是准周期的;当Poincare截面上是成片的密集点,且有层次结构时,可判定运动处于混沌状态。
1.1 周期性的运动
这是一个阻尼从动摆的实例:
import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt# Define the differential equation for the damped driven pendulum
def damped_driven_pendulum(t, y, q, omega_d, F_d):theta, omega = ydydt = [omega, -q * omega - np.sin(theta) + F_d * np.sin(omega_d * t)]return dydt# Set the parameters
q = 0.5 # Damping coefficient
omega_d = 2/3 # Driving frequency
F_d = 1.4 # Amplitude of the driving force# Set the initial conditions
y0 = [0, 0.5] # Initial angle and angular velocity# Solve the differential equation for the damped driven pendulum
sol = solve_ivp(lambda t, y: damped_driven_pendulum(t, y, q, omega_d, F_d), [0, 1000], y0, t_eval=np.linspace(0, 1000, 10000))# Define the Poincaré section (e.g., where angular velocity is 0)
poincare_section_indices = [i for i in range(len(sol.y[1]) - 1) if sol.y[1][i] * sol.y[1][i + 1] < 0]# Plot the Poincaré map
plt.plot(sol.y[0][poincare_section_indices], sol.y[1][poincare_section_indices], 'b.')
plt.xlabel('Angle (theta)')
plt.ylabel('Angular Velocity (omega)')
plt.title('Poincaré Map for Damped Driven Pendulum')
plt.show()
可视化结果如下:
1.2 准周期运动
耦合非线性振荡器系统
import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt# Define the differential equations for the coupled nonlinear oscillators
def coupled_nonlinear_oscillators(t, y, alpha, beta, gamma, delta):x, y, z = ydxdt = alpha * (y - x)dydt = x * (beta - z) - ydzdt = x * y - gamma * z + deltareturn [dxdt, dydt, dzdt]# Set the parameters
alpha = 1.2
beta = 0.6
gamma = 1.0
delta = 0.8# Set the initial conditions
y0 = [0.1, 0.2, 0.3] # Initial values for the variables x, y, and z# Solve the differential equations for the coupled nonlinear oscillators
sol = solve_ivp(lambda t, y: coupled_nonlinear_oscillators(t, y, alpha, beta, gamma, delta), [0, 100], y0, t_eval=np.linspace(0, 100, 500))# Visualize the Poincaré surface section
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(sol.y[0], sol.y[1], sol.y[2], c='b', s=1)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('Poincaré Surface Section for Coupled Nonlinear Oscillators')
plt.show()
结果如下:
1.3 混沌状态
洛伦兹系统
import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D# Define the differential equations for the Lorenz system
def lorenz_system(t, y, sigma, rho, beta):x, y, z = ydxdt = sigma * (y - x)dydt = x * (rho - z) - ydzdt = x * y - beta * zreturn [dxdt, dydt, dzdt]# Set the parameters
sigma = 10
rho = 28
beta = 8/3# Set the initial conditions
y0 = [1, 1, 1] # Initial values for the variables x, y, and z# Solve the differential equations for the Lorenz system
sol = solve_ivp(lorenz_system, [0, 100], y0, args=(sigma, rho, beta), t_eval=np.linspace(0, 100, 10000))# Visualize the Poincaré surface section
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(sol.y[0], sol.y[1], sol.y[2], c='b', s=1)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('Poincaré Surface Section for the Lorenz System')
plt.show()
后记
当然,庞加莱截面分析系统的稳定性可能并不准确,正如文献【2】中所说的。
- 朱利安·克林顿·斯普罗特(威斯康星大学麦迪逊分校物理系): 如果基础系统是三维的,则轨道重复穿过的任何部分都应该适合区分周期、准周期和混沌轨道的预期目的。选择是任意的。常见的选择是其中一个变量为零或包含一个或多个平衡点的平面,或者在驱动相位恒定的周期性驱动系统的情况下。然而,请注意,周期轨道的周期并不是唯一定义的,因为点的数量通常取决于选择的部分。另请注意,许多人展示并称为“庞加莱截面”的图实际上是吸引子的横截面,因为他们在两个方向上绘制了交叉点,因此它的点数是实际庞加莱截面的两倍,其中只有交叉点沿一个方向绘制。有时两个方向的交叉点用不同的颜色绘制。如果您的系统具有三个以上的变量,则庞加莱部分的用处不大,因为需要约束多个变量才能获得区分各种类型动力学的二维图,并且点的积累可能会非常缓慢。
- 马丁·罗莎莉(佩皮尼昂大学)
我应该如何选择庞加莱截面?要选择庞加莱截面,您还必须考虑解决方案的边界环面的结构 [1,2]。就你的情况而言,如果我理解得很好,它是循环的。那么,这是最简单的情况,您只需要一个单分量庞加莱部分,就像我们研究罗斯勒系统一样 [3]。在本文中,您还有使用二分量或四分量庞加莱部分的其他示例。需要这些庞加莱截面来区分周期、准周期运动并获得周期轨道。最后,为了放置庞加莱部分,我建议您使用固定/稳定点,就像我们在[3]中所做的那样。TD Tsankov 和 R. Gilmore,奇异吸引子按边界环面分类,物理学。牧师快报,91(13), 134104 (2003)。TD Tsankov 和 R. Gilmore,R^3 中混沌吸引子结构的拓扑方面,物理学。修订版 E,69,056206 (2004)。M. Rosalie 和 C. Letellier,走向从高属环面边界的混沌吸引子中提取模板的一般程序,Int。 J. 分叉混沌 24, 1450045 (2014)
在一些手稿中,研究人员通过(x轴=位移,y轴=速度)绘制庞加莱图,这怎么可能?他们的工作中庞加莱部分在哪里?
在他们的工作中,这些研究人员可能使用(x = 位移,y = 速度,z = 加速度)在 3D 空间中工作。如果他们选择由 z=0 或其他值定义的庞加莱截面,则庞加莱截面是平面 (x,y)。我认为他们已经在论文中指出了用于绘制庞加莱部分的值。
PS: 此外,也是第一次明白电路中也有很多的混沌现象,见文献【3】,但我记得当时在研二上机械原理课程的时候,当时一个挺厉害的交大教授说非线性的东西和发展目前已经几乎限于停滞了,因为只能定性分析非线性系统的部分行为和特点,意义并不大,作为一所工科院校,应该是需要应用落地导向的,很难出成果。。 虽然这几年,由于国家导向,学术界又开始流行做基础研究了。。只要神乎其神,就好发文章。。
参考资料
【1】csdn-非线性可视化(4)庞加莱截面
【2】Researchgate-如何使用庞加莱截面来寻找周期和准周期解?
【3】Elegant Circuits: Simple Chaotic Oscillators