news 2026/7/17 4:15:52

行星齿轮非线性程序:相图、庞加莱与分叉图

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
行星齿轮非线性程序:相图、庞加莱与分叉图

行星齿轮非线性程序,能出相图,庞加莱,分叉图。

行星齿轮系统这玩意儿搞动力学分析,满屏都是非线性项。刚接触那会儿看着微分方程头皮发麻,后来发现直接数值求解才是真香。咱今天就拿Python撸个能出相图、庞加莱截面和分叉图的脚本,手把手看看这非线性系统能整出什么活。

先上核心代码骨架:

import numpy as np from scipy.integrate import odeint import matplotlib.pyplot as plt mu = 0.1 # 阻尼比 k = 10.0 # 刚度 omega_n = np.sqrt(k) # 固有频率 Omega = 0.8 * omega_n # 激励频率 F = 0.5 # 激励幅值 def system(y, t): x, dx = y ddx = -mu*dx - k*x + F*np.cos(Omega*t) + 0.1*x**3 # 含三次非线性项 return [dx, ddx] t = np.linspace(0, 1000, 50000) # 长时间仿真 sol = odeint(system, [0.1, 0], t)

这段代码把行星齿轮常见的非线性因素——三次刚度项给塞进去了。注意时间序列取得特别长,这是为了后面取庞加莱截面时能过滤掉瞬态响应。不过直接画相图的话得截取后面稳定段:

# 截取稳定段 x, dx = sol[-2000:,0], sol[-2000:,1] plt.plot(x, dx, ',k', alpha=0.5) plt.xlabel('Displacement') plt.ylabel('Velocity') plt.title('Phase Portrait')

跑出来的相图要是出现个极限环,说明系统在做周期性振动。但要是看到轨迹开始乱窜,那可能进入混沌状态了——这时候就该庞加莱截面出场了。

取庞加莱截面的骚操作在于按激励周期采样:

# 计算激励周期对应的采样间隔 T = 2*np.pi / Omega dt = t[1] - t[0] stride = int(T/dt) # 取截面点 poincare_x = x[::stride] poincare_dx = dx[::stride] plt.figure() plt.plot(poincare_x, poincare_dx, '.r', markersize=2) plt.title('Poincare Section')

当庞加莱截面呈现孤立点时是周期运动,出现成片的点云可能就混沌了。不过最直观的还是分叉图——看参数变化时系统如何从老实变癫狂:

bifurcation = [] omega_range = np.linspace(0.5, 2.0, 300) for Om in omega_range: # 每次微调参数重新仿真 def local_system(y, t): x, dx = y ddx = -mu*dx -k*x + F*np.cos(Om*t) + 0.1*x**3 return [dx, ddx] sol = odeint(local_system, [0.1,0], t) x = sol[-2000:,0] # 记录局部极值 peaks = (x[1:-1] > x[:-2]) & (x[1:-1] > x[2:]) bifurcation.append(x[1:-1][peaks]) plt.figure() for i, Om in enumerate(omega_range): plt.plot([Om]*len(bifurcation[i]), bifurcation[i], ',k', markersize=0.1) plt.title('Bifurcation Diagram')

这段分叉图代码有个坑:参数循环时每次都要重新定义微分方程。如果直接修改外层变量会导致闭包问题,所以得在循环内部重新定义local_system。当分叉图从单支分裂成多支,说明系统开始出现倍周期分叉——这是进入混沌的前戏。

跑完这三板斧,基本上能把行星齿轮的非线性特性摸个大概。不过实际工程中参数选择更讲究,比如阻尼比μ别超过0.3,否则啥非线性现象都给你压没了。另外激励频率Ω在固有频率附近最容易出活,调参时可以重点照顾这个区间。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/15 22:19:01

玩轮胎仿真不上手?老司机带你飙车。今天咱们用ABAQUS搞点硬核操作,从过盈充气到滚动传涵,手把手教你怎么让虚拟轮胎活起来

ABAQUS 轮胎建模-过盈充气-模态-滚动-频响仿真 abaqus 轮胎仿真包括自由模态仿真,刚度仿真,印痕仿真,接地静止的模态仿真,接地滚动模态仿真,三种状态:自由,接地静止和接地滚动的传涵仿真&#x…

作者头像 李华
网站建设 2026/7/16 16:41:07

当风电遇上“太极推手“:混合储能如何化解功率波动

5MW风电永磁直驱-1200V直流并网仿真,带混合储能系统,其中采用滑动平均滤波算法(可改为自己想用的算法)对波动功率进行分解,然后交由储能系统进行平抑。 台风天的风电场像极了喝醉酒的拳击手——出招毫无章法。我们给这个5MW的永磁直驱风电机…

作者头像 李华
网站建设 2026/7/16 18:22:42

MIPI DSI DPHY FPGA工程源码:Artix7-100t彩条驱动1024*600像...

MIPI DSI DPHY FPGA工程源码 mipi-dsi tx/mipi-dphy协议解析 MIPI DSI协议文档 纯verilog 彩条实现驱动mipi屏幕 1024*600像素。 的是fpga工程,非专业人士勿。 artix7-100t mipi-dsi未使用xilinx mipi的IP。 以及几个项目开发时搜集的MIPI DSI参考源码。最近在折腾…

作者头像 李华
网站建设 2026/7/16 18:18:51

最近在折腾四旋翼导航时踩了不少坑,发现真正让无人机听话飞行的核心都在代码细节里。今天就拿手头正在调试的飞控项目举例,聊聊怎么用代码让四旋翼实现基础导航

四旋翼代码导航先看最关键的姿态控制部分。下面这段C PID控制器代码看着简单,实测参数调不好能让无人机直接表演死亡翻滚: class PID { public:float kp, ki, kd, integral_max;float error_sum 0, last_error 0;float compute(float error, float dt)…

作者头像 李华
网站建设 2026/7/17 12:56:52

永磁同步电机全速域无传感器控制探索

永磁同步电机全速域无传感器控制 全速域 无传感器控制 1. 零低速域,采用高频脉振方波注入法 2. 中高速域采用改进的滑膜观测器,开关函数采用的是连续的sigmoid函数,转子位置提取采用的是pll锁相环 3. 转速切换区域采用的是加权切换法 带有参考…

作者头像 李华
网站建设 2026/7/15 2:18:47

Linly-Talker生成视频的镜头拉近推远动态效果实现

Linly-Talker生成视频的镜头拉近推远动态效果实现 在当前AI内容创作高速发展的背景下,数字人已不再是实验室里的概念演示,而是逐步渗透进教育、电商、金融等实际业务场景中的生产力工具。用户不再满足于“能说会动”的基础表现,而是期待更具影…

作者头像 李华