Lesson 08A · A题国奖经验分享

国赛A题国奖经验分享与备赛准备

2021-2025年A题全景回顾 · 通用方法论 · 国奖论文精析
了解命题规律,掌握建模思维,针对性备赛

教学目标
  1. 了解 2021-2025 年 A 题的命题规律和演化趋势
  2. 先纵览五年命题全景,再掌握通用方法论,用方法论拆解每一道真题
  3. 对照多篇国奖论文,看获奖者如何落地这套方法论
  4. 建立 A 题备赛代码模板库和知识清单
  5. 能根据自身队伍特点判断是否选择 A 题

教学大纲
序号 内容 时长
1 A 题认识论(什么是 A 题、需要什么能力) 3 min
2 五年 A 题全景与命题趋势 3 min
3 A 题通用方法论(简化案例 + 四步法 + 读题流程) 10 min
4 逐题精析 + 方法论对照 + 国奖论文解读 20 min
5 备赛代码模板(简要展示) 2 min
6 课堂小结与选题决策 2 min

一、A 题认识论(3 min)

1.1 什么是 A 题?

“国赛本科组三道题,A 题是最’硬核’的那一道。它考的不是你会多少种模型,而是你能不能从一个真实的物理/工程场景出发,推导出数学方程,写代码求解,再把结果解释清楚。选 A 题的队伍不多,但选 A 题的队伍里出高分论文的比例很高——因为竞争对手少、区分度大。”

A 题 = 物理/工程机理建模题。核心考察链:

真实物理场景 → 提取关键机理 → 列出数学方程 → 数值求解 → 验证 → 优化

1.2 A 题的竞争格局

题目 类型 核心能力 选题比例 竞争
A 题 物理/工程机理建模 物理直觉 + 微分方程 + 几何建模 + 数值计算 ~15-20% 适中
B 题 算法/几何/数据驱动 快速学习 + 算法设计 + 统计推断 ~20-25% 适中
C 题 数据驱动建模 数据处理 + 回归/分类/评价/优化 ~60%+ 激烈

1.3 A 题必备能力与方法速查

类别 问题类型 核心能力 方法 Python 工具
建模 物理建模 提取物理场景,画受力图/几何关系图 牛顿定律、几何光学、运动学
微分方程(ODE) 列一阶/二阶 ODE,时间 t 为自变量;高阶降为一阶系统 数值求解 solve_ivp scipy.integrate
偏微分方程(PDE) 多个自变量(时间+空间),需边界条件 有限差分法、有限元法(FEM) FEniCS / 自定义差分
空间几何 建坐标系、坐标变换、距离/角度计算 直角/极/球坐标、旋转矩阵 NumPy 向量运算
优化 线性优化 线性目标函数 + 线性约束 单纯形法(Simplex) scipy.optimize.linprog
非线性优化 连续可微目标函数,梯度可用 L-BFGS-B、Nelder-Mead scipy.optimize.minimize
多目标优化 多个冲突目标同时优化 NSGA-II(非支配排序遗传算法)、加权法 DEAP / pymoo
智能优化 大规模、非凸、多峰、黑箱目标 遗传算法(GA)、粒子群(PSO)、模拟退火(SA) DEAP / pymoo
拟合与逼近 数据拟合、曲线插值 最小二乘法 scipy.optimize.least_squares
通用 鲁棒性与灵敏度分析 参数不确定性影响 + 关键参数识别 蒙特卡洛模拟(Monte Carlo)、自定义数值扰动 NumPy 随机抽样
结果验证 验证求解正确性 量纲检验、解析解对照、极端情况检验

二、五年 A 题全景与命题趋势(3 min)

二、五年 A 题全景与命题趋势(3 min)

“在逐题分析之前,先把五年 A 题放在一起看一遍,建立全局印象。”

2.1 五年 A 题一览表

年份 题目 领域背景 核心方法 难度
2021A “FAST”主动反射面的形状调节 天文工程 空间几何 + 最小二乘 + 优化 ★★★★
2022A 波浪能最大输出功率设计 新能源装备 力学 ODE + 参数优化 ★★★★★
2023A 定日镜场的优化设计 新能源工程 几何光学 + 大规模优化 ★★★★★
2024A “板凳龙”闹元宵 民俗运动 链式运动学 + 数值递推 + 约束优化 ★★★★
2025A 烟幕干扰弹的投放策略 军事背景 多体运动学 + 多目标优化 ★★★★★

2.2 五条命题演化主线

主线 1:物理背景逐年加深

2021(天文几何)→ 2022(流体力学)→ 2023(光学工程)→ 2024(运动学)→ 2025(弹道学+运筹学)

五年横跨天文、能源、光学、民俗、军事五个领域,但底层逻辑始终一致:从物理规律出发列方程 → 数值求解 → 优化参数

主线 2:几何建模是高频考点

5 年中有 4 年涉及空间几何: - 2021A:FAST 反射面的三维抛物面 - 2023A:太阳方位角、高度角的空间几何 - 2024A:板凳龙沿螺线运动,二维曲线的参数化 - 2025A:烟幕弹三维弹道 + 空间遮蔽区域

几何直觉和坐标系建立能力是 A 题的基本功。

主线 3:优化从”附属”变为”核心”

年份 优化在题目中的角色
2021A 最后一问(调节量优化)
2022A 核心问题(功率最大化 = 参数优化)
2023A 整题都是优化(镜场布局优化)
2024A 贯穿始终(最小螺距、最优路径、最大速度)
2025A 多目标优化是核心(遮蔽效果 vs 弹药消耗)

主线 4:计算量逐年增大

编程效率和算法优化能力是隐性评分标准。

主线 5:微分方程/数值方法是基本功

