manim动画:利用极限的定义证明极限。

函数的证明

用极限的定义来证明下面的极限。

\mathop {\lim }\limits_{x \to 4} {x^2} + x - 11 = 9

 要用极限的定义证明 \mathop {\lim }\limits_{x \to 4} {x^2} + x - 11 = 9,我们可以使用极限的定义:

 设f(x)在包含a的开区间中对所有x≠a有定义,设L为实数。然后

\displaystyle{\lim_{x\to{a}}}f\,(x)=L

 如果,任意一个\epsilon\,>\,0,存在一个 \delta\,>\,0以至于如果0\,<\,|x-a|\,<\delta对于所有x在f的定义域内,然后

\left| {f\left( x \right) - L} \right| < \varepsilon \hspace{0.5in}{\mbox{whenever}}\hspace{0.5in}0 < \left| {x - a} \right| < \delta

 用定义我们得到:f(x)=x^{2}+x-11,L=9  同时 a=4

要用极限的定义证明 \lim_{x \to 4} (x^2 + x - 11) = 9,我们可以使用极限的定义:对任意的\epsilon > 0,存在 \delta > 0,使得当0 < |x - 4| < \delta 时,有 |f(x) - L| < \epsilon,其中 f(x) = x^2 + x - 11L = 9。  

证明步骤如下: 

1. 计算 f(4)

        f(4) = 4^2 + 4 - 11 = 16 + 4 - 11 = 9

2. 设|f(x) - 9| < \epsilon  :  我们需要证明,当 x 足够接近 4 时,|(x^2 + x - 11) - 9| < \epsilon。  

   这可以简化为:   |x^2 + x - 20| < \epsilon


   因为        x^2 + x - 11 - 9 = x^2 + x - 20。  

3. 因此,我们需要分析:  
                                          |x^2 + x - 20|
   进行分解,x^2 + x - 20 = (x - 4)(x + 5)。  

   所以我们需要找到\delta使得当|x - 4| < \delta 时,  
         ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​                                        ​​​​​​​ |(x - 4)(x + 5)| < \epsilon

4. 为了简化分析,我们假设 x 接近 4,假设 |x - 4| < 1,则 3 < x < 5。  

   因此,x + 5 的范围为:  
                                         3 + 5 < x + 5 < 5 + 5 \Rightarrow 8 < x + 5 < 10
   这意味着 |x + 5| < 10。  

5. 因此,我们有:  
   |(x - 4)(x + 5)| < |x - 4| \cdot |x + 5| <\frac{|x - 4|}{10}

6. 因此,可以选择|x - 4| < \frac{\epsilon}{10},于是|(x - 4)(x + 5)| < \epsilon。  

7. 最终,我们可以设定 \delta = \min(1, \frac{\epsilon}{10})。  

综上所述,对于任意的\epsilon > 0,我们可以找到\delta使得当0 < |x - 4| < \delta 时,有 |x^2 + x - 11 - 9| < \epsilon,因此证明了:  
        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \lim_{x \to 4} (x^2 + x - 11) = 9

 

用manim代码,播放计算结果: 

from manim import *  

class LimitProofEx88(Scene):  
    def construct(self):  
        # 创建标题和极限表达式  
        title = MarkupText("证明极限:").scale(0.9)  
        t1 = MathTex(r"\lim_{x \to 4} (x^2 + x - 11) = 9").scale(0.9)  
        tt = VGroup(title, t1).arrange(RIGHT)  
        tt.to_edge(UP)
        tt.shift(LEFT*2)
        self.add(tt)

        # 创建步骤和方程  
        elements = []  

        # Step 1  
        step1 = MarkupText("1. 计算:")  
        equation1 = MathTex(r"f(4) = 4^2 + 4 - 11 = 9")  
        elements.append(step1)  
        elements.append(equation1)  

        # Step 2  
        step2 = MarkupText("2. 设 ")  
        step2_equation = MathTex(r"|f(x) - 9| < \epsilon:")  
        equation2 = MathTex(r"|x^2 + x - 20| < \epsilon")  
        elements.append(step2)  
        elements.append(step2_equation)  
        elements.append(equation2)  

        # Step 3  
        step3 = MarkupText("3. 分解: ")  
        step3_equation = MathTex(r"x^2 + x - 20 = (x - 4)(x + 5)")  
        elements.append(step3)  
        elements.append(step3_equation)  

        # Step 4  
        step4 = MarkupText("4. 假设 ")  
        step4_equation = MathTex(r"|x - 4| < 1: 3 < x < 5 : 8 < x + 5 < 10")  
        elements.append(step4)  
        elements.append(step4_equation)  

        # Step 5  
        step5 = MarkupText("5. 由此得: ")  
        step5_equation = MathTex(r"| (x - 4)(x + 5) | < |x - 4| \cdot 10")  
        elements.append(step5)  
        elements.append(step5_equation)  

        # Step 6  
        step6 = MarkupText("6. 选择: ")  
        step6_equation = MathTex(r"|x - 4| < \frac{\epsilon}{10}")  
        elements.append(step6)  
        elements.append(step6_equation)  

        # Step 7  
        step7 = MarkupText("7. 设定: ")  
        step7_equation = MathTex(r"\delta = \min\left(1, \frac{\epsilon}{10}\right)")  
        elements.append(step7)  
        elements.append(step7_equation)  

        # Conclusion  
        conclusion_text = MarkupText("因此: ").scale(1.2)  
        conclusion_equation = MathTex(r"\lim_{x \to 4} (x^2 + x - 11) = 9")  
        elements.append(conclusion_text)  
        elements.append(conclusion_equation)  

        # 创建函数图像  
        axes = Axes(x_range=[0,6], y_range=[3, 12], axis_config={"color": BLUE}).add_coordinates() 
        graph = axes.plot(lambda x: x**2 + x - 11, color=YELLOW)  
        graph_label = axes.get_graph_label(graph, label='f(x) = x^2 + x - 11') 
        self.add(Dot(axes.c2p(4,9),radius=0.25,color=RED))

        # 显示页面内容  
        for i in range(0, len(elements), 7):  
            # 添加坐标系和图像  
            self.play(Create(axes), Create(graph), Write(graph_label))  
            # 逐行添加说明内容,同时翻页  
            for element in elements[i:i + 7]:  
                self.play(Write(element))
                self.play(FadeOut(element))
                self.wait(1)  
            # 翻页时清除页面  
            self.play(FadeOut(*elements[i:i + 7]))  
            self.wait(0.5)  # 等待一段时间后再显示下一页  

        # 最后显示结论  
        self.play(Write(conclusion_text), Write(conclusion_equation))  
        self.wait(2)  

        # 清除所有元素  
        self.play(FadeOut(*self.mobjects))
        
