本文主要是介绍manim动画:利用极限的定义证明极限。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
函数的证明
用极限的定义来证明下面的极限。
要用极限的定义证明 ,我们可以使用极限的定义:
设f(x)在包含a的开区间中对所有x≠a有定义,设L为实数。然后
如果,任意一个,存在一个 ,以至于如果对于所有x在f的定义域内,然后
用定义我们得到:, 同时
要用极限的定义证明 ,我们可以使用极限的定义:对任意的,存在 ,使得当 时,有 ,其中 和 。
证明步骤如下:
1. 计算
2. 设 : 我们需要证明,当 x 足够接近 4 时,。
这可以简化为:
因为 。
3. 因此,我们需要分析:
进行分解,。
所以我们需要找到使得当 时,
4. 为了简化分析,我们假设 x 接近 4,假设 ,则 。
因此,x + 5 的范围为:
这意味着 。
5. 因此,我们有:
6. 因此,可以选择,于是。
7. 最终,我们可以设定 。
综上所述,对于任意的,我们可以找到使得当 时,有 ,因此证明了:
用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
解释代码:
-
标题和极限表达式创建:
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
添加到场景中。
-
创建步骤和方程:
elements = []
初始化一个空列表,用于存储将要展示的步骤和方程。
接下来逐步创建每个步骤:
-
# Step 1 step1 = MarkupText("1. 计算:") equation1 = MathTex(r"f(4) = 4^2 + 4 - 11 = 9") elements.append(step1) elements.append(equation1)
-
重复以上过程为每个步骤创建内容,包括假设、计算等,且每个元素添加至
elements
列表。
-
-
创建结论:
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))
Axes
创建坐标系,x_range
和y_range
分别定义x轴和y轴的显示范围。- 使用
lambda
定义函数f(x) = x^2 + x - 11
来绘制图像。 add_coordinates()
在坐标系中添加坐标标记。- 添加图形的标签。
- 在位置 (4, 9) 上添加一个红色的点,标记极限点。
-
显示内容:
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) # 等待一段时间后再显示下一页
每次展示后清除上一页的内容,保持页面整洁。
-
-
最后显示结论:
self.play(Write(conclusion_text), Write(conclusion_equation)) self.wait(2)
在所有步骤结束后,展示结论的内容,并等待2秒以便观众可以阅读。
-
清除所有元素:
self.play(FadeOut(*self.mobjects))
在场景结束时,淡出所有的元素以完成动画。
可能的改进或注意事项:
- 协调显示时间:根据演示需求,您可能需要调整每个元素的显示时间,以确保观众有足够的时间理解内容。
- 图像刷新:通过修改逻辑,可以让函数图像在翻页过程中更平滑地呈现,特别是在需要强调的点时。
- 元素管理:可以考虑将步骤和结论内容单独封装为方法,以提高代码的可读性和复用性。
- 交互性:如果想增加观众的参与感,可以考虑运用一些交互性元素,比如提问或使用反转效果。
这段代码很完整,通过使用Manim的功能很好地展示了一个极限的证明过程。希望这个解释能帮助您更好地理解代码的逻辑和意图!
局部运行结果
想看完整视频可以看看资源里https://download.csdn.net/download/qq_45449625/89688627https://download.csdn.net/download/qq_45449625/89688627
这篇关于manim动画:利用极限的定义证明极限。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!