几乎每年都需要 ODE 数值求解: - 2022A:浮子运动方程(二阶 ODE) - 2024A:弧长参数化(积分 + 递推) - 2025A:弹道运动方程(含空气阻力的 ODE)

scipy.integrate.solve_ivp 是 A 题的”标配函数”,必须熟练掌握。


三、A 题通用方法论 ★★★(10 min)

“建立一套 A 题的通用解题框架,用这套方法论去检验每一道真题。这就像学武要先练基本功——不管对手出什么招,你的发力链条是不变的。”

3.1 四步解题框架

四步解题框架

“这四步不是四个独立的阶段——你会在每一步发现上一步的问题,然后回头修正。建模是迭代过程,不是一次成型。”

3.2 简化贯穿案例:带空气阻力的抛体运动

“用一道 30 行代码就能跑通的简化题,把四步法完整走一遍。”

题目:一物体以初速度 \(v_0 = 50\) m/s、仰角 \(\theta = 45°\) 从地面抛出。空气阻力与速度成正比 \(F_d = -kv\)\(k = 0.5\) kg/s),物体质量 \(m = 10\) kg。求运动轨迹和落地时间。


Step 1:物理建模

研究对象:质量为 \(m\) 的质点

受力分析

受力分析

物理定律:牛顿第二定律 \(\sum \vec{F} = m\vec{a}\)


Step 2:数学建模

建立直角坐标系。设位置 \((x, y)\),速度 \((v_x, v_y)\)

x 方向(只有阻力分量):

\[m\dot{v}_x = -k v_x \quad\Rightarrow\quad \dot{v}_x = -\frac{k}{m} v_x\]

y 方向(重力 + 阻力分量):

\[m\dot{v}_y = -mg - k v_y \quad\Rightarrow\quad \dot{v}_y = -g - \frac{k}{m} v_y\]

位置方程:

\[\dot{x} = v_x,\quad \dot{y} = v_y\]

初始条件\(x(0)=0\), \(y(0)=0\), \(v_x(0)=v_0\cos\theta\), \(v_y(0)=v_0\sin\theta\)

量纲检查\(k/m\) 单位是 \((\text{kg/s})/(\text{kg}) = \text{s}^{-1}\),与速度相乘得加速度 \(\text{m/s}^2\)


Step 3:数值求解

转化为一阶 ODE 系统:\(\mathbf{y} = [x, y, v_x, v_y]\)

import numpy as np
from scipy.integrate import solve_ivp

# 参数
v0, theta = 50, np.deg2rad(45)
m, k, g = 10, 0.5, 9.8

def projectile(t, y):
    """返回 [dx/dt, dy/dt, dvx/dt, dvy/dt]"""
    x, y_pos, vx, vy = y
    return [vx, vy, -k/m * vx, -g - k/m * vy]

# 求解(事件检测:y=0 落地)
def hit_ground(t, y):
    return y[1]  # y_pos = 0
hit_ground.terminal = True
hit_ground.direction = -1

# solve_ivp 参数说明:
#   fun      — ODE 函数,签名 fun(t, y),返回各状态变量的导数值
#   t_span   — 积分区间 (t_start, t_end),单位与方程中的时间单位一致
#   y0       — 初始状态向量,长度 = 方程阶数(这里 4 个状态变量)
#   events   — 事件检测函数,签名 event(t, y),返回 0 时触发。设置
#              terminal=True 使积分在事件发生时自动终止
#   max_step — 最大时间步长,控制输出点的密度和计算精度

sol = solve_ivp(projectile, [0, 30],
                [0, 0, v0*np.cos(theta), v0*np.sin(theta)],
                events=hit_ground, max_step=0.01)

print(f"落地时间: {sol.t[-1]:.2f} s")
print(f"射程: {sol.y[0, -1]:.2f} m")

# 绘制运动轨迹
import matplotlib.pyplot as plt

plt.figure(figsize=(10, 4))
plt.plot(sol.y[0], sol.y[1], 'b-', linewidth=1.5)
plt.scatter([0], [0], color='green', s=80, zorder=5, label='起点')
plt.scatter([sol.y[0, -1]], [0], color='red', s=80, zorder=5, label='落点')
plt.xlabel('x (m)')
plt.ylabel('y (m)')
plt.title(f'抛体运动轨迹(有空气阻力,k = {k} kg/s)')
plt.axis('equal')
plt.grid(True, alpha=0.3)
plt.legend()
plt.show()
抛体运动轨迹

Step 4:结果验证

验证 A:无阻力解析解对照\(k=0\)\(R = v_0^2\sin(2\theta)/g = 255.1\) m)

# 用 k=0.0001 近似无阻力
sol_nodrag = solve_ivp(lambda t,y: [y[2], y[3], 0, -g], [0, 30],
                        [0, 0, v0*np.cos(theta), v0*np.sin(theta)],
                        events=hit_ground, max_step=0.01)
print(f"无阻力射程: {sol_nodrag.y[0,-1]:.1f} m  (解析解: 255.1 m)")

验证 B:灵敏度分析——改变 \(k\) 值看射程变化

for k_test in [0, 0.1, 0.5, 1.0, 2.0]:
    # ... 重跑 ODE,记录射程

\(k\) 从 0 增加到 2.0,射程从 255 m 递减到 ~80 m → 物理直觉合理:阻力越大射程越小。

抛体运动灵敏度分析

验证 C:量纲复查——输出结果的单位是否正确?射程 ~120 m,数量级合理。

“这就是四步法在一个简化问题上的完整演示。接下来我们看五年真题——你会发现,虽然每个题背景不同,但底层都是在走这四步。”

3.3 简化贯穿案例:非线性优化入门

“抛体运动演示了 ODE 求解,A 题中另一个高频需求是优化——找到’最好’的参数。下面用一个通用的非线性规划例子,把 scipy.optimize.minimize 走一遍。”

