当前位置:首页>python>Python与数学之美 | 黎曼和积分

Python与数学之美 | 黎曼和积分

  • 2026-10-11 13:23:52
Python与数学之美 | 黎曼和积分

01. 一个古老的问题

想象一下,你手里有一块形状不规则的土地,边缘是一条平滑弯曲的河流。

在微积分发明之前,如果你想算出这块地的面积,你会怎么做?古人很聪明,他们想到了一个办法:把它切成一个个矩形。

这时候,一个疯狂的想法诞生了:如果把矩形切得无限窄,数量变得无限多,会发生什么?

02. 见证“极限”的魔法

这就是微积分里最迷人、也最反直觉的概念:黎曼和(Riemann Sum)。

让我们把时间放慢,亲眼看看当矩形数量 nn 趋向于无穷大时,奇迹是如何发生的。

看到了吗?

那些原本生硬的直角阶梯,在“无限细分”的瞬间,突然变成了一条光滑的曲线。原本只是“近似值”的面积累加,在这一刻,坍缩成了“精确值”。

这就是定积分的本质:
而这个长长的像S一样的符号,其实就是一个拉长的 "S" (Sum),代表求和。 而那个小小的dx,就是那个无限窄的矩形宽度。

03. “无穷小”到底是什么意思?

老师会告诉你:“当dx趋近于0时...” 

你会问:“那它等于0吗?” 

老师说:“不等于0,但又无限接近0。” 

你:“???”

让我们换个角度理解。

在这个动态演示中,每一个橙色的小矩形,都是有限的。它有宽度,有高度,有面积。无论矩形多窄,只要数量是有限的,误差就永远存在。

但是,当我们引入“无穷”这个概念时,游戏规则变了。

  • 有限步:我们是在做加法,每一步都有残留的误差。
  • 无限步:我们不再是一步步走,而是直接跨越到了终点。

所谓的“无穷小累加”,并不是真的要把无数个东西加起来(那是永远加不完的),而是一种思维的飞跃:

当我们允许分割无限细密时,离散的“阶梯”就连续成了光滑的“斜坡”。

这不仅仅是数学技巧,这是一种世界观。它告诉我们:宏观的平滑,往往是由微观的无数离散累积而成的。

就像高清照片是由无数个像素点组成的,就像流畅的视频是由无数帧静态画面组成的,就像你此刻平稳的呼吸,是由无数次微小的气体交换累积而成的。

04. 动手试一试:让数学动起来

微积分的美,在于你可以亲手验证它。

下面是一段简单的 Python 代码(仅需 matplotlib 库),动态复现了刚才的过程。你可以看着矩形一点点变窄,看着误差一点点消失。

复制以下代码,在你的电脑上运行,见证“极限”的发生:

import numpy as npimport matplotlib.pyplot as pltfrom matplotlib.animation import FuncAnimation# 设置中文字体plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans']plt.rcParams['axes.unicode_minus'] = False# 定义函数def f(x):    return x ** 2  # 使用简单的抛物线# 计算真实积分值 (从0到2)def true_integral(a, b):    return (b ** 3 - a ** 3) / 3# 创建图形fig, ax = plt.subplots(figsize=(10, 6))ax.set_xlim(0, 2.2)ax.set_ylim(0, 5)ax.set_xlabel('x', fontsize=12)ax.set_ylabel('y', fontsize=12)ax.set_title('黎曼和与定积分 - 矩形逼近曲线下的面积', fontsize=14, fontweight='bold')# 绘制真实曲线x_curve = np.linspace(0, 2, 100)ax.plot(x_curve, f(x_curve), 'b-', linewidth=2, label='y = x²')# 存储矩形和文本对象rects = []text_area = Nonetext_error = None# 初始化def init():    global text_area, text_error    # 清除之前的矩形    for rect in rects:        rect.remove()    rects.clear()    # 创建文本显示    if text_area is None:        text_area = ax.text(0.5, 4.5, '', fontsize=11,                            bbox=dict(boxstyle='round', facecolor='wheat', alpha=0.5))        text_error = ax.text(0.5, 4.0, '', fontsize=11,                             bbox=dict(boxstyle='round', facecolor='lightblue', alpha=0.5))    return rects + [text_area, text_error]# 更新函数def update(frame):    # 清除之前的矩形    for rect in rects:        rect.remove()    rects.clear()    # 矩形数量从2开始,逐渐增加    n = max(2, frame * 2)    a, b = 0, 2    dx = (b - a) / n    # 计算黎曼和(使用左端点)    riemann_sum = 0    # 绘制矩形    for i in range(n):        x_left = a + i * dx        x_right = x_left + dx        height = f(x_left)  # 左端点高度        riemann_sum += height * dx        # 创建矩形        rect = plt.Rectangle((x_left, 0), dx, height,                             fill=True, alpha=0.6,                             color='orange', edgecolor='red', linewidth=0.5)        ax.add_patch(rect)        rects.append(rect)    # 计算真实值和误差    true_value = true_integral(a, b)    error = abs(riemann_sum - true_value)    error_percent = (error / true_value) * 100    # 更新文本    text_area.set_text(f'矩形数量: {n}\n黎曼和: {riemann_sum:.4f}\n真实积分: {true_value:.4f}')    text_error.set_text(f'绝对误差: {error:.4f}\n相对误差: {error_percent:.2f}%')    return rects + [text_area, text_error]# 创建动画ani = FuncAnimation(fig, update, frames=range(1, 26),                    init_func=init, blit=True, interval=500, repeat=True)# 添加说明plt.figtext(0.5, 0.02,            '随着矩形数量增加 → 矩形变窄 → 黎曼和趋近真实积分值\n' +            '体现了"无穷小累加"的极限思想',            ha='center', fontsize=10, style='italic',            bbox=dict(boxstyle='round', facecolor='lightgreen', alpha=0.3))plt.tight_layout()plt.show()# 如需保存为gif,取消下面注释# ani.save('riemann_sum.gif', writer='pillow', fps=2)

数学从来不是冷冰冰的公式堆砌。

当你看到那些橙色的矩形最终完美填满曲线下的空间时,希望你也能感受到那份震撼。

那是人类智慧的高光时刻:我们用有限的思维,通过“极限”这座桥梁,触碰到了无限的真理~


过往文章/合集

合集

文章

Python编程小技巧

Python编程小技巧--用Python查询天气

Python编程小技巧--定制你的gif动图

Python--数据/图像可视化

Python编程小技巧--雷达图

报表"不直观"?20行Python代码做出高颜值KPI仪表盘,惊艳全场!

Python数据可视化--绘制树状图(电商品类销售分析)

Python编程基础算法

Python编程基础算法--斐波那契数列的矩阵算法

Python编程基础算法--LeetCode编辑距离问题

细数那些经典教材

细数那些经典教材--算法与数据结构

细数那些经典教材--编程竞赛

细数那些经典教材--机器学习入门就劝退?这几本“神书”帮你少走弯路!

细数那些经典科普书 | 量子物理史话与薛定谔的猫

Python库巡礼

Python库巡礼--PySpark

Python 库巡礼--matplotlib:数据可视化的基石

Python与数学之美

Python与数学之美--可视化理解导数本质

Python与数学之美--星形线(来自300年前的"完美曲线")

Python与办公自动化
Python与办公自动化--批量生成报告/通知
Python与办公自动化--核对两张万行数据表的差异
Python与办公自动化--PDF的合并与拆分
计算机科学人物志
计算机科学人物志--图灵(理论起源)
计算机科学人物志 | Dijkstra:在混乱的世界里构建秩序

最新文章

随机文章