第2章 数值计算:积分、优化与插值 章节摘要:数值计算是科学计算的发动机,本章围绕三个核心问题展开:曲线下的面积怎么算得准(数值积分)、参数怎么调到最优(优化与求根)、离散点之间怎么补出连续曲线(插值与样条)。三者分别对应 scipy.integrate、scipy.optimize、scipy.interpolate 三个模块。读完本章,你将掌握自适应求积与误差估计、常微分方程初值问题的求解与事件检测、优化求解器的选型规则、最小二乘拟合的参数不确定度评估、一维与散点插值的取舍,最后用一节完整实战把去噪、拟合、评估串成一条可复用的流水线。 第2章 数值计算:积分、优化与插值 本节导航 阅读完本章,你应当能够: 用 quad 计算定积分并读懂误差估计,遇到奇异点、振荡函数知道如何处理;
章节摘要:数值计算是科学计算的发动机,本章围绕三个核心问题展开:曲线下的面积怎么算得准(数值积分)、参数怎么调到最优(优化与求根)、离散点之间怎么补出连续曲线(插值与样条)。三者分别对应 scipy.integrate、scipy.optimize、scipy.interpolate 三个模块。读完本章,你将掌握自适应求积与误差估计、常微分方程初值问题的求解与事件检测、优化求解器的选型规则、最小二乘拟合的参数不确定度评估、一维与散点插值的取舍,最后用一节完整实战把去噪、拟合、评估串成一条可复用的流水线。

阅读完本章,你应当能够:
一句话记住第 2 章:积分算面积,优化找极值,插值补曲线;三件工具合起来,就能把一堆散点变成有结论的模型。
从"为什么要自适应"讲起:固定步长的求积公式在函数变化剧烈的地方会浪费点数或漏掉细节。quad 用 Gauss-Kronrod 嵌套公式自动加密采样并给出误差估计,dblquad 与 tplquad 把同一套思想推广到二重、三重积分。后半节转入常微分方程:solve_ivp 以 RK45 等显式 Runge-Kutta 方法按误差自动变步长,事件检测让我们能精确捕捉轨迹穿越某个阈值的时刻。这节是"连续世界"的入场券。
先给出一张决策地图:无约束、能算梯度用 BFGS;只有边界约束用 L-BFGS-B;等式或不等式约束用 SLSQP;拿不到导数信息就用 Nelder-Mead。然后看最小二乘的两副面孔——curve_fit 面向显式模型并附带协方差矩阵,least_squares 更灵活、支持边界与稳健损失。最后用 fsolve 解非线性方程组,并讨论初值敏感与收敛判定的问题。贯穿全节的主张:方法选对、初值给好、收敛标志读懂,比任何调参技巧都重要。
插值是"已知点之间怎么猜"。interp1d 提供从阶梯、线性到三次样条的一串选择,无噪声数据要求曲线精确穿过每个点;数据带噪声时反而要放弃"穿过"要求,改用 UnivariateSpline,用平滑参数 s 控制弯曲程度。散点数据没有规则网格,交给 griddata 用三角剖分处理。外推风险贯穿全节:样条伸到数据范围之外,往往就是放飞自我,结果没有物理意义。
把前三节合成一条流水线:酶促反应实验得到一组带噪声的浓度与速率数据,先做移动平均去噪,再用 curve_fit 拟合米氏方程,用协方差矩阵与残差自助法评估参数不确定性,最后输出带置信带的结论。这一步是从"会用函数"跨到"能交付结果"的关键一跃,也是后续各章实战小节的样板。
本章有一条清晰的主线:先把"连续"这件事做扎实,再做"求最优",最后做"补曲线"。三个模块不是并列的三个抽屉,而是同一类数值问题在不同侧面的投影——自适应求积与变步长求解微分方程共享"误差驱动加密"的思想,优化与求根本来就是一家,插值则为拟合和积分提供连续化基础。实战节按真实工作流把它们串起来:数据先插值补缺、再拟合寻优、最后对模型积分求总量,恰是第 1 章 1.4 小程序的放大版。
2.1 积分与微分方程(算面积、推演化) ↓ 提供连续模型与误差意识 2.2 优化与求根(拟合参数、找极值) ↓ 提供参数与不确定度 2.3 插值与样条(补缺失、构造光滑曲线) ↓ 提供干净完整的输入 2.4 实战:去噪 → 拟合 → 不确定度评估 → 结论