题目:设计一个容积 \(V = 1\) L(\(1000\) cm³)的圆柱形易拉罐,求底面半径 \(r\) 和高 \(h\),使表面积最小(省材料)。


Step 1:物理建模

研究对象:圆柱体,底面半径 \(r\) cm,高 \(h\) cm。

目标:表面积 \(S\) 最小 约束:体积 \(V\) 固定为 1000 cm³


Step 2:数学建模

优化问题

\[\min_{r > 0} \quad S(r) = 2\pi r^2 + \frac{2000}{r}\]


Step 3:数值求解

import numpy as np
from scipy.optimize import minimize

# 目标函数(scipy 默认最小化)
def surface_area(r):
    """圆柱表面积,r 为底面半径 (cm)"""
    return 2 * np.pi * r**2 + 2000 / r

# minimize 参数说明:
#   fun      — 目标函数,签名 fun(x),返回标量值
#   x0       — 初始猜测值,越接近真解收敛越快
#   bounds   — 变量上下界 [(min, max), ...],None 表示无界
#   method   — 优化算法:'L-BFGS-B'(支持 bounds)、'Nelder-Mead'(无需梯度)
#   tol      — 收敛容差,越小精度越高但迭代越多

result = minimize(surface_area, x0=5.0,
                  bounds=[(0.1, None)],  # r > 0
                  method='L-BFGS-B')

r_opt = result.x[0]
h_opt = 1000 / (np.pi * r_opt**2)
S_opt = result.fun

print(f"最优半径 r = {r_opt:.2f} cm")
print(f"最优高度 h = {h_opt:.2f} cm")
print(f"最小表面积 S = {S_opt:.2f} cm²")

# 验证:解析解 r* = (500/π)^(1/3)
r_analytic = (500 / np.pi)**(1/3)
print(f"解析解 r = {r_analytic:.2f} cm  (误差: {abs(r_opt-r_analytic):.2e})")

输出

最优半径 r = 5.42 cm
最优高度 h = 10.84 cm
最小表面积 S = 553.58 cm²
解析解 r = 5.42 cm  (误差: 2.22e-08)

“注意:最优解 \(h = 2r\) —— 圆柱罐的高度等于直径时最省材料。这就是优化之美:用数学找到一个你凭直觉猜不到的精确答案。”


Step 4:结果验证

# 验证 A:约束检查
V_check = np.pi * r_opt**2 * h_opt
print(f"实际体积: {V_check:.2f} cm³  (目标: 1000, 误差: {abs(V_check-1000):.2e})")

# 验证 B:灵敏度分析 —— r 偏离最优值 10% 看 S 损失
for dr_pct in [-20, -10, 0, 10, 20]:
    r_test = r_opt * (1 + dr_pct/100)
    S_test = surface_area(r_test)
    print(f"r={r_test:.2f} (Δr={dr_pct:+d}%), S={S_test:.2f} (ΔS={((S_test/S_opt-1)*100):+.2f}%)")

“这个例子虽然简单,但 minimize 的用法是通用的——不管你面对的是 A 题的什么优化子问题,核心都是:定义目标函数 → 选算法 → 调用 minimize → 验证结果。把这段代码存成模板,赛场上改改目标函数就能用。”

❓ 常见困惑

Q1:物理/数学建模不会怎么办?题目读不懂,不知道用什么定律?

三步应急法:

  1. 知网搜中文期刊——搜索”<题目关键词> + 建模”,大概率找到相关中文论文,快速了解该领域的标准模型和常用公式,比自己从零推导快得多;

  2. AI 搜索辅助——把题目关键描述输入 AI(如通义千问、Kimi),问”这道题涉及哪些物理原理?有哪些经典模型?“,AI 能帮你定位方向;

  3. 找类比题目——历年国赛 A 题虽然背景不同,但底层方法类似(2021 FAST 反射面 → 几何+优化;2022 波浪能 → ODE+优化;2023 定日镜 → 几何+优化)。找到最接近的真题,参考其建模思路。

Q2:列出式子了但太复杂,不会求解怎么办?

三条降级路线:

  1. 先简化后逐步加回——先忽略次要因素(如摩擦、非线性项),求解简化版,验证逻辑正确后再逐步添加复杂因素;

  2. 数值替代解析——不要死磕解析解,绝大多数工程问题都是数值求解。用 solve_ivpminimize、GA 等工具直接算;

  3. 分治策略——把大问题拆成几个子问题,各自求解后再耦合。比如先解运动学,再加动力学约束。

3.4 读题方法论(30 分钟完成审题)

读题方法论

“30 分钟审题不是浪费时间——方向对了,后面三天都在做有用功;方向跑偏,第一天的代码全部白写。”

3.5 A 题论文写作核心要求

模块 A 题特殊要求 常见扣分
摘要 物理机理 + 数学方法 + 量化结果(数值越具体越好) 只说”建立了模型”不说什么模型
模型假设 每条物理假设都要有依据 假设无依据,纯粹为了简化
模型建立 公式推导完整,不能跳步;每个物理量有单位和量纲 推导跳步、量纲不统一
模型求解 数值方法的选择要有理由 直接用 RK4 不解释
结果分析 与物理直觉对比,解释物理含义 只报数值不解释
模型检验 灵敏度分析 + 误差分析是标配 没有灵敏度分析

推荐论文结构

1. 摘要(四要素:问题、方法、结果、结论)
2. 问题重述(用自己的话)
3. 问题分析(流程图 + 文字)
4. 模型假设(每条有依据)
5. 符号说明(表格,含单位)
6. 模型建立(物理分析 → 方程推导 → 分层次)
   ├── 6.1 基础模型(理想条件)
   ├── 6.2 扩展模型(加入实际因素)
   └── 6.3 优化模型
