函数在定义域(如果存在)点a处的极限是当函数的参数接近时函数所接近的值。极限的概念是微积分和分析的基本概念。它可以用来定义导数和定积分,也可以用来分析函数在兴趣点附近的局部行为。
一般的来说,一个函数在a处有极限L,如果有可能通过选择越来越接近a的值使函数任意接近L。注意,a处的实际值与极限值无关。
极限函数如下:
也就是当x趋于a时f(x)的极限是L
1.函数的极限
定义:
设f(x)在包含a的开区间中对所有x≠a有定义,设L为实数。然后
如果,任意一个,存在一个 ,以至于如果对于所有x在f的定义域内,然后
用manim实现定义的证明:
from manim import *
class LimitGraph01(Scene):
def construct(self):
# 设置背景颜色为白色
self.camera.background_color = WHITE
# 创建坐标轴
axes = Axes(
x_range=[0, 4, 1], # x轴范围从0到4,刻度间隔为1
y_range=[0, 4, 1], # y轴范围从0到4,刻度间隔为1
axis_config={"color": BLUE}, # 坐标轴的颜色设置为蓝色
)
# 创建函数图像 f(x) = x^2
graph = axes.plot(lambda x: x**2, color=BLACK, stroke_width=10) # 黑色函数图像,线条宽度为10
# 创建一个橙色的圆角矩形(长方形),宽度为1,高度为21
Srounded = RoundedRectangle(
corner_radius=0, # 圆角半径为0,形成直角矩形
height=21, # 矩形高度为21
width=1, # 矩形宽度为1
color=ORANGE, # 矩形颜色为橙色
fill_opacity=0.5 # 填充不透明度为0.5,使其半透明
).move_to(axes.c2p(1.5, 7)) # 将矩形移动到坐标(1.5, 7)的世界坐标位置
# 创建一个黄色的圆角矩形,宽度为21,高度为1
Srounded2 = RoundedRectangle(
corner_radius=0, # 圆角半径为0,形成直角矩形
height=1, # 矩形高度为1
width=21, # 矩形宽度为21
color=YELLOW_D, # 矩形颜色为暗黄色
fill_opacity=0.5 # 填充不透明度为0.5,使其半透明
).move_to(axes.c2p(3.5, 2.25)) # 将矩形移动到坐标(3.5, 2.25)的世界坐标位置
# 创建一条虚线(水平),从(0, 2.25)到(1.5, 2.25)
line_a = DashedLine(
axes.c2p(0, 2.25), # 起点坐标
axes.c2p(1.5, 2.25), # 终点坐标
color=ManimColor.from_hsv((0, 100, 256)), # 虚线的颜色设置(HSV色彩空间)
stroke_width=2 # 虚线宽度为2
)
# 创建一条虚线(垂直),从(1.5, 0)到(1.5, 2.25)
line_b = DashedLine(
axes.c2p(1.5, 0), # 起点坐标
axes.c2p(1.5, 2.25), # 终点坐标
color=ManimColor.from_hsv((0, 100, 256)), # 虚线的颜色设置(HSV色彩空间)
stroke_width=2 # 虚线宽度为2
)
# 创建限制值 L 标签
limit_label = MathTex("L", color=BLACK).next_to(axes.c2p(0, 2.25)).shift(0.5 * LEFT).scale(0.75)
# 标签位置在指定坐标,向左偏移和缩放
# 创建 ε 的标签,上方位置
epsilon_label = MathTex("L + \\epsilon", color=PINK).next_to(axes.c2p(0, 2.25), 2 * UP).shift(0.5 * LEFT).scale(0.75)
# 创建 ε 的标签,下方位置
epsilon_minus_label = MathTex("L - \\epsilon", color=PINK).next_to(axes.c2p(0, 2.25), -2 * UP).shift(0.5 * LEFT).scale(0.75)
# 创建 a 标签
a_label = MathTex("a", color=BLACK).next_to(axes.c2p(1.5, 0), DOWN).scale(0.75)
# 创建 a-δ 的标签
a_minus_delta_label = MathTex("a - \\delta", color=PINK).next_to(axes.c2p(1.5, 0), DOWN).shift(LEFT).scale(0.75)
# 创建 a+δ 的标签
a_plus_delta_label = MathTex("a + \\delta", color=PINK).next_to(axes.c2p(1.5, 0), DOWN).shift(RIGHT).scale(0.75)
# 添加所有元素到场景中
self.add(axes, graph, Srounded, Srounded2, line_a, line_b)
self.add(limit_label, epsilon_label, epsilon_minus_label)
self.add(a_label, a_minus_delta_label, a_plus_delta_label)
# 添加 f(x) 标签
f_label = MathTex("f(x)", color=BLACK).next_to(axes.c2p(1, 1), LEFT)
self.add(f_label)
# 运行该代码的方式与之前相同
运行结果
主要参数及其说明:
-
Axes
初始化参数:x_range
和y_range
:表示坐标轴的范围和刻度。axis_config
:用于配置坐标轴的颜色等属性。
-
plot
函数:lambda x: x**2
:定义了一个匿名函数用于绘制图形,表示 f(x)=x2f(x)=x2。color
和stroke_width
:定义图形的颜色和线条宽度。
-
RoundedRectangle
参数:corner_radius
:用于定义圆角的半径,设置为0
表示直角矩形。height
和width
:定义矩形的高度和宽度。color
和fill_opacity
:定义填充颜色和透明度。
-
DashedLine
函数:- 使用
axes.c2p
将坐标转换为世界坐标,允许我们清楚地定义虚线的起止点。
- 使用
-
MathTex
标签:- 用于创建分数和变量的 LaTeX 数学标签,方便展示数学公式和变量标记。
-
next_to
和shift
:next_to
可以定位元素相对于指定点,shift
则可以在该坐标基础上再进行偏移。
通过这些参数的设置,可以灵活地创建各种图形和标签,并将它们一致地排列在 Manim
场景中。
极限的解释
定义告诉我们的是对于任何数 ε>0,我们可以在图像中画出两条水平线L+ε和L−ε,如上图所示。那么在世界的某个地方就有另一个数字 δ>0 这是我们需要确定的,这样我们就可以在图像的a点添加两条垂直线 +δ 和一个 −δ。如果取任意 x 在粉色区域,也就是在a+δ 和一个 −δ,那么这个 x 会更接近 a ,比任何一个 +δ 和一个 −δ 。或者,
。
如果我们现在确定图像上的点我们选择的 x 给出,则图上的该点位于粉色和黄色区域的交点处。这意味着这个函数值f(x)会更接近L比任何个L+ε和L−ε 或者,
如果取x的任意值在粉色区域中,x值的图形将位于黄色区域。注意,实际上有无限种可能 δ 我们可以选择。事实上,如果我们回过头来看一下上面的图看起来我们可以取更大一点的 δ 仍然得到了粉色区域的图形完全包含在黄色区域中。同样,请注意,正如定义所指出的,我们只需要确保函数在x附近的某个区间内定义x=a但我们并不关心它是否在x处有定义x=a。记住,极限不关心在这一点发生了什么,它们只关心在这一点周围发生了什么。
好了,现在我们已经弄清楚了定义,并尝试去理解它,让我们看看它在实践中是如何使用的。这些有时有点棘手,需要大量的练习才能掌握,所以如果你不能马上掌握这些东西,也不要太难过。我们会看一些很简单的例子。
例1
用极限的定义证明下面的极限。
证明: 我们用和第一个一样的方法开始这个。但是我们不会用同样多的解释。
让我们从让开始 ε>0 是任意数,那么我们需要找到一个数 δ>0 所以下面是正确的。
我们将从化简左边的不等式开始试着猜测一下 δ 。
和第一个例子一样如果我们对左边的不等式做足够的化简我们会得到和右边的不等式非常相似的结果这让我们做出选择.。
现在我们来验证一下这个猜测。所以,再次让ε > 0是任意数字,然后选择,接下来,假设。我们得到如下结果,
我们已经证明了这一点,
根据我们的定义,
要使用 Manim 来实现该函数的极限证明,我们可以创建一个简单的动画来展示函数 f(x)=5x−4f(x)=5x−4 在 xx 接近 2 时的行为,并验证其极限值为 6。
下面是一段示例代码,你可以根据需要进行调整:
from manim import *
class LimitProof(Scene):
def construct(self):
# 创建坐标轴
axes = Axes(
x_range=[0, 4, 1],
y_range=[4, 10, 1],
axis_config={"color": BLUE},
).add_coordinates()
# 定义函数
def func(x):
return 5 * x - 4
# 创建图形
graph = axes.plot(func, color=YELLOW)
graph_label = axes.get_graph_label(graph, label='5x - 4')
# 创建点
point_a = Dot(axes.c2p(2, func(2)), color=RED) # 在 x = 2 处的点
point_a_label = always_redraw(lambda: MathTex("f(2) = 6").next_to(point_a, UP))
# 添加元素到场景
self.play(Create(axes), Create(graph), Write(graph_label))
self.wait(1)
# 动画显示点
self.play(FadeIn(point_a), Write(point_a_label))
self.wait(2)
line_a = DashedLine(axes.c2p(2,0), axes.c2p(2, 6),
color=ManimColor.from_hsv((0, 100, 256)), stroke_width=2)
line_b = DashedLine(axes.c2p(0,6), axes.c2p(2,6),
color=ManimColor.from_hsv((0, 100, 256)), stroke_width=2)
self.play(FadeIn(line_a), Write(line_b))
# 显示极限声明
limit_statement = MathTex(r"\lim_{x \to 2} 5x - 4 = 6").to_edge(UP)
self.play(Write(limit_statement))
self.wait(3)
# 清理场景
self.play(FadeOut(limit_statement), FadeOut(point_a), FadeOut(point_a_label))
self.play(FadeOut(limit_statement), FadeOut(point_a), FadeOut(point_a_label))
#self.play(FadeOut(line_a), FadeOut(graph_label), FadeOut(axes))
# 结束场景
self.wait(1)
在这段代码中:
- 创建了一个坐标轴和图形,用于像 5x−45x−4 函数。
- 在 x=2x=2 处,标记了 f(2)=6f(2)=6 的点。
- 使用
MathTex
文字显示了极限的声明 limx→25x−4=6limx→25x−4=6。
你可以将此代码放入 Manim 的脚本中并运行。如果你没有安装 Manim,你可能需要先安装它并确保你的 Python 环境已正确配置。运行代码后,Manim 将生成一个视频动画,展示函数及其在 x→2x→2 时的极限。
本次极限分析涉及一个简单的线性函数,其图像为一条直线。我们研究该函数在某一点的行为,具体来说是当自变量接近2时的函数值。通过计算,可以发现当变量为2时,函数的值恰好为6。这表明无论如何接近这个点,函数的值都会趋近于6。
为了更直观地展示这一过程,我们使用动画工具制作了一个可视化效果。在动画中,首先绘制了坐标轴和函数图像,然后标识出在自变量为2时的确切值,最终通过文本描述了极限的概念。这样的展示方法使得极限的理解变得更加直观,增强了学习者对极限现象的认知和理解,帮助他们掌握这一重要的数学概念。通过可视化,学习者可以更清晰地看到函数的变化趋势及其在特定点附近的行为。