%manim -qm -v WARNING LimitProofEx88

解释代码:

  1. 标题和极限表达式创建

    title = MarkupText("证明极限:").scale(0.9) 
    t1 = MathTex(r"\lim_{x \to 4} (x^2 + x - 11) = 9").scale(0.9) 
    tt = VGroup(title, t1).arrange(RIGHT) 
    tt.to_edge(UP) 
    tt.shift(LEFT * 2) self.add(tt) 
    • MarkupText 用于创建带有格式的中文文本。
    • MathTex 用于创建数学公式。
    • VGroup 把两个元素组合在一起并以右对齐的方式排列。
    • 将组合移动到顶部,并略微向左偏移。
    • 最后把 tt 添加到场景中。
  2. 创建步骤和方程

    elements = [] 

    初始化一个空列表,用于存储将要展示的步骤和方程。

    接下来逐步创建每个步骤:

    • # Step 1 
      step1 = MarkupText("1. 计算:") 
      equation1 = MathTex(r"f(4) = 4^2 + 4 - 11 = 9") 
      elements.append(step1) 
      ​​​​​​​elements.append(equation1) 
    • 重复以上过程为每个步骤创建内容,包括假设、计算等,且每个元素添加至elements列表。

  3. 创建结论

    conclusion_text = MarkupText("因此: ").scale(1.2) 
    conclusion_equation = MathTex(r"\lim_{x \to 4} (x^2 + x - 11) = 9") 
    elements.append(conclusion_text) 
    elements.append(conclusion_equation) 

    这里创建了总结部分,即用文字和数学公式表明计算最后的结论。

  4. 创建函数图像

    axes = Axes(x_range=[0, 6], y_range=[3, 12], axis_config={"color": BLUE}).add_coordinates() 
    graph = axes.plot(lambda x: x**2 + x - 11, color=YELLOW) 
    graph_label = axes.get_graph_label(graph, label='f(x) = x^2 + x - 11') 
    self.add(Dot(axes.c2p(4, 9), radius=0.25, color=RED)) 
    • Axes 创建坐标系,x_range 和 y_range 分别定义x轴和y轴的显示范围。
    • 使用 lambda 定义函数 f(x) = x^2 + x - 11来绘制图像。
    • add_coordinates() 在坐标系中添加坐标标记。
    • 添加图形的标签。
    • 在位置 (4, 9) 上添加一个红色的点,标记极限点。
  5. 显示内容

    for i in range(0, len(elements), 7): 

    这个循环用于分页显示元素,每页最多显示7个元素。

    • 添加坐标系和图像

      self.play(Create(axes), Create(graph), Write(graph_label)) 
    • 逐行添加步骤内容

      for element in elements[i:i + 7]: 
            ​​​​​​​self.play(Write(element)) 
            self.play(FadeOut(element)) 
            self.wait(1) 

      逐个写出每个步骤内容,每次写出后立即淡出下一步内容,并在每步之间等待1秒。

    • 翻页效果

      self.play(FadeOut(*elements[i:i + 7])) 
      self.wait(0.5) # 等待一段时间后再显示下一页 

      每次展示后清除上一页的内容,保持页面整洁。

  6. 最后显示结论

    self.play(Write(conclusion_text), Write(conclusion_equation)) 
    self.wait(2) 

    在所有步骤结束后,展示结论的内容,并等待2秒以便观众可以阅读。

  7. 清除所有元素

    self.play(FadeOut(*self.mobjects)) 

在场景结束时,淡出所有的元素以完成动画。

可能的改进或注意事项:

  1. 协调显示时间:根据演示需求,您可能需要调整每个元素的显示时间,以确保观众有足够的时间理解内容。
  2. 图像刷新:通过修改逻辑,可以让函数图像在翻页过程中更平滑地呈现,特别是在需要强调的点时。
  3. 元素管理:可以考虑将步骤和结论内容单独封装为方法,以提高代码的可读性和复用性。
  4. 交互性:如果想增加观众的参与感,可以考虑运用一些交互性元素,比如提问或使用反转效果。

这段代码很完整,通过使用Manim的功能很好地展示了一个极限的证明过程。希望这个解释能帮助您更好地理解代码的逻辑和意图!

局部运行结果

 想看完整视频可以看看资源里https://download.csdn.net/download/qq_45449625/89688627icon-default.png?t=N7T8https://download.csdn.net/download/qq_45449625/89688627

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yasen.M

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值