7. 模型求解(算法描述 + 结果展示)
8. 结果分析与验证
   ├── 8.1 结果展示
   ├── 8.2 灵敏度分析
   └── 8.3 误差/鲁棒性分析
9. 模型评价(优缺点 + 改进)
10. 参考文献
11. 附录(完整代码)

四、逐题精析 + 方法论对照 + 国奖论文解读(20 min)

四、逐题精析 + 方法论对照 + 国奖论文解读(20 min)

“接下来逐题拆解。每道题我们用统一的格式分析:题目说了什么 → 按四步法如何解题 → 国奖论文实际怎么做的 → 他们的做法吻合方法论吗?


4.1 2021A:“FAST”主动反射面的形状调节

📋 天文工程 | 空间几何 + 最小二乘 | ★★★★

题目说了什么

中国天眼 FAST(500 米口径)通过控制 2226 个促动器(液压杆)的伸缩,将球面反射面局部调节为抛物面,使天体信号聚焦到馈源舱。

数据结构

文件 内容
附件 1(CSV) 所有主索节点三维坐标(共 2226 个节点,在半径约 300 m 的基准球面上)
附件 2(CSV) 促动器下端点(地锚点)坐标 + 基准态上端点(顶端)坐标 + 对应主索节点编号
附件 3(CSV) 4300 块反射面板与周围主索节点的三角网格映射
附件 4(XLSX) 问题 2 的结果提交格式模板(顶点坐标、节点位置、伸缩量等格式要求)

问题拆解

子问题 问题要求 解题思路
问题 1 待观测天体 S 位于基准球面正上方(α=0°, β=90°),结合反射面板调节约束,确定理想抛物面 建立标准抛物面方程 \(z=(x^2+y^2)/(4f)\)(焦距 f=300 m),旋转坐标变换得到工作抛物面;顶点 \((0,0,-300.884)\)
问题 2 S 位于 α=36.795°, β=78.169°,确定理想抛物面,建立反射面板调节模型,计算促动器伸缩量(输出 result.xlsx) 主索节点沿径向(球心方向)移动到理想抛物面,移动距离即促动器伸缩量 \(d_i\);联立直线参数方程与抛物面方程求解交点;对比两类抛物面的 LSUM 验证合理性
问题 3 计算调节后馈源舱的接收比(有效区域接收的反射信号与 300 m 口径内反射信号之比),与基准球面接收比比较 计算反射面板调节后的 RMS 均方根误差;利用权面积重方法(按投影面积赋权)评估有效区域的信号接收效率;迭代优化使 RMS 逐步减小

约束条件:相邻节点间距变化不超过 0.07%;促动器径向伸缩范围 −0.6 ~ +0.6 m;下拉索长度保持不变;电磁波信号直线传播。


按四步法拆解

步骤 操作 具体内容
Step 1 物理建模 反射面 → 球面 → 局部调节 → 抛物面;信号从抛物面反射汇聚到焦点
Step 2 数学建模 以球心为原点建坐标系;理想抛物面 \(z = (x^2+y^2)/(4f)\);促动器伸缩量 \(\Delta l_i = z_i^* - z_i^0\)
Step 3 数值求解 最小二乘拟合 \(\min \sum(\Delta l_i)^2\) → 矩阵化 \(\Delta\mathbf{l} = \mathbf{A}\mathbf{p} - \mathbf{z}_0\)
Step 4 结果验证 调节后面形与理想抛物面的 RMS 误差;蒙特卡洛模拟促动器精度误差的影响

国奖论文方法论对照

论文 亮点 方法论中的位置
A115 将 2226 个促动器伸缩量写成矩阵形式,最小二乘一步求解 Step 3 做得好——数值求解的矩阵化表达,计算效率极高
A217 3D 可视化调节前后的面形对比图 + 蒙特卡洛误差鲁棒性分析 Step 4 做得好——可视化 + 鲁棒性验证双管齐下

方法论对照结论:两篇论文都没有跳出四步法框架。A115 胜在 Step 3 的矩阵化技巧,A217 胜在 Step 4 的可视化和鲁棒性。这个框架是可复现的——你能把 2226 个节点的伸缩量写成矩阵,你的论文就达到了国奖水平。

