Simpson 公式
一、直观理解:用抛物线代替直线去拼面积
Simpson 公式在每个(或每两个)子区间上用二次多项式插值被积函数,再精确积分抛物线。它通常比梯形公式用同样节点得到更高精度,是手算与教学中最常用的高阶等距求积法。
复合 Simpson 要求把区间分成偶数段(经典形式),像一对一对地盖抛物线拱。
二、适用场景与优缺点
| 类型 | 说明 |
|---|---|
| 适用场景 | 等距节点;函数较光滑;需要比梯形更高的精度;教学与快速实现。 |
| 核心优点 | 误差 ,性价比高;实现仍简单;对三次多项式在单区间上甚至可精确(四点误差涉及四阶导)。 |
| 局限与缺点 | 需要偶数分段;函数光滑性不足时阶数下降;奇异/强振荡不如自适应或变元法;节点不可自由选时不如理解 Gauss 灵活。 |
三、核心原理
单区间 的 Simpson(用中点 ):
复合形式( 为偶数,):
误差:
四、实践要点
- 保证偶数段;
- 用 与 做 Richardson 外推可估计误差;
- 数据点数为偶数个间隔时才直接套公式;
- 更一般场合可用
integral自适应。
五、MATLAB 示例
%% 复合 Simpson 积分
f = @(x) sin(x);
a = 0; b = pi;
trueVal = 2; % \int_0^pi sin = 2
function s = simpson(f, a, b, n)
if mod(n,2) ~= 0
error("n 必须为偶数");
end
h = (b-a)/n;
x = a + (0:n)*h;
y = f(x);
s = h/3 * (y(1) + y(end) + 4*sum(y(2:2:end-1)) + 2*sum(y(3:2:end-2)));
end
ns = [4 8 16 32 64];
for n = ns
s = simpson(f, a, b, n);
fprintf("n=%2d, approx=%.12f, err=%.3e\n", n, s, abs(s-trueVal));
end
% 与梯形对比
x = linspace(a,b,65);
fprintf("trapz err = %.3e\n", abs(trapz(x,f(x))-trueVal));
fprintf("Simpson n=64 err = %.3e\n", abs(simpson(f,a,b,64)-trueVal));
收敛阶验证:
f = @(x) exp(x);
a=0; b=1; trueVal = exp(1)-1;
n1=32; n2=64;
e1 = abs(simpson(f,a,b,n1)-trueVal);
e2 = abs(simpson(f,a,b,n2)-trueVal);
p = log(e1/e2)/log(2);
fprintf("观测收敛阶 ≈ %.2f(理论 4)\n", p);
六、如何解释结果
写明分段数、是否复合 Simpson、近似值与误差估计。若函数四阶导很大,应说明需要更密网格或换方法。
七、常见误区
1. 为奇数硬套公式
应改 或改用其他规则。
2. 认为永远比梯形准
光滑性不足或实现有误时未必。
3. 忽略端点权重模式
系数是 1-4-2-4-...-2-4-1,写错会系统偏差。
附:建模流程中的落地清单(Simpson 公式)
在竞赛或课程论文中,仅写出定义式往往不够。建议按下列顺序组织材料,既能保证可复现,也便于评委快速抓住贡献。
1. 问题对齐
先用两三句话说明:题目中的哪个子问题对应本方法,输入是什么,输出要支持什么决策。避免“因为常见所以使用”。若存在更简单的替代方法,应说明为何不够用。
2. 符号与单位
列出核心符号表,强调单位一致。许多错误并非算法失败,而是日/年、米/千米、概率/百分比混用。对无量纲参数,说明取值来源(估计、文献、情景设定)。
3. 关键公式回顾
用抛物线片逼近,复合误差 ,但经典形式要求偶数段。
4. 计算与实现要点
- 固定随机种子(若涉及随机);
- 记录中间量以便手算核对小例子;
- 用极限情形或解析特例做冒烟测试;
- 保存主要输入输出到表格,便于敏感性分析复用。
5. 补充 MATLAB 片段
% 见正文 simpson 实现;此处用 integral 对照
fprintf('%.12f\n', integral(@(x)sin(x),0,pi));
6. 结果报告模板
建议至少报告:分段数(偶数)、近似值、观测收敛阶、与梯形误差对比。
7. 何时不该使用
为奇数仍硬套系数模板;或函数不光滑却声称四阶精度。
完成以上清单后,再进入“小结”中的一句话金句,通常论文的方法段与验证段就会扎实许多。
八、小结
Simpson 公式用抛物线片逼近被积函数,复合形式具有 精度,是等距节点下性价比很高的经典方法。理解它有助于过渡到更高阶牛顿—科特斯公式与自适应积分。