WARNING
🧪 Beta公测版本提示:教程主体已完成,正在优化细节,欢迎大家提Issue反馈问题或建议。
积分与基本定理 — Python / C++ 代码详解
Download demo.pyDownload quad.hppDownload demo.cpp
运行方式
bash
cd docs/math/integral/code
python demo.py
g++ -std=c++17 demo.cpp -o int_demo两张图:int_riemann.png(左黎曼柱)、int_ftc.png(累加得到
代码逐段详解(Python)
第1步:左黎曼和 — align='edge'
python
h = (b - a) / n
xs = a + h * np.arange(n)
return float(np.sum(f(xs) * h)), xs, h每个柱子的左端当高度。bar(..., align='edge') 让柱子从 xs 往右长宽
第2步:梯形
python
xs = np.linspace(a, b, n + 1) # n 段 → n+1 个点
h * (0.5 * ys[0] + 0.5 * ys[-1] + np.sum(ys[1:-1]))两端各算一半,中间算整份。与 C++ trapezoid 同一公式。对
第3步:FTC 实验
python
F_num = np.array([trapezoid(0.0, x, 40) if x > 0 else 0.0 for x in xs])
dF = np.gradient(F_num, xs)每个 np.gradient 是对数组的中心差分,应对准
列表推导里 n 段积零宽区间。trapezoid(0, x, 40) 在
C++:quad.hpp
poly_int:q.c[i+1] = p.c[i] / (i+1),q.c[0]=0。次数加一,注意 POLY_MAX 别撑破。
trapezoid 的循环是 i=1; i<n,两端在循环外各算半份。n 是段数不是点数。demo.cpp 用长度为 3 的数组扫 n=4,16,64,避免某些环境下花括号列表还要 #include <initializer_list>。
源码位置
docs/math/integral/code/demo.pydocs/math/integral/code/quad.hppdocs/math/integral/code/demo.cpp