备赛启示 - 空间几何建模(坐标系建立、抛物面方程)是基本功 - 最小二乘拟合在 A 题中出现频率极高 - 三维可视化能力很重要(matplotlibplot_surfaceplotly


4.2 2022A:波浪能最大输出功率设计

📋 新能源装备 | 力学 ODE + 参数优化 | ★★★★★

题目说了什么

波浪能转换装置由浮子和振荡器(振子 + 弹簧 + 阻尼器)组成。海浪驱动浮子上下运动,浮子带动振子在磁场中运动产生电能。目标是优化装置参数使输出功率最大。

数据结构

文件 内容
附件 1(GIF) 浮子与振子的结构示意图
附件 3(XLSX) 装置物理参数(质量、弹簧刚度、阻尼系数等)
附件 4(XLSX) 波浪激励参数(频率、激励力振幅等)

问题拆解

子问题 问题要求 解题思路
问题 1 建立浮子与振子的运动模型,计算垂荡位移和速度(线性阻尼 + 非线性阻尼两种情形) 对浮子和振子分别受力分析(激振力、弹簧力、阻尼力、兴波阻尼、静水恢复力、附加质量力),列出两自由度 ODE 系统,ode45 数值求解 40 个波浪周期
问题 2 优化直线阻尼器系数 \(C\),使 PTO 系统输出功率最大 复数频域法:设稳态解 \(x=Xe^{i\omega t}\) 代入线性 ODE → 矩阵求逆得相对速度幅值 → \(P=\frac{1}{2}C\|V_{rel}\|^2\);对 \(C\) 求导得最优解析解 \(C_{opt}=37194\) N·s/m,\(P_{max}=230\) W;遍历数值解交叉验证
问题 3 考虑垂荡 + 纵摇耦合运动,建立多自由度模型 垂荡 ODE 保持不变(纵摇角为小量忽略耦合);纵摇以转轴为原点建立平动非惯性参考系,增加 2 个转动 ODE;4 自由度联立求解
问题 4 同时优化直线阻尼 \(C\) 和旋转阻尼 \(C_\theta\),使总输出功率最大 遗传算法(种群 100,迭代 200),目标函数 \(\max \frac{1}{\Delta t}\int[C(\dot{y}-\dot{x})^2 + C_\theta(\dot{b}-\dot{a})^2]dt\);最优功率约 322 W

关键物理量:波浪圆频率 ω=1.7152 rad/s;浮子质量 4866 kg,振子 2433 kg;垂荡附加质量 1028.876 kg;兴波阻尼 683.46 N·s/m;激振力振幅 3640 N;弹簧刚度 80000 N/m。


按四步法拆解

步骤 操作 具体内容
Step 1 物理建模 受力分析:浮力 + 波浪激振力 + 附加质量力 + 辐射阻尼力 + 弹簧力 + 电磁阻尼力
Step 2 数学建模 浮子:\(m_1\ddot{x}_1 = F_{\text{wave}} - k(x_1-x_2) - c_1\dot{x}_1\);振子:\(m_2\ddot{x}_2 = k(x_1-x_2) - c_2(\dot{x}_2-\dot{x}_1)\)
Step 3 数值求解 化为一阶 ODE 系统 → solve_ivp;功率 \(P = c_2(\dot{x}_1-\dot{x}_2)^2\);优化 \(\max \bar{P}(k,c_1,c_2)\)
Step 4 结果验证 时域 ODE 解 vs 频域传递函数分析 → 两种方法交叉验证

关键代码骨架

def equations(t, y, k, c1, c2):
    x1, v1, x2, v2 = y
    F_wave = wave_force(t)
    a1 = (F_wave - k*(x1-x2) - c1*v1) / m1
    a2 = (k*(x1-x2) - c2*(v1-v2)) / m2
    return [v1, a1, v2, a2]

def avg_power(params):
    k, c1, c2 = params
    sol = solve_ivp(equations, (0, 50), [0,0,0,0],
                    args=(k, c1, c2), t_eval=np.linspace(0,50,5000))
    mask = sol.t > 30  # 取稳态段
    return -np.mean(c2 * (sol.y[1,mask] - sol.y[3,mask])**2)

result = minimize(avg_power, x0=[1000,50,100],
                  bounds=[(100,10000),(10,500),(10,500)], method='L-BFGS-B')
2022A波浪能时域响应

国奖论文方法论对照

论文 亮点 方法论中的位置
A001 时域 ODE + 频域传递函数,双视角交叉验证,结果互相印证 Step 4 做得最出色——两种独立方法结果一致,可信度翻倍
A022 清晰的力学分析图 + 灵敏度分析(\(k, c_1, c_2\) 分别扰动 ±20% 画等高线) Step 1 和 Step 4 做得好——从受力图到方程推导一气呵成,灵敏度分析量化充分

方法论对照结论:这道题最吃 “Step 2 物理方程推导” 和 “Step 4 交叉验证” 的能力。A001 的时域+频域双验证是五年 A 题中最经典的验证范式——从此之后,多方法交叉验证成了 A 题高分论文的标配。

备赛启示 - 受力分析 → 牛顿第二定律 → ODE 是 A 题的核心竞争力 - solve_ivp 的用法必须熟练(二阶转一阶、参数传递、稳态截取) - 时域 + 频域双验证是本题最值得学习的技巧


4.3 2023A:定日镜场的优化设计

📋 新能源工程 | 几何光学 + 大规模优化 | ★★★★★

题目说了什么

塔式太阳能光热发电站中,数万面定日镜将阳光反射到中央吸收塔。需要优化整个镜场的布局,使年均光学效率最高。

数据结构

文件 内容
附件(XLSX) 所有定日镜中心坐标(x, y),单位:米

问题拆解

子问题 问题要求 解题思路
问题 1 吸收塔在镜场中心,定日镜均为 6 m×6 m、安装高度 4 m,给定定日镜位置,计算年平均光学效率、年平均输出热功率、单位面积年平均输出热功率 太阳位置计算(赤纬角 \(\delta\)、时角 \(\omega\)、高度角 \(\alpha_s\)、方位角 \(\gamma_s\))→ 定日镜法向量(反射定律)→ 四个效率因子:余弦效率 \(\eta_{cos}=\cos\theta\)、大气透射 \(\eta_{atm}\)(随距离衰减)、阴影遮挡 \(\eta_{sb}\)(蒙特卡洛光线追迹,40 万根光线/镜)、截断 \(\eta_{trunc}\) → 综合 \(\eta=\eta_{cos}\cdot\eta_{atm}\cdot\eta_{sb}\cdot\eta_{trunc}\)
问题 2 额定功率 60 MW,所有定日镜尺寸和安装高度相同,设计吸收塔位置、定日镜尺寸、安装高度、数目和位置,使单位面积输出热功率最大 同心圆排布策略(\(r_k\) 环上均匀分布 \(n_k=\lfloor 2\pi r_k/(W_a+5)\rfloor\) 面镜);遗传算法优化 \((L_0, W_a, W_b, h_i)\),种群 100,迭代 200;约束:间距 ≥ 镜宽+5 m,禁装区半径 100 m
问题 3 允许定日镜尺寸和安装高度不同,重新设计使单位面积输出热功率最大 分区域同心圆规划——不同区域采用不同规格 \(\vec{Q}_k=(W_{a,k}, W_{b,k}, h_{i,k})\);二分法搜索 \(L_0\) + 变步长搜索(先粗 Δ=1 m,后精 Δ=0.1 m);结果:\(W_a=6.4\) m,安装高度 7 种(3.2~3.8 m)

核心公式\(\eta = \eta_{sb} \cdot \eta_{cos} \cdot \eta_{at} \cdot \eta_{trunc} \cdot \eta_{ref}\);计算时点:每月 21 日 9:00/10:30/12:00/13:30/15:00;DNI(直接法向辐射)随日期变化。


按四步法拆解

步骤 操作 具体内容
Step 1 物理建模 太阳光 → 镜面反射 → 吸收塔;画出入射角、反射角的几何关系图
Step 2 数学建模 太阳位置(高度角 \(\alpha_s\)、方位角 \(\gamma_s\))由赤纬角、时角、纬度确定;效率 \(\eta = \eta_{\text{cos}} \times \eta_{\text{shadow}} \times \eta_{\text{atm}} \times \eta_{\text{spill}}\)
Step 3 数值求解 优化布局:先用几何关系确定粗布局模式(螺旋/径向),再用 3-5 个参数描述布局 → GA/PSO 搜索最优参数
Step 4 结果验证 效率因子逐项可视化 + 利用轴对称性验证(一个扇区的效率 ≈ 全局平均效率)

关键技巧:大规模优化 = 参数化降维

“上万面定日镜的位置优化是高维问题,直接上 GA/PSO 不现实。正确做法:先选布局模式 → 参数化 → 低维优化。”

直接优化:上万维 → 不可行
参数化降维:
  ├── 螺旋排列 → 参数:螺旋角 α、径向间距 dr、起始半径 r0(3 维)
  ├── 径向排列 → 参数:径向间距 dr、环间角度差 Δθ(2 维)
  ├── 蜂窝排列 → 参数:六边形边长 a、方向角 β(2 维)
  └── 在低维空间用 GA/PSO 优化 → 可行 ✓

国奖论文方法论对照

论文 亮点 方法论中的位置
A092 效率因子逐项分解 + 空间分布可视化(每个损失因子的热力图) Step 2 + Step 4 出色——问题分解成四个独立子模型,每个都用图说话
A165 分层次优化:先用解析方法确定粗布局,再用数值优化微调;利用镜场的轴对称性减少 80% 计算量 Step 3 做得好——参数化降维 + 对称性利用,计算效率极高
A175 年均效率的多时段采样策略(选典型日/典型时刻代替全年逐时计算) Step 3 的计算策略优化——用采样代替全量计算

方法论对照结论:这道题最能体现 Step 3(数值求解)的工程智慧——不是代码写得快就行,而是算法设计能力(降维、对称性、采样)。三篇国奖论文的 Step 1-2 大同小异,差距全在 Step 3。

备赛启示 - 天文坐标系(赤纬角、时角、高度角、方位角)是太阳能类题目的基础知识 - 大规模优化 = 参数化降维,这是一个可迁移的方法论技巧 - 计算效率是隐性评分标准:对称性利用、向量化、采样策略


4.4 2024A:“板凳龙”闹元宵

📋 民俗运动 | 链式运动学 + 数值递推 + 约束优化 | ★★★★

题目说了什么

223 节板凳首尾铰接组成龙形,每节板凳的两个把手都在阿基米德螺线上。龙头沿螺线匀速行进,后面每一节的位置由间距约束递推确定。螺线盘入过程中相邻圈的板凳可能碰撞。

数据结构:本题无独立数据附件,所有参数(板凳尺寸 2.2 m × 0.3 m、螺距 0.55 m、龙头速度 1 m/s 等)在题目正文中给出。选手自行建表输出结果。


问题拆解

子问题 问题要求 解题思路
问题 1 建立舞龙队运动状态模型:0~300 s 内每秒 224 个把手的位置和速度 阿基米德螺线 \(r=a\theta\)\(a=p/2\pi\), \(p=55\) cm);龙头前把手弧长 \(S_0=v_0t\) → 反解 \(\theta_1\);逐把手递推:已知把手 \(i\) 位置,解约束方程 \(\|P_{i+1}-P_i\|=R_i\)\(R_i\)=板凳长度)→ 求把手 \(i+1\) 位置;牛顿法/二分法迭代求解
问题 2 盘入过程碰撞检测,求终止时刻(首次碰撞时间) 分离轴定理(SAT):将板凳视为矩形,对每对相邻板凳检查 4 条边的法向量投影是否重叠;反证法证明首次碰撞发生在龙头附近;递推法:从 \(t=0\) 逐步推进,发现碰撞后缩小步长精细搜索
问题 3 最小螺距 \(p_{min}\),使盘入过程中不发生碰撞 优化模型 \(\min p\),约束碰撞检测通过 + 龙头到达调头空间边界 \(r=4.5\) m;变步长遍历法:粗搜索 Δ=5 cm → 细搜索 Δ=0.1 cm → 精搜索 Δ=0.01 cm;结果 \(p_{min}=45.04\) cm
问题 4 设计 S 形调头路径(圆弧曲线),使路径最短且满足相切约束 双圆弧模型:两段相切圆弧(\(R_1=2R_2\)),三个相切关系(入口与螺线相切、中间两圆弧相切、出口与螺线相切);优化 \(\min L=l_1+l_2\);遍历法求解得 \(L_{min}=12.51\) m
问题 5 最大龙头速度 \(v_{0,max}\),使所有把手速度 ≤ 2 m/s 优化 \(\max v_0\),约束 \(v_i \leq 2\) m/s ∀i;粒子群算法(PSO)搜索;结果 \(v_0^*=1.33\) m/s

