---
title: "Duffing 非线性振子实验室互动实验｜Sandbox Physics"
description: "为什么同一驱动频率会产生不同响应？非线性弹簧在同一个驱动下，可以有不止一种稳定的响应。落到哪一种，取决于运动怎么开始；扫频时，还取决于是从低往高扫，还是从高往低扫。往返各扫一次，响应跳变的位置不同，中间留出一段两种响应都可能出现的频率区间。"
canonical_url: "https://sandboxphysics.com/zh/labs/duffing-oscillator/"
language: "zh-CN"
page_type: "lab"
alternate_languages:
  en: "https://sandboxphysics.com/labs/duffing-oscillator/"
last_modified: "2026-10-22"
---

M069 · 振动设计

# Duffing 非线性振子实验室

**为什么同一驱动频率会产生不同响应？** 非线性弹簧在同一个驱动下，可以有不止一种稳定的响应。落到哪一种，取决于运动怎么开始；扫频时，还取决于是从低往高扫，还是从高往低扫。往返各扫一次，响应跳变的位置不同，中间留出一段两种响应都可能出现的频率区间。

三维场景里，小车连着带立方项的弹簧、阻尼器和力执行器，可以设成硬化弹簧、局部软化弹簧或双势阱。拖动小车决定从哪里释放，记录相图和固定驱动相位的采样点，把测得的基频振幅和单谐波近似对比。再做上下双向扫频，每次都从上一次的末态接着开始。

> 交互仿真：在浏览器中打开本页，即可调整参数并运行模型。

线性刚度的大小固定为每米十六牛顿，正负可选；参考频率按它的大小计算。立方项是唯一的非线性。线性刚度为正、立方刚度为负时，弹簧只形成一个局部势阱，外侧没有边界；小车到达鞍点或两米的显示范围时就停止记录，不会把位置截在边界上。八周期测量先去掉均值，残差里包含高次谐波和瞬态，不代表不确定度。只凭保留下来的频闪点，不能证明混沌。扫频时每个频率积分 48 个周期，舍弃前 40 个，再把末态交给下一次实验，每次都跑整数个周期。有限次扫频看到的方向差异，不能找全所有吸引子，也不能证明发生了绝热分岔。单谐波解只是近似，没有判定稳定性。装置长度按每次实验缩放；线圈形状、质量块大小和执行器行程都是示意。弹簧丝、执行器自身的响应和碰撞都不计算。固定的地球重力在竖直方向与轨道反力抵消。绿色轮廓标出模型范围内无驱动时的稳定平衡位置。力箭头和速度箭头用不同比例。能量回看使用已记录的运动，做功和耗散分别独立积分。

物理教程

## 响应取决于扫频方向的弹簧

**背景** 刚度里有了立方项，频率就随振幅变化。有阻尼又有驱动时，同样的参数可以因为历史不同，稳定在不同的有界响应上。

**为什么值得理解** 布朗大学的 Duffing 教程和约克大学的计算物理讲义讲了立方恢复力、相图和驱动。本实验又加了三样：对实测运动做谐波投影，从局部势阱逃逸，以及有限时长、每次接着上次末态的连续扫频。

先抓重点

- **核心问题**: 向上扫和向下扫结果不同，是因为真有稳定分支，还是因为记录时间有限？
- **一句话直觉**: 把基频、均值和非谐波残差分开测，再在相同驱动相位下比较接续末态的扫频。

### 核心数学模型

#### 弹簧力、阻尼力与无驱动时的势阱

$$
F_s=-kx-\alpha x^3,\quad F_d=-c\dot x,\quad x_*=\pm\sqrt{-k/\alpha}\quad(k<0,\ \alpha>0)
$$

绿色轮廓标出记录范围内、没有驱动时的势能极小点。驱动力可以把质量块带离这些位置。

#### 立方弹簧的运动方程

$$
m\ddot x+c\dot x+kx+\alpha x^3=F_0\cos\omega t
$$

线性刚度的正负和立方刚度一起决定弹簧是变硬、局部变软，还是形成双势阱。

