文章 /

一次风洞、一个比赛文件,差 0.8%

2026-09-21·罗誉寅

CdA 这个数字,写出来很便宜,要验证很贵。市面上每一件气动产品都报一个,几乎没有人告诉你那是拿什么量出来的。

所以这里是我的,而且拿唯一能把话讲死的仪器对过。

2026 年 1 月,226 完赛 8 小时 17 分的选手李鹏程,带着他的比赛装备进香港科技大学的风洞。半年后他比 IRONMAN 汉堡。我拿那场比赛的功率文件喂进 AeroPacer,让引擎在完全没看过风洞结果的状况下反解他的风阻面积。

方法 CdA 条件
HKUST AAF 风洞 0.2123 m² 0° 偏航、45 km/h、力天平测量、两次重复
AeroPacer 反解比赛文件 0.214 m² IRONMAN 汉堡 180 公里、4.3 小时
差距 +0.0017 m²,+0.8% 45 km/h 下约 2 瓦

两瓦。这是标题,而这篇文章剩下的部分,就是在讲你为什么不该只看标题。

装备对不对得上,决定这场比较成不成立

风洞量的不是一个人,是一个人加上一组特定的装备,换掉任何一样,答案就变。所以这场比较只有在“风洞那一组配置就是他比赛那天穿的那一组”的前提下才诚实。

风洞那天他跑了好几组配置。对得上比赛日的那一组是:Trek 车架、Van Rysel 头盔、108 前轮配碟轮、直纹腿套、新的连身衣,以及,这一项很关键,标准号码布。这组配对是由他在汉堡穿了什么决定的,不是由哪一组量出来最接近决定的。

为什么要特别讲:另一组配置除了换成 aero 号码布之外完全一样,量到 0.2105。拿那一组来比,比赛文件就不是差 0.8%,是差 1.7%。两个数字我都可以引用。按比赛日装备去配是唯一站得住脚的规则,这次刚好没让我付出代价,但你应该知道另一个数字也存在。

风洞量到了什么

单点:0° 偏航、45 km/h、力天平、固定姿势。跑了两次,两次都是 0.2123。这种重复性,就是风洞之所以能当基准的原因。

而这也正好是,待会会讲到,它不可能是全部真相的原因。

比赛文件算出了什么

引擎用的是大家都在用的那条功率方程序,只是倒过来跑。正着算,你知道一个人的风阻,去求他维持某个速度要几瓦;倒着算,你知道功率和速度,去求风阻。方程序本身不难,难的是在真实道路上,有四件事会把它污染掉:

  1. 风。 有意义的是骑手实际迎到的空气,不是对地速度。气象站的风量在 10 米高,得换算到骑乘高度。
  2. 坡度。 在耐力速度下,坡度差一个百分点,就足以把整个风阻项淹掉。
  3. 姿势。 一个骑了四小时的人,不会维持他在风洞里摆出来的那个形状。
  4. 跟骑与刹车。 这两件事都会偷偷灌进方程序看不见的功。

引擎对这四件事的处理是这样。

它把整趟骑乘切成固定长度的短窗口,只留下文件表现正常的那些:速度稳、功率有效、人确实在动。窗口中间有航向转折的丢掉,因为过弯同时代表姿势变了、也代表煞了车。偏航角超过门槛的丢掉,因为 CdA 本来就是偏航角的函数,只有低偏航的样本才该放进同一个池子。窗口头尾速度有变的,那段动能差会被放回力平衡里,而不是留在那里污染风阻项。

汉堡这个文件,这样筛完剩下 1058 个可用窗口

往返配对

接下来才是真正做事的那一步。汉堡的自行车道会让你在同一段路上来回各骑一次,所以大部分窗口都找得到一个镜像:同一段柏油路,反方向。把这两个配成一对取平均,两个最大的误差来源就互相抵消掉了。同一段坡,某个方向读得偏陡,反方向就会读得偏缓;某个方向顺风让风阻估得漂亮,反方向就会让它难看。两者都不需要量得多准,因为配对法不在乎绝对值,只在乎误差会换号。

1058 个窗口浓缩成 283 组往返配对。最后报出来的估算值,是从这些配对来的,不是从原始窗口来的。

能量闭合交叉验证

第二种方法,跟上面完全无关。路线只要绕回起点形成一个闭合圈,那么爬升的每一米也都下降回来了,重力在整圈上净值为零。选手踩进去的功,必须全部从风阻和滚阻出去,于是你可以直接用整圈的能量帐一步解出 CdA,完全不用到上面那套窗口逻辑。

这个方法给出 0.234,比配对值高约 9%。方向完全符合预期:四小时里的每一次刹车,都会倒掉一些能量,而能量帐会把它算到空气头上。我把它当成对“正负号与数量级”的交叉验证,不是当成一个竞争的估算值;如果它回来的数字比配对值低,我才要担心。

分布

配对出来的是中位数,而诚实的读法要连着它的分布一起看:283 组配对的中间一半落在 0.200 到 0.233 之间。