核心参数:223 节板凳(编号 1~223,龙头为第 1 节);每节长 2.2 m、宽 0.3 m;把手间距 0.3 m;螺距 55 cm(\(a=55/(2\pi) \approx 8.75\) cm);龙头速度 1 m/s。


按四步法拆解

步骤 操作 具体内容
Step 1 物理建模 链式铰接结构 → 螺线约束 → 间距递推;碰撞 = 相邻圈线段相交
Step 2 数学建模 阿基米德螺线 \(r = a\theta\);弧长 \(s = \int\sqrt{r^2+(dr/d\theta)^2} d\theta\);递推:已知第 \(i\) 个把手位置 → 解约束方程 → 第 \(i+1\) 个把手位置
Step 3 数值求解 弧长数值积分 + 牛顿法解把手位置 + 循环递推 223 节
Step 4 结果验证 相邻把手间距是否 = 0.3 m(板凳长度)?碰撞检测通过?

关键区别

“这道题与前三年 A 题的最大区别:没有微分方程。板凳龙的运动是纯几何递推——不是所有 A 题都要列 ODE,把复杂问题简化为递推关系,比硬套 ODE 更优雅。”

核心建模链

龙头位置(螺线参数化 θ(t))
    │
    ├→ 弧长参数化:s(θ) = ∫ 螺线弧长微分
    │
    ├→ 递推求解:已知把手 i → 约束方程(间距 = 板凳长)→ 数值解把手 i+1
    │
    ├→ 碰撞检测:相邻圈板凳的线段相交判定
    │
    └→ 速度计算:位置对时间的数值微分

