首页 > 其他分享 >manim动画:利用极限的定义证明极限。

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

时间:2024-08-29 10:54:53浏览次数:5  
标签:动画 elements self MarkupText 极限 MathTex equation append 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

标签:动画,elements,self,MarkupText,极限,MathTex,equation,append,manim
From: https://blog.csdn.net/qq_45449625/article/details/141653933

相关文章

  • CSS3实现购物车动画效果
    概述小程序商城或者web端网站时,我们可以只通过CSS的animation和transform,而不需要借助额外的第三方库轻松实现简单的动画效果,丰富页面的表达效果效果如下图所示,点击按钮就会有个商品进入左下角的购物车内购物车动画示例地址代码示例元素开始只需要写按钮和购......
  • 白骑士的CSS教学进阶篇之变形与过渡 3.1.3 动画
            CSS动画允许开发者在网页中创建复杂的动态效果,而不需要依赖JavaScript。通过使用‘@keyframes‘规则定义动画的关键帧,以及‘animation‘属性来控制动画的行为和效果,你可以实现从简单到复杂的各种动画效果。以下内容将详细讲解CSS动画的各个部分,包括‘......
  • css文字下划线动画
    <!DOCTYPEhtml><html><head><style>.titlespan{background:linear-gradient(toright,#ec6b5f,#61c554)no-repeat;background-size:02px;background-pos......
  • Vue 3 + GSAP:解锁高性能动画的神奇组合
    在一个偶然的场景使用了GSAP(GreenSockAnimationPlatform),感觉挺好玩的,在此浅浅记录一下。GSAP是一个功能强大的JS动画库,常用于创建高性能、流畅的动画。它不仅支持基本的动画,还提供了时间轴控制、缓动效果等高级功能。将其与Vue3结合,可以轻松给Vue组件添加复杂的动......
  • 专为动画师、设计师和视频制作者设计 (Adobe CH) win/mac软件安装下载和快捷键的使用
    一、软件概述1.1简介AdobeCharacterAnimator(简称AdobeCH)是一款由AdobeSystems开发的创新软件,专为动画师、设计师和视频制作者设计,能够轻松地将静态图像(如手绘、Photoshop或Illustrator作品)转变为生动的角色,并通过实时动作捕捉技术让这些角色“活”起来。无论是直播......
  • 腾讯地图SDK Android版开发 8 覆盖物示例2动画
    腾讯地图SDKAndroid版开发8覆盖物示例2动画动画相关的类和接口帧动画Animation动画Marker接口继承关系Animation接口类及其子接口类AnimationableIAnimationSetTencentMapComponent地图组件接口类Marker动画示例界面布局MapMarkAnimate类常量成员变量初始值创建......
  • 高德地图SDK Android版开发 8 覆盖物示例2动画
    高德地图SDKAndroid版开发8覆盖物示例2动画前言动画相关的类和接口帧动画MarkerOptionsAnimation动画Animation类及其子类AnimationTranslateAnimationRotateAnimationAlphaAnimationScaleAnimationAnimationSetMarker动画示例界面布局MapMarkAnimate类常量成员变......
  • 中心极限定理
    中心极限定理(CentralLimitTheorem,CLT)是统计学中的一个重要定理,它描述了在某些条件下,大量独立随机变量的平均值的分布特性。简单来说,中心极限定理告诉我们:无论原始数据的分布是什么样的,只要样本量足够大,这些样本平均值的分布都会接近正态分布(钟形曲线)。详细解释1.背景和......
  • CSS属性background-position-y实现动画
    CSS属性background-position-y实现动画引言background-position-y属性用于设置初始状态时背景图片在垂直方向的位置,这个位置相对于通过background-origin定义的背景层原点进行定位,详见MDN文档。今天要分享的是如何利用background-position-y属性实现简单的动画,源图是静......
  • Unity滚滚车轮计划 之 新输入系统控制2D角色移动动画(俯视)
            本系列的初衷是因为很多时候基础代码不得不重复又重复,所以为了更快更好地学习到新的知识,我就把已经掌握的知识造成自己的轮子吧,等用到的时候直接复制就行了叠甲:虽然不能保证全是原创,有些写法可能烂大街,但肯定是我自己学会了之后可能稍加改动,再敲上去的,知识......