1. 单摆运动的多领域仿真建模
单摆的多领域建模思路
单摆看似简单,却天然包含两个不同物理领域的耦合:重力产生的力矩属于机械旋转领域,而摆角与角速度之间的运动学关系属于刚体转动领域。多领域仿真工具(如 Modelica 类工具)的核心价值在于:用非因果方程描述各领域元件,让求解器自动处理耦合,而不是手工推导微分方程。
建模时把单摆拆成三个可复用元件:
- 固定支座:提供旋转自由度参考点,约束平移。
- 无质量摆杆:长度 L,连接支座与摆锤,传递力矩与角度。
- 摆锤:质量 m,绕支点转动惯量 J = m·L²,受重力分量驱动。
重力对摆锤产生的恢复力矩为 τ = −m·g·L·sin(θ),负号表示力矩始终指向平衡位置。摆锤的转动方程 J·θ̈ = τ。当摆角很小时 sin(θ)≈θ,系统近似简谐;大摆角时周期随振幅增大,这正是仿真能直观展示的非线性效应。
关键参数与初始条件
| 参数 | 符号 | 示例取值 | 说明 |
|---|---|---|---|
| 摆锤质量 | m | 1.0 kg | 影响惯量,不影响小角度周期 |
| 摆杆长度 | L | 0.5 m | 决定周期与惯量 |
| 重力加速度 | g | 9.81 m/s² | 方向竖直向下 |
| 初始摆角 | θ₀ | 30°(≈0.524 rad) | 释放时角速度为 0 |
| 初始角速度 | ω₀ | 0 rad/s | 静止释放 |
小角度理论周期 T ≈ 2π√(L/g) = 2π√(0.5/9.81) ≈ 1.418 s。30° 属于中等摆角,实际周期会略大于该值,仿真结果可用于对比这一偏差。
建模连接关系
下图给出单摆的元件拓扑与信号/力矩流向:支座固定于世界坐标系,摆杆一端连支座、另一端连摆锤;重力作为体积力作用于摆锤质心,产生绕支点的力矩,驱动摆角变化。能量在动能与势能之间往复转换。
用方程实现模型
在 Modelica 类工具中,可直接写出摆锤的转动方程,无需手工消元。下面给出核心模型代码,包含参数、变量与方程,可直接放入仿真环境运行。
model SimplePendulum
parameter Real m = 1.0; // 摆锤质量 kg
parameter Real L = 0.5; // 摆杆长度 m
parameter Real g = 9.81; // 重力加速度 m/s^2
parameter Real theta0 = 0.5236; // 初始摆角 rad (30°)
Real theta(start = theta0, fixed = true); // 摆角 rad
Real omega(start = 0, fixed = true); // 角速度 rad/s
Real J; // 转动惯量
Real Ep; // 势能 J
Real Ek; // 动能 J
Real E_total; // 总机械能 J
equation
J = m * L^2;
der(theta) = omega;
J * der(omega) = -m * g * L * sin(theta); // 重力恢复力矩
Ep = m * g * L * (1 - cos(theta));
Ek = 0.5 * J * omega^2;
E_total = Ep + Ek;
end SimplePendulum;
方程 J*der(omega) = -m*g*L*sin(theta) 是模型的核心:左边是转动惯量乘角加速度,右边是重力力矩。求解器会自动积分得到 θ(t) 与 ω(t)。
仿真设置与结果判读
设置仿真区间 0 到 5 s,步长自适应,容差 1e-6。运行后观察三条曲线:
- 摆角 θ(t):应呈周期性振荡,峰值约 ±0.524 rad,过零点时角速度最大。
- 角速度 ω(t):与 θ(t) 相位相差约 90°,在平衡位置处达到峰值。
- 总能量 E_total:无阻尼时应保持恒定,数值波动仅来自积分误差,量级应在 1e-4 J 以下。
能量守恒的验证方法:记录 E_total 的最大值与最小值,若相对波动小于 0.1%,说明模型与求解精度满足要求。若能量持续漂移,应减小容差或改用能量守恒型积分器。
若想观察非线性效应,把 θ₀ 改为 90°(1.5708 rad)重新仿真,测量相邻两次过零时间间隔,会发现周期比小角度理论值 1.418 s 长约 18%,这正是 sin(θ)≈θ 近似失效的体现。
摆杆必须设为无质量或把其惯量折算进摆锤,否则 J 会偏大导致周期偏长。若摆杆有质量,应使用 J = m·L² + (1/3)·m_rod·L² 的复合惯量。