国奖论文方法论对照

论文 亮点 方法论中的位置
A016 递推公式简洁优雅,没有复杂微分方程,用几何约束关系一步到位 Step 2 最出色——建模简洁就是美
A053 动态可视化出色:用连续帧展示龙身沿螺线盘入全过程 Step 4 的可视化展示——评委一看就懂
A178 碰撞检测算法高效:利用螺线单调性,只需检查相邻圈而非所有 223² 对 Step 3 的算法效率优化

方法论对照结论:这道题告诉我们——不是所有 A 题都需要微分方程。四步法框架中的 Step 2(数学建模)不一定是列 ODE,也可以是几何递推关系。方法服务于问题,不要拿方法去套问题。

备赛启示 - 几何递推是 A 题的重要建模方式(不一定是 ODE) - 动态可视化是重要加分项(动画截图、连续帧展示) - 碰撞检测算法要利用几何特性优化(不暴力枚举)


4.5 2025A:烟幕干扰弹的投放策略

📋 军事背景 | 多体运动学 + 多目标优化 | ★★★★★

题目说了什么

多架无人机投放烟幕干扰弹,在目标区域形成烟幕遮蔽。需要建立烟幕弹的运动学模型,评估遮蔽效果,并优化投放策略。

数据结构:无独立数据附件,所有条件(3 枚导弹 M1-M3 坐标、5 架无人机 FY1-FY5 位置、真/假目标坐标)在题目正文中以文字给出。


问题拆解

子问题 问题要求 解题思路
问题 1 FY1 以 120 m/s 朝向假目标飞行,受领任务 1.5 s 后投放 1 枚,间隔 3.6 s 起爆。计算对 M1 的有效遮蔽时长 建立四类运动学模型(导弹匀速直线、无人机匀速等高、烟幕弹抛体、云团匀速下沉);核心创新:Bool(t) 圆柱体遮蔽判定——将保护目标离散为圆柱表面采样点,判断导弹→采样点的线段是否被云团球体遮挡;二分查找确定遮蔽时间区间
问题 2 确定 FY1 的飞行方向、速度、投放点和起爆点,使对 M1 的遮蔽时间最长 优化变量:\(v_{fy}\)(70~140 m/s)、航向角 \(\theta\)、投放时间 \(t_d\)、引爆间隔 \(\Delta t_b\);目标 \(\max \int Bool(t)dt\);多起点变步长搜索算法
问题 3 FY1 投放 3 枚干扰弹,设计对 M1 的投放策略 协调 3 枚弹的投放与起爆时序(避免时间重叠或遗漏);差分进化(DE) 算法:种群 50,\(F=0.8\)\(CR=0.9\),迭代 200;目标:三枚云团耦合遮蔽总时长最大
问题 4 FY1、FY2、FY3 各投放 1 枚,多机协同对 M1 设计投放策略 粒子群优化(PSO):每架无人机 4 个决策变量,共 12 维;辅以局部网格搜索精化(PSO 解附近 ±δ 邻域搜索)
问题 5 5 架无人机每架至多 3 枚,对 M1、M2、M3 多目标综合干扰策略 三层分解:(1) 整数线性规划分配任务(哪架打哪枚、几枚弹);(2) 分解为 3 个独立子问题分别优化;(3) 取三枚导弹遮蔽时间区间的交集作为总有效遮蔽时间;结果 21.08 s

核心参数:导弹速度 300 m/s(指向假目标 (0,0,0));无人机速度 70~140 m/s;云团半径 10 m、寿命 20 s、以 3 m/s 下沉;每架无人机投放两枚间隔 ≥1 s;保护目标为圆柱体(半径 7 m、高 10 m,底面圆心 (0,200,0))。


按四步法拆解