#### 势能与能量

$$
U(x)=\tfrac12kx^2+\tfrac14\alpha x^4,\quad E=\tfrac12m\dot x^2+U(x)
$$

模型用的是完整势能，不用极小点附近的二次近似代替。

#### 单谐波振幅关系

$$
A^2\left[\left(k-m\omega^2+\tfrac34\alpha A^2\right)^2+(c\omega)^2\right]=F_0^2
$$

这个近似假设振动以零点为中心，忽略均值和高次谐波，也不判断哪个解稳定。

#### 局部软化弹簧的鞍点

$$
x_b=\sqrt{-k/\alpha}\quad(k>0,\ \alpha<0)
$$

出了这个局部势阱，势能会无限下降，所以记录到鞍点就停止。

#### 分别积分做功和耗散

$$
\dot W=F_0\cos(\omega t)\dot x,\quad \dot Q=c\dot x^2,\quad E-E_0=W-Q
$$

驱动做功可正可负，耗散总为正，两者都随运动独立积分。

### 常见难点

#### 近似方程的解不一定是吸引子

**容易误解** 谐波平衡方程的每个解，都是能测到的稳定响应。

**正确理解** 这个近似丢掉了高次谐波。数值模拟里每次释放只会落进某一个吸引域，而且还带着瞬态。

#### 记忆效应取决于扫频设置

**容易误解** 两个方向扫出来不一样，就证明有绝热分岔。

**正确理解** 每个点只用 48 个周期，频率间隔和暂态衰减得够不够都会影响结果。

#### 不规则点需要更强证据

**容易误解** 分散的 Poincaré 点证明混沌。

**正确理解** 有限的记录里可能还含有瞬态，光靠采样点无法确定长期指数为正。

### 动手实验

1. 01

   #### 检查线性极限

   观察三维受力矢量，对“线性基准”采集完整记录，比较谐波振幅；再到能量视图看执行器做功和耗散。

   **你会看到：** 立方项为零时，响应最终落到独立已知的线性解上。

2. 02

   #### 测量扫频方向的影响

   选择“硬化弹簧”，运行完整的上下双向扫频。

   **你会看到：** 每次实验都从上一次的末态、在相同的驱动相位接着开始，历史就这样传下去。

3. 03

   #### 比较开口势阱和封闭势阱

   比较“局部软化”和“双势阱释放”。

   **你会看到：** 软化弹簧有一道边界，小车越过就会逃走；四次双势阱则把它一直困在里面。

4. 04

   #### 记录有限截面

   选择“不规则双势阱记录”，采集完整记录并检查残差。

   **你会看到：** 均值、基频和保留下来的固定相位点，各自描述信号的不同部分。

物理结论

谐波近似和有限记录能帮你解释运动，但不能找全所有吸引子，也不能证明混沌。

运动与动力系统 · 入门路径

## 从一次下落到一条轨道

先测重力，再分解运动，加入接触力与碰撞，最后把同样的定律带到轨道上。

[从这里开始 → **自由落体与重力测量** 采集几次下落，用相机记录的位置拟合重力加速度；再加入空气阻尼，看拟合结果怎样偏离真值。 观察 · 14 分钟](https://sandboxphysics.com/zh/labs/free-fall/)

1. [1 自由落体与重力测量](https://sandboxphysics.com/zh/labs/free-fall/)
2. [2 抛体飞行设计器](https://sandboxphysics.com/zh/labs/projectile-flight/)
3. [3 斜面与摩擦](https://sandboxphysics.com/zh/labs/inclined-plane/)
4. [4 一维碰撞台](https://sandboxphysics.com/zh/labs/collision-bench/)
5. [5 弹簧振子与周期标定](https://sandboxphysics.com/zh/labs/mass-spring/)
6. [6 轨道是怎样形成的](https://sandboxphysics.com/zh/labs/orbit/)

[查看完整路径 →](https://sandboxphysics.com/zh/topics/mechanics/#starter-path)
