Skip to content
cfd-lab:~/zh/posts/2026-07-16-magnus-effect…online
NOTE #105DAY THU 유체역학DATE 2026.07.16READ 4 min readWORDS 1,828#Magnus-Effect#Circulation#Kutta-Joukowski#Vortex#유동현상

旋转的球为什么会拐弯 — 马格努斯效应与环量

用环量解释一个旋转如何改变球的轨迹

1742年,英国的本杰明·罗宾斯正盯着一件怪事。火枪的弹丸飞不直。同一支枪、同样的火药、同样的瞄准,可有的弹向左偏,有的弹向右偏。他注意到,离开枪口的球形弹丸在不规则地旋转。旋转与偏折,这两个现象总是成对出现。

一个世纪后,这一观察被德国物理学家古斯塔夫·马格努斯的实验所确认:旋转的物体在流动中会被推向侧方。今天我们就来追踪这个侧向力究竟从何而来,用的是一个量 — 环量(circulation)。

会拐弯的炮弹,一个由来已久的难题

在罗宾斯之前,炮手们就知道:炮弹会打偏。这不只是风的缘故。铸造公差使炮膛与炮弹之间存在缝隙(当时称为 windage),发射瞬间弹丸撞击膛壁而获得难以预测的旋转,这旋转使飞行轨迹发生弯曲。

问题很严峻。弹道学是关乎国家存亡的计算。牛顿在《原理》中导出了抛物线轨迹,但真实的弹丸偏离了抛物线。罗宾斯用实验把这种偏离分开:一部分是空气阻力,一部分是旋转。

核心问题是:为什么旋转会产生侧向力?

侧向的推力来自环量

先看力的大小。当一个旋转圆柱置于速度为 UU_\infty 的均匀流中时,单位长度上受到的侧向力惊人地简单。

L=ρUΓL' = \rho\, U_\infty\, \Gamma

其中 ρ\rho 是流体密度,UU_\infty 是自由来流速度,Γ\Gamma 是环量。这一关系称为库塔–茹科夫斯基定理(Kutta–Joukowski theorem)。升力只与环量成正比。物体的形状只通过它能产生多少环量来参与其中。

环量是沿闭合路径对速度的积分。

Γ=Cud\Gamma = \oint_C \mathbf{u}\cdot d\boldsymbol{\ell}

u\mathbf{u} 是流速,dd\boldsymbol{\ell} 是路径切向的微元矢量。环量不为零,意味着物体周围存在净的旋转流动。半径为 aa、角速度为 ω\omega 的旋转圆柱,其表面拖动流体,正好产生这种净旋转。

Γ=2πa2ω\Gamma = 2\pi a^2 \omega

方向由叉积决定。

FMω×U\mathbf{F}_M \propto \boldsymbol{\omega} \times \mathbf{U}_\infty

ω\boldsymbol{\omega} 是旋转角速度矢量。这个式子,稍后将成为解开膛线之谜的钥匙。

旋转为何真的能造出环量

环量为什么会产生?答案在于黏性与无滑移条件(no-slip condition,壁面处流体速度等于壁面速度)。

旋转球的一面与流动同向转,另一面逆着流动转。在与流动同向的一侧,表面推动边界层,因此流动更晚分离(分离延迟)。在逆向的一侧,流动更早分离。结果是尾流向一侧偏斜。

若尾流向下偏斜,流体便获得向下的动量。作为反作用,球被向上推。这就是马格努斯力的本质:球把流动向一侧偏折,代价是受到反方向的力。

在下面的模拟中亲自调节参数吧。

把旋转从零调向后旋(backspin)一侧,上下的流线就变得不对称。上方流线变密(变快),驻点向下移。此时马格努斯力箭头指向上方。把旋转反过来,力也随之反向。

拐多大弯,由旋转比决定

先把雷诺数放在一边。支配马格努斯效应强弱的无量纲数是旋转比(spin ratio)。

S=aωUS = \frac{a\,\omega}{U_\infty}

分子是表面速度,分母是自由来流速度。SS 表示"球面转动比风快多少倍"。SS 越大,环量越大,升力系数也越大。棒球的曲球约为 S0.20.4S \approx 0.2\text{–}0.4,足球大力弧线球则更高。

我们来积分一个简单的二维飞行并画出轨迹,只放入阻力和马格努斯力。

import numpy as np
 
def magnus_trajectory(u0, spin, cm=0.16, cd=0.006, dt=0.012, steps=900):
    # 俯视平面。x 为前进方向,y 为侧向。
    pos = np.array([0.0, 0.0])
    vel = np.array([u0, 0.0])   # 起初笔直发射
    path = [pos.copy()]
    for _ in range(steps):
        sp = np.hypot(*vel) + 1e-9
        # 马格努斯: 垂直于速度 (-vy, vx),符号由旋转决定
        a_magnus = cm * spin * np.array([-vel[1], vel[0]])
        a_drag   = -cd * sp * vel          # 阻力: 与速度反向
        vel = vel + (a_magnus + a_drag) * dt
        pos = pos + vel * dt
        path.append(pos.copy())
        if pos[0] > 30:
            break
    return np.array(path)
 
for s in (0.0, 1.0, 2.0):
    p = magnus_trajectory(14.0, s)
    print(f"spin={s}:  侧向偏移 = {p[-1, 1]:6.2f} m")
# spin=0.0:  侧向偏移 =   0.00 m
# spin=1.0:  侧向偏移 =   3.71 m
# spin=2.0:  侧向偏移 =   6.90 m

旋转翻倍,偏移却并不正好翻倍。轨迹一旦弯曲,速度方向就改变,力的方向也随之不断旋转。这是非线性的。

在下面把旋转左右扫动。

把旋转从最左端移到最右端,蓝色轨迹便以虚线(无旋转基准线)为界翻到另一侧。降低发射速度,同样的旋转会弯得更厉害。因为表面速度相对流动变大,SS 随之升高。

膛线:一个反其道而行的解法

这里出现了一个悖论。罗宾斯找到的解法不是消除旋转,而是控制旋转。在枪管内刻出螺旋槽(膛线,rifling),让弹丸绕飞行方向的轴旋转。

为什么这样有效?马格努斯力正比于 ω×U\boldsymbol{\omega} \times \mathbf{U}_\infty。膛线赋予的旋转轴就是飞行方向,即 ω\boldsymbol{\omega}U\mathbf{U}_\infty 平行。两个矢量平行时,叉积为零。侧向力随之消失。

同时,这种绕轴旋转像陀螺一样提供了陀螺稳定性。它把弹丸原本翻滚时获得的随机旋转,捆到一根固定的轴上。随机的马格努斯消失,弹丸便飞得笔直。不是靠消除旋转,而是把旋转对准到侧向力为零的角度,从而取胜。

这个现象告诉我们什么

马格努斯效应的本质可以浓缩为一句话:旋转把流动向一侧偏折,被偏折动量的反作用就成了侧向力。升力来自环量,而非物体的形状。

若要抄进实验笔记,有三条。第一,L=ρUΓL' = \rho U_\infty \Gamma —— 侧向力只与环量成正比。第二,强弱不由雷诺数、而由旋转比 S=aω/US = a\omega/U_\infty 决定。第三,让 ω×U\boldsymbol{\omega} \times \mathbf{U}_\infty 归零的对齐(膛线),恰好抹去了那个力。罗宾斯在子弹上看到的,与足球在球门前拐弯的,是同一个方程的两副面孔。

如果对您有帮助,请分享。