步骤 操作 具体内容
Step 1 物理建模 烟幕弹:投放 → 抛体运动(含风阻)→ 开伞(\(C_D A\) 突变)→ 扩散形成烟幕云团
Step 2 数学建模 三维弹道 ODE:\(m\ddot{x} = -\frac{1}{2}C_D\rho A\dot{x}\|\dot{\mathbf{r}}\|\)(含风速项);遮蔽效果:光学厚度 \(\tau(\mathbf{r}) = \sum \sigma n_k(\mathbf{r})\)
Step 3 数值求解 solve_ivp 求解弹道;多目标优化:\(\max f_1\)(遮蔽覆盖率)、\(\min f_2\)(弹药数)、\(\max f_3\)(持续时长)
Step 4 结果验证 蒙特卡洛鲁棒性分析(风速扰动 σ=1,2,5 m/s 下遮蔽效果分布);Pareto 前沿分析

模型的分层递进策略

“这道题最经典的技巧是 模型分层递进——从理想模型开始,逐层加入真实世界的复杂因素。这不只是为了让论文结构好看,更是为了每加一层新因素,都和上一层的基准结果对比,验证新因素的合理性。”

Level 1:理想抛体(无阻力)       → 解析解(验证基准)
Level 2:加入空气阻力             → 数值解(与 Level 1 对比,量化阻力影响)
Level 3:加入风场                 → 三维 ODE(与 Level 2 对比,量化风的影响)
Level 4:加入随机扰动             → 蒙特卡洛(评估鲁棒性)

国奖论文方法论对照

论文 亮点 方法论中的位置
A196 物理模型四层递进(理想→阻力→风场→随机),每层都与上层对比 Step 2 + Step 4 融合——建模即验证,分层即对照
其他亮点 Pareto 前沿分析(遮蔽率 vs 弹药消耗曲线 + 拐点标注);多风速扰动下统计分布对比 Step 3 多目标 + Step 4 鲁棒性

方法论对照结论:这道题是五年 A 题的集大成者——四步法的每一环都达到了最完整的形态。模型分层递进是 A 题论文结构设计的黄金范式:不要一步到位写出最复杂的模型,而是从最简单开始,逐层加复杂性,每层都和上层对比。

备赛启示 - 运动学 ODE(含空气阻力)是 A 题的”标准配置” - 多目标优化 + Pareto 前沿在 A 题中越来越重要 - 蒙特卡洛鲁棒性分析是高分论文的标配 - 模型分层递进是论文结构设计的黄金范式


五、备赛代码模板(2 min)

“A 题的代码不像 C 题那样有大量数据处理,但有几类核心代码必须提前准备好模板。课上快速展示,课后复制使用。”

5.1 ODE 求解模板

import numpy as np
from scipy.integrate import solve_ivp

def ode_system(t, y, *params):
    """y = [x1, v1, x2, v2, ...];返回各状态变量的导数"""
    # 在此处写物理方程
    return dydt

sol = solve_ivp(ode_system, (0, T), y0,
                t_eval=np.linspace(0, T, N), method='RK45')

5.2 参数优化模板

from scipy.optimize import minimize

def objective(params):
    # 调用 ODE/计算,返回目标值(最大化取负)
    return -metric

result = minimize(objective, x0, bounds=[(lb, ub), ...], method='L-BFGS-B')

5.3 蒙特卡洛鲁棒性模板

def mc_robustness(optimal_params, n_sim=500):
    results = []
    for _ in range(n_sim):
        perturbed = optimal_params * (1 + np.random.normal(0, 0.05, len(optimal_params)))
        results.append(compute_metric(perturbed))
    results = np.array(results)
    print(f"均值: {results.mean():.4f}, 标准差: {results.std():.4f}")
    print(f"95% CI: [{np.percentile(results,2.5):.4f}, {np.percentile(results,97.5):.4f}]")

5.4 灵敏度分析模板

def sensitivity(base_params, param_name, param_range):
    for val in param_range:
        params = base_params.copy()
        params[param_name] = val
        metric = compute_metric(params)
        # 画曲线:x=参数值, y=目标指标

5.5 三维可视化模板

from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')
ax.plot(x, y, z, 'b-', linewidth=1.5, label='轨迹')
ax.scatter(x[0], y[0], z[0], 'go', s=80, label='起点')
ax.scatter(x[-1], y[-1], z[-1], 'rs', s=80, label='终点')

六、课堂小结与选题决策(2 min)

6.1 A 题核心要点回顾

维度 内容
方法论 四步法:物理建模 → 数学方程 → 数值求解 → 结果验证
命题规律 物理/工程背景,几何建模高频,优化越来越核心,计算量逐年增大
核心方法 ODE 数值求解 + 空间几何 + 参数优化 + 蒙特卡洛鲁棒性
论文关键 公式完整、量纲一致、灵敏度分析、多方法交叉验证

6.2 选题决策:该不该选 A 题?

判断维度 选 A 题 ✓ 不选 A 题 ✗
物理基础 力学/光学/热学扎实 物理概念模糊
数学能力 能推导 ODE、处理非线性方程组 公式推导吃力
编程能力 能写大规模数值计算、调试 ODE 编程基础薄弱
队伍构成 建模手物理强 + 编程手数值计算强 三人都是数据方向

“选 A 题不是赌博,是基于对自身能力的清醒判断。如果你的队伍物理基础好、编程能力强,选 A 题竞争对手少、区分度大。如果三人都是数据分析方向,硬选 A 题反而吃亏。”

6.3 五年方法论速查

A 题常见问题 首选方法 备选方法 对应真题
运动轨迹计算 ODE + solve_ivp 递推/迭代 2022A, 2025A
几何递推 约束方程 + 牛顿法 直接迭代 2024A
参数优化 L-BFGS-B GA / PSO 2022A
多目标优化 NSGA-II / 加权法 理想点法 2025A
大规模优化 参数化降维 + GA 贪心策略 2023A
最小二乘拟合 矩阵化求解 梯度下降 2021A
鲁棒性分析 蒙特卡洛模拟 区间分析 2021A, 2025A
结果验证 灵敏度 + 量纲 + 交叉验证 解析解对照 全部