级数与函数逼近可视化

级数收敛性演示

围绕级数收敛性演示,观察无穷级数、级数收敛、部分和之间的关系与推理路径。

打开原视频

series_convergence.py
1from manim import *2import numpy as np3 4class SeriesConvergence(Scene):5    def construct(self):6        # 创建标题7        title = Text("级数收敛性演示", font="SimSun", font_size=36)8        title.to_edge(UP)9        self.play(Write(title))10        self.wait(1)11 12        # 创建坐标系13        axes = Axes(14            x_range=[0, 10, 1],15            y_range=[0, 2.5, 0.5],16            axis_config={"color": GREY},17            x_length=10,18            y_length=619        ).shift(DOWN * 0.5)20        21        axes_labels = axes.get_axis_labels(22            x_label="n",23            y_label="S_n"24        )25 26        self.play(Create(axes), Write(axes_labels))27        self.wait(1)28 29        # 创建几何级数 Sn = 1 + 1/2 + 1/4 + ... + 1/2^n30        def geometric_sum(n):31            return 2 * (1 - 1/2**(n+1))32 33        geometric_points = [axes.c2p(n, geometric_sum(n)) for n in range(10)]34        geometric_dots = VGroup(*[Dot(point, color=BLUE) for point in geometric_points])35        geometric_line = VMobject(color=BLUE)36        geometric_line.set_points_smoothly(geometric_points)37 38        geometric_label = MathTex(39            r"S_n = \sum_{k=0}^n \frac{1}{2^k}",40            color=BLUE41        ).scale(0.8).next_to(axes, UP, buff=0.2)42 43        # 创建调和级数 Sn = 1 + 1/2 + 1/3 + ... + 1/n44        def harmonic_sum(n):45            return sum(1/k for k in range(1, n+2))46 47        harmonic_points = [axes.c2p(n, harmonic_sum(n)) for n in range(10)]48        harmonic_dots = VGroup(*[Dot(point, color=RED) for point in harmonic_points])49        harmonic_line = VMobject(color=RED)50        harmonic_line.set_points_smoothly(harmonic_points)51 52        harmonic_label = MathTex(53            r"H_n = \sum_{k=1}^n \frac{1}{k}",54            color=RED55        ).scale(0.8).next_to(geometric_label, DOWN, buff=0.2)56 57        # 显示几何级数58        self.play(Write(geometric_label))59        for i in range(len(geometric_dots)):60            self.play(61                Create(geometric_dots[i]),62                Create(geometric_line) if i == len(geometric_dots)-1 else Wait(),63                run_time=0.364            )65        self.wait(1)66 67        # 显示调和级数68        self.play(Write(harmonic_label))69        for i in range(len(harmonic_dots)):70            self.play(71                Create(harmonic_dots[i]),72                Create(harmonic_line) if i == len(harmonic_dots)-1 else Wait(),73                run_time=0.374            )75        self.wait(1)76 77        # 添加极限线78        limit_line = DashedLine(79            axes.c2p(0, 2),80            axes.c2p(10, 2),81            color=BLUE_A82        )83        limit_label = MathTex(r"\lim_{n \to \infty} S_n = 2", color=BLUE_A).next_to(limit_line, RIGHT)84 85        self.play(86            Create(limit_line),87            Write(limit_label)88        )89        self.wait(1)90 91        # 添加发散箭头92        divergent_arrow = Arrow(93            axes.c2p(9, 2.3),94            axes.c2p(10, 2.5),95            color=RED_A,96            buff=097        )98        divergent_label = MathTex(99            r"\lim_{n \to \infty} H_n = \infty",100            color=RED_A101        ).next_to(divergent_arrow, RIGHT)102 103        self.play(104            Create(divergent_arrow),105            Write(divergent_label)106        )107        self.wait(1)108 109        # 添加部分和公式110        geometric_sum_formula = MathTex(111            r"S_n = 2(1-\frac{1}{2^{n+1}})",112            color=BLUE113        ).scale(0.8).to_corner(DL)114 115        harmonic_sum_formula = MathTex(116            r"H_n \approx \ln(n) + \gamma",117            color=RED118        ).scale(0.8).next_to(geometric_sum_formula, DOWN, buff=0.2)119 120        self.play(121            Write(geometric_sum_formula),122            Write(harmonic_sum_formula)123        )124 125        # 添加解释文本126        explanation = Text(127            "几何级数收敛性分析:\n" + 128            "1. 首项为1,公比为1/2\n" +129            "2. |q| = 1/2 < 1,级数收敛\n" +130            "3. 收敛于S∞ = a/(1-q) = 2",131            font="SimSun",132            font_size=24,133            line_spacing=1.2134        ).to_corner(DR)135 136        self.play(Write(explanation))137        self.wait(2)138 139def main():140    import os141    os.system("manim -pqh series_convergence.py SeriesConvergence")142 143if __name__ == "__main__":144    main()

讲解

这个视频围绕「级数收敛性演示」展开。画面把问题、图像和公式放在同一条理解路径中,让抽象关系先被看见。

开头先建立问题背景和主要对象,让观察从标题、坐标或第一组关系进入。

画面中出现的文字「级数收敛性演示」给出视觉入口。随后画面通过对象创建、移动、淡入淡出和高亮,把抽象命题拆成可以跟随的步骤。

随后出现更具体的图像或公式提示,动画会把局部对象和整体结论联系起来。这里可以重点观察变量、曲线、区域或向量如何随镜头推进而变化。

核心公式可以写成:

limnSn=2\lim_{n \to \infty} S_n = 2

这类公式可以和画面中的符号一一对应。

观察路径

观察路径可以分三步:先锁定「级数收敛性演示」中的核心对象,尤其留意无穷级数、级数收敛、部分和之间的联系;再跟随画面中变量、图像或向量的变化;最后回到公式或结论,判断局部变化如何支撑整体关系。

本页可以从无穷级数、级数收敛、部分和这些概念进入,继续沿相邻问题观察同一类数学结构。