summaryrefslogtreecommitdiff
path: root/FSF-2020/calculus/series-and-transformations/Laplace Transformations/file3_unitStepFunction.py
diff options
context:
space:
mode:
Diffstat (limited to 'FSF-2020/calculus/series-and-transformations/Laplace Transformations/file3_unitStepFunction.py')
-rw-r--r--FSF-2020/calculus/series-and-transformations/Laplace Transformations/file3_unitStepFunction.py168
1 files changed, 168 insertions, 0 deletions
diff --git a/FSF-2020/calculus/series-and-transformations/Laplace Transformations/file3_unitStepFunction.py b/FSF-2020/calculus/series-and-transformations/Laplace Transformations/file3_unitStepFunction.py
new file mode 100644
index 0000000..53c5f14
--- /dev/null
+++ b/FSF-2020/calculus/series-and-transformations/Laplace Transformations/file3_unitStepFunction.py
@@ -0,0 +1,168 @@
+from manimlib.imports import *
+import math
+import pylatex
+
+class intro(GraphScene,Scene):
+ CONFIG = {
+ "x_min": -8,
+ "x_max": 8,
+ "y_min": -5,
+ "y_max": 5,
+ "graph_origin": ORIGIN+DOWN,
+ "function_color": RED,
+ "axes_color": GREEN,
+ "x_axis_label": "$t$",
+ "y_axis_label": "$\mu_{c}(t)$",
+ "exclude_zero_label": True,
+ "y_axis_height":4,
+ "x_axis_width":7
+ }
+ def setup(self):
+ GraphScene.setup(self)
+ Scene.setup(self)
+ def construct(self):
+ introText=TextMobject("Unit","Step","Function")
+ introText.set_color_by_tex_to_color_map({"Unit":BLUE,"Step":YELLOW})
+ introText.scale(0.8)
+ self.play(Write(introText))
+ self.wait(0.5)
+ self.play(ApplyMethod(introText.shift,3*UP))
+ formulaa=TextMobject("$\mu _{ c }(t)=0\quad$","$t<c$")
+ formulab=TextMobject("$\mu _{ c }(t)=1\quad$","$t\ge c$")
+ formulaa.set_color_by_tex_to_color_map({"$t<c$":RED})
+ formulab.set_color_by_tex_to_color_map({"$t\ge c$":RED})
+ formulaa.scale(0.8)
+ formulab.scale(0.8)
+ formulab.shift(0.5*DOWN)
+ self.play(FadeIn(formulaa),FadeIn(formulab))
+ self.wait(1)
+
+ self.play(FadeOut(formulaa),FadeOut(formulab))
+
+ x_each_unit = self.x_axis_width / (self.x_max - self.x_min)
+ y_each_unit = self.y_axis_height / (self.y_max - self.y_min)
+
+ self.setup_axes(animate=True)
+ self.wait(0.8)
+
+ c=TextMobject("c")
+ c.scale(0.5)
+ c.set_color(RED)
+ c.shift(self.graph_origin+3*x_each_unit*RIGHT+y_each_unit*0.4*DOWN)
+ self.play(Write(c))
+ smallCircle=Circle(radius=0.03,fill_color=WHITE,color=WHITE)
+ smallCircle.shift(self.graph_origin+3*x_each_unit*RIGHT)
+ downLine=Line(start=self.graph_origin,end=self.graph_origin+RIGHT*3*x_each_unit,color=BLUE)
+ upLine=Line(start=self.graph_origin+3*x_each_unit*RIGHT+y_each_unit*UP,end=self.graph_origin+8*x_each_unit*RIGHT+y_each_unit*UP,color=BLUE)
+
+ self.play(Write(downLine))
+ self.play(Write(smallCircle))
+ self.play(Write(upLine))
+ self.wait(1.5)
+ self.play(FadeOut(self.axes),FadeOut(smallCircle),FadeOut(c),FadeOut(upLine),FadeOut(downLine),FadeOut(introText))
+ self.wait(0.5)
+
+
+class example(GraphScene):
+ CONFIG = {
+ "x_min": -3,
+ "x_max": 8,
+ "y_min": -4,
+ "y_max": 5,
+ "graph_origin": ORIGIN+LEFT+DOWN,
+ "function_color": RED,
+ "axes_color": GREEN,
+ "x_axis_label": "$t$",
+ "y_axis_label": "$y$",
+ "exclude_zero_label": True,
+ "y_axis_height":4,
+ "x_axis_width":6
+ }
+ def construct(self):
+ x_each_unit = self.x_axis_width / (self.x_max - self.x_min)
+ y_each_unit = self.y_axis_height / (self.y_max - self.y_min)
+
+ text1=TextMobject("Consider the","formation","of","following graph!"," (a part of $f(t))$")
+ text1.set_color_by_tex_to_color_map({"following graph!":BLUE,"formation":YELLOW})
+ text1.scale(0.6)
+ ft=TextMobject("$f(t)$")
+ ftminusc=TextMobject("$f(t-c)$")
+ final=TextMobject("$\mu_{c}(t)f(t-c)$")
+ ft.set_color(PURPLE_C)
+ ftminusc.set_color(PURPLE_C)
+ final.set_color(PURPLE_C)
+ c=TextMobject("c")
+ c.scale(0.5)
+ c.set_color(RED)
+ c.shift(self.graph_origin+RIGHT*x_each_unit*3+DOWN*y_each_unit*0.5)
+ ft.scale(0.5)
+ ftminusc.scale(0.5)
+ final.scale(0.5)
+
+ self.play(Write(text1))
+ self.play(ApplyMethod(text1.shift,3*UP))
+
+ self.setup_axes(animate=True)
+ y=self.get_graph(lambda x:(math.pow((x-3),3)/3)-math.pow((x-3),2)-(x-3)+3,x_min=3,x_max=7,color=RED)
+ f=self.get_graph(lambda x:(math.pow(x,3)/3)-math.pow(x,2)-x+3,x_min=-2,x_max=4,color=RED)
+ yFull=self.get_graph(lambda x:(math.pow((x-3),3)/3)-math.pow((x-3),2)-(x-3)+3,x_min=1,x_max=7,color=RED)
+
+ self.play(Write(c))
+ self.play(ShowCreation(y))
+ self.wait(1)
+ self.play(FadeOut(self.axes),FadeOut(y),FadeOut(c))
+
+ belowText1=TextMobject("Consider its","normal form",", $f(t)$")
+ belowText1.set_color_by_tex_to_color_map({"normal form":BLUE})
+ belowText2=TextMobject("Shift it to","x=c")
+ belowText2.set_color_by_tex_to_color_map({"x=c":RED})
+ belowText3a=TextMobject("Now to remove the","left part","of","$c$,")
+ belowText3a.set_color_by_tex_to_color_map({"left part":YELLOW,"$c$,":YELLOW})
+ belowText3b=TextMobject("multiply it with the","unit step function",", $\mu_{c}(t)$")
+ belowText3b.set_color_by_tex_to_color_map({"unit step function":BLUE})
+ belowText1.scale(0.4)
+ belowText2.scale(0.4)
+ belowText3a.scale(0.4)
+ belowText3b.scale(0.4)
+ belowText1.shift(2.7*DOWN+4*RIGHT)
+ belowText2.shift(2.7*DOWN+4*RIGHT)
+ belowText3a.shift(2.7*DOWN+4*RIGHT)
+ belowText3b.shift(3.1*DOWN+4*RIGHT)
+ self.setup_axes(animate=True)
+ self.play(Write(belowText1))
+ self.play(ShowCreation(f))
+ ft.shift(1.5*RIGHT+UP*0.8)
+ self.play(FadeIn(ft))
+ self.play(ReplacementTransform(belowText1,belowText2))
+ ftminusc.shift(3.5*RIGHT+UP*0.8)
+ self.play(ReplacementTransform(f,yFull),ReplacementTransform(ft,ftminusc),Write(c))
+ self.wait(1)
+
+ self.play(ReplacementTransform(belowText2,belowText3a))
+ self.play(Write(belowText3b))
+ final.shift(3.7*RIGHT+UP*0.8)
+ self.play(ReplacementTransform(ftminusc,final),ReplacementTransform(yFull,y))
+
+ finalText=TextMobject("We got our required Graph!")
+ finalText.scale(0.55)
+ finalText.shift(2.7*DOWN+4*RIGHT)
+ self.play(FadeOut(belowText3b),ReplacementTransform(belowText3a,finalText))
+ self.wait(1.5)
+
+ self.play(FadeOut(finalText),FadeOut(text1))
+
+ graphGrup=VGroup(self.axes,c,final,y)
+ self.play(ApplyMethod(graphGrup.scale,0.45))
+ box=Square(side_length=2,fill_color=BLUE,fill_opacity=0.7)
+ boxtext=TextMobject("$\mathscr{L}$")
+ boxtext.scale(0.8)
+ self.play(ApplyMethod(graphGrup.shift,5.5*LEFT+UP))
+ self.play(ShowCreation(box),Write(boxtext))
+ outText=TextMobject("${ e }^{ -cs }F(s)$")
+ outText.set_color(GREEN)
+ outText.scale(0.65)
+ outText.shift(2*RIGHT)
+ self.play(ApplyMethod(graphGrup.shift,2*RIGHT))
+ self.play(FadeOut(graphGrup),FadeIn(outText))
+ self.play(ApplyMethod(outText.shift,RIGHT))
+ self.wait(2)