关于这个文件还有一个细节。引擎会把每个文件算两次,一次用当天实测的风、一次当作没有风,然后留下比较收敛的那个答案。汉堡留下的是无风那次:把实测的风加进去反而让分布变散。在来回赛道上这是意料中的结果,因为往返配对本身已经把大部分的风抵消掉了。

0.2000.2100.2200.2300.240比赛文件中位数 0.214能量闭合 0.234风洞·比赛装备 0.2123风洞·aero 号码布 0.2105Kona 2024 能量帐 0.205CdA(m²)·青色带=比赛文件估算的中间一半(IQR)
这篇文章里的每一个测量,摊在同一条数在线。青色带是比赛文件 283 组配对估算的中间一半,风洞在比赛装备下的 0.2123 落在带子里面,而且靠近中位数。

这两个数字本来就不该相等

这是大部分气动行销会跳过的一段,也是决定那 0.8% 到底有没有意义的一段。

风洞量的是一个姿势、一个偏航角、一个速度、在架台上、一趟的时间。比赛文件涵盖的是 4.3 小时:他变换姿势几百次、迎到那天给他的各种偏航角、骑在真实的柏油路上,而且会累。这不是同一个测量做两次,这是两个关系密切但本来就不同的量。

如果它们完全相等,正确的反应是怀疑,不是庆祝。能把风洞姿势完美维持四小时的人并不存在。

那 0.8% 到底买到了什么?它说明这套反解方法没有带着大到有影响的系统性偏差,而且他比赛时的平均姿势,跟他带进风洞的那个姿势很接近。这是个真实而且有用的结果。它不等于“AeroPacer 准到 0.8%”,这句话我不会写。

要多巧,这个吻合才会只是运气

有四件事可能让这个数字凑巧这么接近,你应该把它们一起拿来对照这个结果。

一位选手就只是一位选手。 这是 n = 1,是一次查核,不是验证研究。验证研究是60 场实骑文件回测,这个站上的准度宣称其实是从那里来的。

点估计比它自己的分布还精细。 配对的中间一半从 0.200 到 0.233,大约是中位数的 15%。一个点估计落在风洞值的 0.8% 以内,有运气成分;数据真正撑得起的是比较弱、但比较有用的那句话:风洞值舒舒服服地落在估算分布里面,而且靠中间。

滚阻和体重是假设,而且它们会跟风阻互换。 这次反解用的是连人带车 80 公斤、Crr 0.0040。在他的比赛速度下,Crr 差 0.0005,对一条在未知路面上的轮胎来说,这是很平常的不确定度,CdA 的估算值就会跑掉约 0.005,是这次在庆祝的那个差距的三倍。系统重量差 2 公斤,会跑掉约 0.001。这个吻合的精细程度,超过了它底下那些假设的精细程度;任何人报一个 1% 以内的气动结果却不说他对滚阻做了什么假设,就是没把话讲完。

汉堡是个好相处的文件。 平路、来回、长时间稳定输出,这已经很接近这套方法的最佳状况。换成多坡赛道、可跟骑的比赛,或是一个整天坐起来骑的人,估出来都会更差,而引擎会把那种文件标记出来,不会假装没事。

再一个独立的角度

他 2024 年的 Kona,用一套更早、更粗糙的整场能量法跑出来是 0.205。不同赛道、不同年份、不同算法,比风洞低 3.4%。

三条互相独立的路径,去量同一位选手的风阻面积,素材横跨三个洲的道路和一座实验室,全部落在 0.205 到 0.214 之间。没有任何两条完全同意彼此,但它们对“这是一位什么样的骑手”这件事的看法一致。

如果你不是李鹏程,这代表什么

能成立的宣称很窄,所以我尽量把它讲得窄一点。

用一个质量还可以的比赛文件反解 CdA,你会落在离风洞测量够近的地方,近到那个差距,比你本来就搞不清楚的东西(你的轮胎、你真正的系统重量)还小。拿来决定配速目标,这样就够了。拿来判断某顶头盔是不是比另一顶好 3 瓦,就不够,而且任何单一比赛文件都永远不会够,不管别人怎么卖。

风洞要钱,也要排得到时段。功率文件不用,因为你本来就有。

可信度说明

  • 这篇的每个数字都来自风洞报告与引擎对那个文件留存的估算纪录。没有一个是往对我有利的方向凑:0.8% 是 0.2123 上的 0.0017,而 0.0017 在风洞的空气里、45 km/h 下大约是 2 瓦。
  • 风洞配置是在跑这场比较之前就按比赛日装备配好的,另一组配置的结果也一并公布在上面。
  • 这个比赛文件没有拿来调校过任何东西。算出 0.214 的引擎版本,就是这个站正在跑的版本。
  • 窗口长度、航向与偏航的剔除门槛属于引擎内部,不公开。会影响结果的数字则全部在这里:1058 个窗口、283 组配对、80 公斤、Crr 0.0040、中位数 0.214、中间一半 0.200 到 0.233、能量闭合 0.234。
  • 李鹏程的名字经本人同意具名。他的比赛文件不公开。

← 全部文章