summaryrefslogtreecommitdiff
path: root/FSF-2020
diff options
context:
space:
mode:
Diffstat (limited to 'FSF-2020')
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/directional-derivatives/Directional_Derivatives_Quiz.pdfbin0 -> 85319 bytes
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/Multivariable_Functions_Quiz.pdfbin109631 -> 108179 bytes
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file1_multivar_func_examples.py71
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file2_multivariable_func_respresentation.py82
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file3_sphere.py104
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file4_vectorvf_sine.py95
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file5_vectorvf_helix.py49
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file1_multivar_func_examples.gifbin1440511 -> 1453898 bytes
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file2_multivariable_func_respresentation.gifbin1828325 -> 1850503 bytes
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file3_sphere.gifbin5971004 -> 4653900 bytes
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file4_vectorvf_sine.gifbin283795 -> 623433 bytes
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file5_vectorvf_helix.gifbin654632 -> 1700964 bytes
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-limits-and-continuity/file1_epsilon_delta_defn.py314
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-limits-and-continuity/gifs/file1_epsilon_delta_defn.gifbin1788321 -> 4409868 bytes
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/Partial_Derivatives_Quiz.pdfbin0 -> 97732 bytes
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/file2_partial_deriv_hill.py43
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/file3_partial_deriv_defn.py2
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/file4_partial_deriv_example.py12
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/file7_partial_deriv_clariant_rule.py44
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/gifs/file2_partial_deriv_hill.gifbin1238872 -> 803928 bytes
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/gifs/file3_partial_deriv_defn.gifbin5251558 -> 5249722 bytes
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/gifs/file4_partial_deriv_example.gifbin4953394 -> 4952337 bytes
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/gifs/file7_partial_deriv_clariant_rule.gifbin1583937 -> 7474869 bytes
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/scalar-functions/file1_scalar_functions.py8
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/scalar-functions/file2_domain_range.py27
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/scalar-functions/gifs/file1_scalar_functions.gifbin1408290 -> 2355228 bytes
-rw-r--r--FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/scalar-functions/gifs/file2_domain_range.gifbin6625947 -> 7897880 bytes
27 files changed, 536 insertions, 315 deletions
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/directional-derivatives/Directional_Derivatives_Quiz.pdf b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/directional-derivatives/Directional_Derivatives_Quiz.pdf
new file mode 100644
index 0000000..342dc80
--- /dev/null
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/directional-derivatives/Directional_Derivatives_Quiz.pdf
Binary files differ
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/Multivariable_Functions_Quiz.pdf b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/Multivariable_Functions_Quiz.pdf
index 7895843..1155206 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/Multivariable_Functions_Quiz.pdf
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/Multivariable_Functions_Quiz.pdf
Binary files differ
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file1_multivar_func_examples.py b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file1_multivar_func_examples.py
index 55b2b7e..c15cdfb 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file1_multivar_func_examples.py
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file1_multivar_func_examples.py
@@ -17,45 +17,35 @@ class Examples1(GraphScene):
rectangle_area[2].set_color(YELLOW_C)
rectangle_area[4].set_color(BLUE_C)
+
+ triangle = Polygon(np.array([-3,-1.5,0]), np.array([2,-1.5,0]), np.array([2,1.5,0]), np.array([-3,-1.5,0]), color = PURPLE)
- square = Square(side_length = 5, color = PURPLE)
- square_area_func = TexMobject("Area", "=", "f(", "Length", ")")
- square_area_func[0].set_color(GREEN_C)
- square_area_func[2].set_color(ORANGE)
- square_area_func[3].set_color(BLUE_C)
- square_area_func[4].set_color(ORANGE)
-
- square_area = TexMobject("Area", "=", "Length^2")
- square_area[0].set_color(GREEN_C)
- square_area[2].set_color(BLUE_C)
-
+ triangle_area_func = TexMobject("Area", "=", "f(", "Base", ",", "Height", ")").scale(0.6).move_to(1*DOWN)
+ triangle_area_func[0].set_color(RED_C)
+ triangle_area_func[2].set_color(ORANGE)
+ triangle_area_func[3].set_color(YELLOW_C)
+ triangle_area_func[5].set_color(BLUE_C)
+ triangle_area_func[6].set_color(ORANGE)
- circle = Circle(radius = 2, color = PINK)
- circle_area_func = TexMobject("Area", "=", "f(", "r", ")")
- circle_area_func[0].set_color(YELLOW_C)
- circle_area_func[2].set_color(ORANGE)
- circle_area_func[3].set_color(GREEN_C)
- circle_area_func[4].set_color(ORANGE)
+ triangle_area = TexMobject("Area", "=", "\\frac{1}{2}", "\\times", "Base", "\\times", "Height").scale(0.6).move_to(1*DOWN)
+ triangle_area[0].set_color(RED_C)
+ triangle_area[2].set_color(GREEN_C)
+ triangle_area[4].set_color(YELLOW_C)
+ triangle_area[6].set_color(BLUE_C)
- circle_area = TexMobject("Area", "=", "\\pi", "r^2")
- circle_area[0].set_color(YELLOW_C)
- circle_area[2].set_color(BLUE_C)
- circle_area[3].set_color(GREEN_C)
-
- radius = Line(ORIGIN,2*RIGHT, color = RED_C)
-
braces_rect1 = Brace(rectangle, LEFT)
eq_text1 = braces_rect1.get_text("Length").set_color(YELLOW_C)
braces_rect2 = Brace(rectangle, UP)
eq_text2 = braces_rect2.get_text("Breadth").set_color(BLUE_C)
-
- braces_square = Brace(square, LEFT)
- braces_square_text = braces_square.get_text("Length").set_color(BLUE_C)
-
- radius_text = TexMobject("r", color = GREEN_C).next_to(radius,UP)
+
+ braces_triangle_height = Brace(triangle, RIGHT)
+ braces_triangle_height_text = braces_triangle_height.get_text("Height").set_color(BLUE_C)
+
+ braces_triangle_base = Brace(triangle, DOWN)
+ braces_triangle_base_text = braces_triangle_base.get_text("Base").set_color(YELLOW_C)
self.play(ShowCreation(rectangle))
@@ -69,28 +59,19 @@ class Examples1(GraphScene):
self.play(FadeOut(braces_rect1),FadeOut(eq_text1),FadeOut(braces_rect2),FadeOut(eq_text2),FadeOut(rectangle_area_func))
- self.play(Transform(rectangle, square))
- self.wait(1)
- self.play(GrowFromCenter(braces_square),Write(braces_square_text))
+ self.play(Transform(rectangle, triangle))
self.wait(1)
- self.play(Write(square_area_func))
+ self.play(GrowFromCenter(braces_triangle_height),Write(braces_triangle_height_text))
self.wait(1)
- self.play(Transform(square_area_func, square_area))
+ self.play(GrowFromCenter(braces_triangle_base),Write(braces_triangle_base_text))
self.wait(1)
- self.play(FadeOut(braces_square),FadeOut(braces_square_text),FadeOut(square_area_func))
-
-
- self.play(Transform(rectangle, circle))
+ self.play(Write(triangle_area_func))
self.wait(1)
- self.play(ShowCreation(radius),Write(radius_text))
+ self.play(Transform(triangle_area_func, triangle_area))
self.wait(1)
- self.play(FadeOut(radius_text),FadeOut(radius))
+ self.play(FadeOut(braces_triangle_height),FadeOut(braces_triangle_height_text),FadeOut(braces_triangle_base),FadeOut(braces_triangle_base_text),FadeOut(triangle_area_func))
self.wait(1)
- self.play(Write(circle_area_func))
- self.wait(1)
- self.play(Transform(circle_area_func, circle_area))
- self.wait(1)
- self.play(FadeOut(circle_area_func))
+
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file2_multivariable_func_respresentation.py b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file2_multivariable_func_respresentation.py
index d10ff0a..e413e02 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file2_multivariable_func_respresentation.py
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file2_multivariable_func_respresentation.py
@@ -12,9 +12,6 @@ class MultivariableFunc(Scene):
self.play(FadeOut(topic))
- #circle = Circle()
- #circle.scale(3)
-
scalar_function = TextMobject("Scalar Valued Function")
scalar_function.set_color_by_gradient(RED, ORANGE, YELLOW, GREEN, BLUE, PURPLE)
scalar_function.scale(1.5)
@@ -69,16 +66,10 @@ class MultivariableFunc(Scene):
number2.set_color(ORANGE)
output2 = TextMobject(r"$ \begin{bmatrix} 4 \\ 6 \end{bmatrix}$")
- #output2.scale(1.5)
output2.set_color(BLUE_C)
output2.move_to(3*RIGHT)
- #eqn2_1 = TextMobject(r"f(2,1,3) = $2^2(1) + 2(1)(3)$")
- #eqn2_1.set_color(YELLOW)
-
- #eqn2_2 = TextMobject(r"f(2,1,3) = $2 + 6$")
- #eqn2_2.set_color(YELLOW)
-
+
self.play(Write(eqn2))
@@ -86,13 +77,72 @@ class MultivariableFunc(Scene):
self.play(ApplyMethod(number2.move_to, 3*LEFT))
self.play(FadeOut(number2))
- #self.play(Transform(eqn2, eqn2_1))
- #self.wait(1)
- #self.play(Transform(eqn2, eqn2_2))
- #self.wait(1)
-
self.play(ApplyMethod(output2.move_to, 2.5*DOWN+4*RIGHT))
self.wait()
self.play(Write(vector_function))
self.play(FadeOut(output2),FadeOut(eqn2), FadeOut(vector_function), FadeOut(rectangle))
- self.wait() \ No newline at end of file
+ self.wait()
+
+
+
+class VectorValuedFunc(Scene):
+ def construct(self):
+ numberplane = NumberPlane()
+
+ rectangle = Rectangle(height = 1, width = 2, color = PURPLE).move_to(2.5*UP+5*RIGHT)
+
+ eqn = TextMobject(r"f(x,y) = $ \begin{bmatrix} xy \\ \frac{y}{x} \end{bmatrix}$").scale(0.6).move_to(2.5*UP+5*RIGHT).set_color_by_gradient(RED, ORANGE, YELLOW, GREEN, BLUE, PURPLE)
+
+ dot1 = Dot().set_color(PINK).move_to(np.array([2,2,0]))
+
+ number1 = TextMobject("(2,2)").scale(0.6).next_to(dot1, RIGHT).set_color(PINK)
+
+ output1 = TextMobject(r"$ \begin{bmatrix} 4 \\ 1 \end{bmatrix}$").scale(0.6).set_color(YELLOW_C).move_to(2.5*UP+6.5*RIGHT)
+
+ vector1 = Arrow(np.array([2,2,0]), np.array([4,1,0]), color = RED_C, buff = 0.01, tip_length = 0.25)
+
+ dot2 = Dot().set_color(PINK).move_to(np.array([-1,2,0]))
+
+ number2 = TextMobject("(-1,2)").scale(0.6).next_to(dot2, RIGHT).set_color(PINK)
+
+ output2 = TextMobject(r"$ \begin{bmatrix} -2 \\ -2 \end{bmatrix}$").scale(0.6).set_color(YELLOW_C).move_to(2.5*UP+6.5*RIGHT)
+
+ vector2 = Arrow(np.array([-1,2,0]), np.array([-2,-2,0]), color = RED_C, buff = 0.01, tip_length = 0.25)
+
+
+ vector_valued_function = TextMobject("Vector Valued Function").move_to(2.5*UP+3*LEFT).set_color_by_gradient(RED, ORANGE, YELLOW, GREEN, BLUE, PURPLE)
+
+
+ self.play(ShowCreation(numberplane))
+ self.wait()
+ self.play(ShowCreation(rectangle), ShowCreation(eqn))
+ self.wait()
+ self.play(ShowCreation(dot1), ShowCreation(number1))
+ self.wait(0.5)
+ self.play(ApplyMethod(number1.move_to, 2.5*UP+ 3.5*RIGHT))
+ self.wait(0.5)
+ self.play(FadeOut(number1))
+ self.wait(0.5)
+ self.play(ShowCreation(output1))
+ self.wait(0.5)
+ self.play(ShowCreation(vector1))
+ self.wait(0.5)
+ self.play(ApplyMethod(output1.move_to, 1*UP+ 4.5*RIGHT))
+ self.wait()
+
+
+ self.play(ShowCreation(dot2), ShowCreation(number2))
+ self.wait(0.5)
+ self.play(ApplyMethod(number2.move_to, 2.5*UP+ 3.5*RIGHT))
+ self.wait(0.5)
+ self.play(FadeOut(number2))
+ self.wait(0.5)
+ self.play(ShowCreation(output2))
+ self.wait(0.5)
+ self.play(ShowCreation(vector2))
+ self.wait(0.5)
+ self.play(ApplyMethod(output2.move_to, 2*DOWN+ 2.5*LEFT))
+ self.wait()
+ self.play(Write(vector_valued_function))
+ self.wait(2)
+
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file3_sphere.py b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file3_sphere.py
index 86239ae..fcbc410 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file3_sphere.py
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file3_sphere.py
@@ -4,28 +4,24 @@ class Sphere(ThreeDScene):
def construct(self):
axes = ThreeDAxes() # creates a 3D Axis
- text3d = TextMobject(r"$f(x,y) \rightarrow Point(x,y,z)$")
- text3d1 = TextMobject(r"$f(x,y) \rightarrow Point(x,y, \sqrt{r^2 - x^2 - y^2})$")
- self.add_fixed_in_frame_mobjects(text3d)
- text3d.scale(0.7)
+ text3d1 = TextMobject(r"$z = f(x,y) = \sqrt{r^2 - x^2 - y^2}$")
+
text3d1.scale(0.7)
- text3d.to_corner(UL)
+
text3d1.to_corner(UL)
- text3d.set_color_by_gradient(RED, ORANGE, YELLOW, GREEN, BLUE, PURPLE)
+
text3d1.set_color_by_gradient(RED, ORANGE, YELLOW, GREEN, BLUE, PURPLE)
- self.play(Write(text3d))
+ self.play(Write(text3d1))
self.wait(1)
- self.play(Transform(text3d,text3d1))
self.add_fixed_in_frame_mobjects(text3d1)
- self.play(FadeOut(text3d))
sphere = ParametricSurface(
lambda u, v: np.array([
2*np.sin(u)*np.cos(v),
2*np.sin(u)*np.sin(v),
2*np.cos(u)
- ]),u_min=0,u_max=PI,v_min=0,v_max=2*PI,checkerboard_colors=[RED_D, RED_E],
+ ]),u_min=0,u_max=PI/2,v_min=0,v_max=2*PI,checkerboard_colors=[RED_D, RED_E],
resolution=(15, 32)).scale(1)
@@ -53,8 +49,8 @@ class Sphere(ThreeDScene):
dot_x_y1 = Dot().scale(0.75).set_fill(RED_C).move_to(np.array([-1,1,0]))
dot_x_y_z1 = Dot().scale(0.75).set_fill(RED_C).move_to(np.array([-1,1,1.414]))
- dot_x_y_z_1 = Dot().scale(0.75).set_fill(RED_C).move_to(np.array([-1,1,-1.414]))
- line1 = DashedLine(np.array([-1,1,-1.414]), np.array([-1,1,1.414]), color = YELLOW_C)
+
+ line1 = DashedLine(np.array([-1,1,0]), np.array([-1,1,1.414]), color = YELLOW_C)
point_x_y1 = TexMobject("(-1,1,0)").set_color(BLUE_C).move_to(np.array([-1.5,1.5,0])).scale(0.5)
point_x_y_z1 = TexMobject("(-1,1,\\sqrt{r^2 - x^2 - y^2})").set_color(BLUE_C).move_to(np.array([-1.5,1.5,1.414])).scale(0.5)
@@ -62,38 +58,32 @@ class Sphere(ThreeDScene):
point_x_y_z1_3 = TexMobject("(-1,1,\\sqrt{4 - 1 - 1})").set_color(BLUE_C).move_to(np.array([-1.5,1.5,1.414])).scale(0.5)
point_x_y_z1_4 = TexMobject("(-1,1,\\sqrt{2})").set_color(BLUE_C).move_to(np.array([-1.5,1.5,1.414])).scale(0.5)
point_x_y_z1_5 = TexMobject("(-1,1,1.414)").set_color(BLUE_C).move_to(np.array([-1.5,1.5,1.414])).scale(0.5)
-
- point_x_y_z_1 = TexMobject("(-1,1,\\sqrt{r^2 - x^2 - y^2})").set_color(BLUE_C).move_to(np.array([-1.5,1.5,-1.414])).scale(0.5)
- point_x_y_z_1_2 = TexMobject("(-1,1,\\sqrt{4 - x^2 - y^2})").set_color(BLUE_C).move_to(np.array([-1.5,1.5,-1.414])).scale(0.5)
- point_x_y_z_1_3 = TexMobject("(-1,1,\\sqrt{4 - 1 - 1})").set_color(BLUE_C).move_to(np.array([-1.5,1.5,-1.414])).scale(0.5)
- point_x_y_z_1_4 = TexMobject("(-1,1,\\sqrt{2})").set_color(BLUE_C).move_to(np.array([-1.5,1.5,-1.414])).scale(0.5)
- point_x_y_z_1_5 = TexMobject("(-1,1,-1.414)").set_color(BLUE_C).move_to(np.array([-1.5,1.5,-1.414])).scale(0.5)
-
+
self.play(ShowCreation(dot_x_y1))
self.add_fixed_orientation_mobjects(point_x_y1)
- self.play(ShowCreation(dot_x_y_z1), ShowCreation(dot_x_y_z_1), ShowCreation(line1))
- self.add_fixed_orientation_mobjects(point_x_y_z1, point_x_y_z_1)
+ self.play(ShowCreation(dot_x_y_z1), ShowCreation(line1))
+ self.add_fixed_orientation_mobjects(point_x_y_z1)
self.wait(0.5)
- self.play(ReplacementTransform(point_x_y_z1,point_x_y_z1_2), ReplacementTransform(point_x_y_z_1,point_x_y_z_1_2))
- self.add_fixed_orientation_mobjects(point_x_y_z1_2, point_x_y_z_1_2)
+ self.play(ReplacementTransform(point_x_y_z1,point_x_y_z1_2))
+ self.add_fixed_orientation_mobjects(point_x_y_z1_2)
self.wait(0.5)
- self.play(ReplacementTransform(point_x_y_z1_2,point_x_y_z1_3), ReplacementTransform(point_x_y_z_1_2,point_x_y_z_1_3))
- self.add_fixed_orientation_mobjects(point_x_y_z1_3, point_x_y_z_1_3)
+ self.play(ReplacementTransform(point_x_y_z1_2,point_x_y_z1_3))
+ self.add_fixed_orientation_mobjects(point_x_y_z1_3)
self.wait(0.5)
- self.play(ReplacementTransform(point_x_y_z1_3,point_x_y_z1_4), ReplacementTransform(point_x_y_z_1_3,point_x_y_z_1_4))
- self.add_fixed_orientation_mobjects(point_x_y_z1_4, point_x_y_z_1_4)
+ self.play(ReplacementTransform(point_x_y_z1_3,point_x_y_z1_4))
+ self.add_fixed_orientation_mobjects(point_x_y_z1_4)
self.wait(0.5)
- self.play(ReplacementTransform(point_x_y_z1_4,point_x_y_z1_5), ReplacementTransform(point_x_y_z_1_4,point_x_y_z_1_5))
- self.add_fixed_orientation_mobjects(point_x_y_z1_5, point_x_y_z_1_5)
+ self.play(ReplacementTransform(point_x_y_z1_4,point_x_y_z1_5))
+ self.add_fixed_orientation_mobjects(point_x_y_z1_5)
dot_x_y2 = Dot().scale(0.75).set_fill(RED_C).move_to(np.array([0.5,-0.5,0]))
dot_x_y_z2 = Dot().scale(0.75).set_fill(RED_C).move_to(np.array([0.5,-0.5,1.87]))
- dot_x_y_z_2 = Dot().scale(0.75).set_fill(RED_C).move_to(np.array([0.5,-0.5,-1.87]))
- line2 = DashedLine(np.array([0.5,-0.5,-1.87]), np.array([0.5,-0.5,1.87]), color = YELLOW_C)
+
+ line2 = DashedLine(np.array([0.5,-0.5,0]), np.array([0.5,-0.5,1.87]), color = YELLOW_C)
point_x_y2 = TexMobject("(0.5,-0.5,0)").set_color(BLUE_C).move_to(np.array([1.5,-1.5,0])).scale(0.5)
point_x_y_z2 = TexMobject("(0.5,-0.5,\\sqrt{r^2 - x^2 - y^2})").set_color(BLUE_C).move_to(np.array([1.5,-1.5,1.87])).scale(0.5)
@@ -101,41 +91,35 @@ class Sphere(ThreeDScene):
point_x_y_z2_3 = TexMobject("(0.5,-0.5,\\sqrt{4 - 0.25 - 0.25})").set_color(BLUE_C).move_to(np.array([1.5,-1.5,1.87])).scale(0.5)
point_x_y_z2_4 = TexMobject("(0.5,-0.5,\\sqrt{3.5})").set_color(BLUE_C).move_to(np.array([1.5,-1.5,1.87])).scale(0.5)
point_x_y_z2_5 = TexMobject("(0.5,-0.5,1.87)").set_color(BLUE_C).move_to(np.array([1.5,-1.5,1.87])).scale(0.5)
-
- point_x_y_z_2 = TexMobject("(0.5,-0.5,\\sqrt{r^2 - x^2 - y^2})").set_color(BLUE_C).move_to(np.array([1.5,-1.5,-1.87])).scale(0.5)
- point_x_y_z_2_2 = TexMobject("(0.5,-0.5,\\sqrt{4 - x^2 - y^2})").set_color(BLUE_C).move_to(np.array([1.5,-1.5,-1.87])).scale(0.5)
- point_x_y_z_2_3 = TexMobject("(0.5,-0.5,\\sqrt{4 - 0.25 - 0.25})").set_color(BLUE_C).move_to(np.array([1.5,-1.5,-1.87])).scale(0.5)
- point_x_y_z_2_4 = TexMobject("(0.5,-0.5,\\sqrt{3.5})").set_color(BLUE_C).move_to(np.array([1.5,-1.5,-1.87])).scale(0.5)
- point_x_y_z_2_5 = TexMobject("(0.5,-0.5,-1.87)").set_color(BLUE_C).move_to(np.array([1.5,-1.5,-1.87])).scale(0.5)
-
+
self.play(ShowCreation(dot_x_y2))
self.add_fixed_orientation_mobjects(point_x_y2)
- self.play(ShowCreation(dot_x_y_z2), ShowCreation(dot_x_y_z_2), ShowCreation(line2))
- self.add_fixed_orientation_mobjects(point_x_y_z2, point_x_y_z_2)
+ self.play(ShowCreation(dot_x_y_z2), ShowCreation(line2))
+ self.add_fixed_orientation_mobjects(point_x_y_z2)
self.wait(0.5)
- self.play(ReplacementTransform(point_x_y_z2,point_x_y_z2_2), ReplacementTransform(point_x_y_z_2,point_x_y_z_2_2))
- self.add_fixed_orientation_mobjects(point_x_y_z2_2, point_x_y_z_2_2)
+ self.play(ReplacementTransform(point_x_y_z2,point_x_y_z2_2))
+ self.add_fixed_orientation_mobjects(point_x_y_z2_2)
self.wait(0.5)
- self.play(ReplacementTransform(point_x_y_z2_2,point_x_y_z2_3), ReplacementTransform(point_x_y_z_2_2,point_x_y_z_2_3))
- self.add_fixed_orientation_mobjects(point_x_y_z2_3, point_x_y_z_2_3)
+ self.play(ReplacementTransform(point_x_y_z2_2,point_x_y_z2_3))
+ self.add_fixed_orientation_mobjects(point_x_y_z2_3)
self.wait(0.5)
- self.play(ReplacementTransform(point_x_y_z2_3,point_x_y_z2_4), ReplacementTransform(point_x_y_z_2_3,point_x_y_z_2_4))
- self.add_fixed_orientation_mobjects(point_x_y_z2_4, point_x_y_z_2_4)
+ self.play(ReplacementTransform(point_x_y_z2_3,point_x_y_z2_4))
+ self.add_fixed_orientation_mobjects(point_x_y_z2_4)
self.wait(0.5)
- self.play(ReplacementTransform(point_x_y_z2_4,point_x_y_z2_5), ReplacementTransform(point_x_y_z_2_4,point_x_y_z_2_5))
- self.add_fixed_orientation_mobjects(point_x_y_z2_5, point_x_y_z_2_5)
+ self.play(ReplacementTransform(point_x_y_z2_4,point_x_y_z2_5))
+ self.add_fixed_orientation_mobjects(point_x_y_z2_5)
- self.play(FadeOut(point_x_y1), FadeOut(point_x_y_z1_5), FadeOut(point_x_y_z_1_5), FadeOut(dot_x_y1), FadeOut(dot_x_y_z1), FadeOut(dot_x_y_z_1), FadeOut(line1))
- self.play(FadeOut(point_x_y2), FadeOut(point_x_y_z2_5), FadeOut(point_x_y_z_2_5), FadeOut(dot_x_y2), FadeOut(dot_x_y_z2), FadeOut(dot_x_y_z_2), FadeOut(line2))
+ self.play(FadeOut(point_x_y1), FadeOut(point_x_y_z1_5))
+ self.play(FadeOut(point_x_y2), FadeOut(point_x_y_z2_5))
sphere_final = []
- for u in range(0, 180, 15):
+ for u in range(0, 90, 15):
sphere_points1 = [np.array([2*np.sin(u*DEGREES)*np.cos(v*DEGREES), 2*np.sin(u*DEGREES)*np.sin(v*DEGREES), 2*np.cos(u*DEGREES)]) for v in range(0, 370, 10)]
sphere_dots1 = [Dot().scale(0.75).set_fill(RED_C).move_to(pts) for pts in sphere_points1]
@@ -158,20 +142,4 @@ class Sphere(ThreeDScene):
self.begin_ambient_camera_rotation(rate=0.5)
self.wait(3)
self.play(ReplacementTransform(sphere_final_with_dots, sphere))
- self.wait(5)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ self.wait(5) \ No newline at end of file
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file4_vectorvf_sine.py b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file4_vectorvf_sine.py
index 06e225e..3c5bb25 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file4_vectorvf_sine.py
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file4_vectorvf_sine.py
@@ -4,16 +4,14 @@ class SineVectors(GraphScene):
CONFIG = {
"x_min": 0,
"x_max": 10,
- "y_min": -1,
- "y_max": 1,
+ "y_min": -5,
+ "y_max": 5,
"graph_origin": ORIGIN+4*LEFT,
- #"x_labeled_nums": list(range(-5, 6)),
- #"y_labeled_nums": list(range(0, 5)),
+ "x_axis_width": 7,
+ "y_axis_height": 7,
}
def construct(self):
-
-
XTD = self.x_axis_width/(self.x_max - self.x_min)
@@ -21,17 +19,40 @@ class SineVectors(GraphScene):
self.setup_axes(animate = True)
+ sine = self.get_graph(lambda x : np.pi*np.sin(x), x_min = 0, x_max = 6.3, color = GREEN)
+
+
+ dot1 = Dot().rotate(PI/2).set_color(RED_C)
+ alpha1 = ValueTracker(0)
+ vector1 = self.get_vector(alpha1.get_value(),sine)
+ dot1.add_updater(lambda m: m.move_to(vector1.get_end()))
+ self.play(
+ ShowCreation(sine),
+ GrowFromCenter(dot1),
+ GrowArrow(vector1)
+ )
+ vector1.add_updater(
+ lambda m: m.become(
+ self.get_vector(alpha1.get_value()%1,sine)
+ )
+ )
+ self.add(vector1,dot1)
+ self.play(alpha1.increment_value, 1, run_time=5, rate_func=linear)
+
+
+ self.play(FadeOut(vector1), FadeOut(dot1), FadeOut(sine))
+
+ self.wait()
+
- sine1 = self.get_graph(lambda x : np.sin(x), x_min = 0, x_max = 1.575, color = GREEN)
+ sine1 = self.get_graph(lambda x : np.pi*np.sin(x), x_min = 0, x_max = 1.575, color = GREEN_C)
- point1 = Dot().shift(self.graph_origin+1*YTD*UP + 1.575*XTD*RIGHT)
- point1_lab = TextMobject(r"$t = (\frac{\pi}{2})$")
- point1_lab.scale(0.7)
- point1_lab.next_to(point1, UP)
+ point1 = Dot().shift(self.graph_origin+np.pi*YTD*UP + 1.575*XTD*RIGHT)
+ point1_lab = TextMobject(r"$t = (\frac{\pi}{2})$", color = GREY).scale(0.6).next_to(point1, 0.5*UP)
- vector1 = Arrow(self.graph_origin, self.graph_origin+1*YTD*UP + 1.575*XTD*RIGHT, buff=0.1, color = RED)
- vector1_lab = TextMobject(r"$r(\frac{\pi}{2})$", color = RED)
- vector1_lab.move_to(self.graph_origin+1.5*XTD*RIGHT+ 0.5*YTD*UP)
+
+ vector1 = Arrow(self.graph_origin, self.graph_origin+np.pi*YTD*UP + 1.575*XTD*RIGHT, buff=0, color = RED_C, tip_length = 0.25)
+ vector1_lab = TextMobject(r"$r(\frac{\pi}{2})$", color = RED).scale(0.7).move_to(self.graph_origin+1.5*XTD*RIGHT+ 1.5*YTD*UP)
self.play(GrowArrow(vector1),Write(vector1_lab))
self.play(ShowCreation(point1), Write(point1_lab))
@@ -39,16 +60,13 @@ class SineVectors(GraphScene):
self.wait(1)
- sine2 = self.get_graph(lambda x : np.sin(x), x_min = 1.575, x_max = 3.15, color = GREEN)
+ sine2 = self.get_graph(lambda x : np.pi*np.sin(x), x_min = 1.575, x_max = 3.15, color = GREEN_C)
point2 = Dot().shift(self.graph_origin+3.15*XTD*RIGHT)
- point2_lab = TextMobject(r"$t = (\pi)$")
- point2_lab.scale(0.7)
- point2_lab.next_to(point2, UP+RIGHT)
+ point2_lab = TextMobject(r"$t = (\pi)$", color = GREY).scale(0.6).next_to(point2, 0.5*UP+0.5*RIGHT)
- vector2 = Arrow(self.graph_origin, self.graph_origin+3.15*XTD*RIGHT, buff=0.1, color = BLUE)
- vector2_lab = TextMobject(r"$r(\pi)$", color = BLUE)
- vector2_lab.move_to(self.graph_origin+1.5*XTD*RIGHT+ 0.15*YTD*UP)
+ vector2 = Arrow(self.graph_origin, self.graph_origin+3.15*XTD*RIGHT, buff=0, color = BLUE, tip_length = 0.25)
+ vector2_lab = TextMobject(r"$r(\pi)$", color = BLUE).scale(0.7).move_to(self.graph_origin+1.5*XTD*RIGHT+ 0.4*YTD*UP)
self.play(GrowArrow(vector2),Write(vector2_lab))
self.play(ShowCreation(point2), Write(point2_lab))
@@ -56,16 +74,13 @@ class SineVectors(GraphScene):
self.wait(1)
- sine3 = self.get_graph(lambda x : np.sin(x), x_min = 3.15, x_max = 4.725, color = GREEN)
+ sine3 = self.get_graph(lambda x : np.pi*np.sin(x), x_min = 3.15, x_max = 4.725, color = GREEN_C)
- point3 = Dot().shift(self.graph_origin+1*YTD*DOWN + 4.725*XTD*RIGHT)
- point3_lab = TextMobject(r"$t = (\frac{3\pi}{2})$")
- point3_lab.scale(0.7)
- point3_lab.next_to(point3, DOWN)
+ point3 = Dot().shift(self.graph_origin+np.pi*YTD*DOWN + 4.725*XTD*RIGHT)
+ point3_lab = TextMobject(r"$t = (\frac{3\pi}{2})$", color = GREY).scale(0.6).next_to(point3, 0.5*DOWN)
- vector3 = Arrow(self.graph_origin, self.graph_origin+1*YTD*DOWN + 4.725*XTD*RIGHT, buff=0.1, color = YELLOW_C)
- vector3_lab = TextMobject(r"$r(\frac{3\pi}{2})$", color = YELLOW_C)
- vector3_lab.move_to(self.graph_origin+2*XTD*RIGHT+ 0.7*YTD*DOWN)
+ vector3 = Arrow(self.graph_origin, self.graph_origin+np.pi*YTD*DOWN + 4.725*XTD*RIGHT, buff=0, color = YELLOW_C, tip_length = 0.25)
+ vector3_lab = TextMobject(r"$r(\frac{3\pi}{2})$", color = YELLOW_C).scale(0.7).move_to(self.graph_origin+2.5*XTD*RIGHT+ 1*YTD*DOWN)
self.play(GrowArrow(vector3),Write(vector3_lab))
self.play(ShowCreation(point3), Write(point3_lab))
@@ -73,19 +88,27 @@ class SineVectors(GraphScene):
self.wait(1)
- sine4 = self.get_graph(lambda x : np.sin(x), x_min = 4.725, x_max = 6.3, color = GREEN)
+ sine4 = self.get_graph(lambda x : np.pi*np.sin(x), x_min = 4.725, x_max = 6.3, color = GREEN_C)
point4 = Dot().shift(self.graph_origin+6.3*XTD*RIGHT)
- point4_lab = TextMobject(r"$t = (2\pi)$")
- point4_lab.scale(0.7)
- point4_lab.next_to(point4, UP+RIGHT)
+ point4_lab = TextMobject(r"$t = (2\pi)$", color = GREY).scale(0.6).next_to(point4, 0.5*UP+0.5*RIGHT)
- vector4 = Arrow(self.graph_origin, self.graph_origin+6.3*XTD*RIGHT, buff=0.1, color = PURPLE)
- vector4_lab = TextMobject(r"$r(2\pi)$", color = PURPLE)
- vector4_lab.move_to(self.graph_origin+4.5*XTD*RIGHT+ 0.15*YTD*DOWN)
+ vector4 = Arrow(self.graph_origin, self.graph_origin+6.3*XTD*RIGHT, buff=0, color = PURPLE, tip_length = 0.25)
+ vector4_lab = TextMobject(r"$r(2\pi)$", color = PURPLE).scale(0.7).move_to(self.graph_origin+4.5*XTD*RIGHT+ 0.4*YTD*DOWN)
self.play(GrowArrow(vector4),Write(vector4_lab))
self.play(ShowCreation(point4), Write(point4_lab))
self.play(ShowCreation(sine4))
self.wait(3)
+ self.play(FadeOut(sine1), FadeOut(point1), FadeOut(point1_lab), FadeOut(vector1), FadeOut(vector1_lab),
+ FadeOut(sine2), FadeOut(point2), FadeOut(point2_lab), FadeOut(vector2), FadeOut(vector2_lab),
+ FadeOut(sine3), FadeOut(point3), FadeOut(point3_lab), FadeOut(vector3), FadeOut(vector3_lab),
+ FadeOut(sine4), FadeOut(point4), FadeOut(point4_lab), FadeOut(vector4), FadeOut(vector4_lab))
+
+
+
+ def get_vector(self, proportion, curve):
+ vector = Arrow(np.array([-4,0,0]), curve.point_from_proportion(proportion), color = ORANGE, buff=0, tip_length = 0.25)
+ return vector
+
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file5_vectorvf_helix.py b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file5_vectorvf_helix.py
index fc151ac..c02f540 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file5_vectorvf_helix.py
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file5_vectorvf_helix.py
@@ -20,7 +20,9 @@ class Helix(ThreeDScene):
]),color=GREEN_C,t_min=-TAU,t_max=TAU,
)
- function = TexMobject("f(", "r", ",", "\\theta", ")", "=", "[", "r", "\\cos", "\\theta", ",", "r", "\\sin" ,"\\theta", ",", "h" ,"\\theta", "]" ).scale(0.6).to_corner(UL)
+
+ function = TexMobject("f(", "r", ",", "\\theta", ")", "=", "{ \\begin{bmatrix} r \\cos\\theta \\\ r \\sin \\theta \\\ h \\theta \\end{bmatrix}}" ).scale(0.6).to_corner(UL)
+
function.set_color_by_tex(r"\theta", BLUE_C)
function.set_color_by_tex(r"r", RED_C)
function.set_color_by_tex(r"\cos", GREEN_C)
@@ -28,8 +30,13 @@ class Helix(ThreeDScene):
function[0].set_color(ORANGE)
function[4].set_color(ORANGE)
+
+
+ slope_text = TextMobject(r"$\theta = $").move_to(3*UP+3*RIGHT)
+ number = DecimalNumber(0,unit=r" rad", color=RED_C).next_to(slope_text, RIGHT)
+
- self.add_fixed_in_frame_mobjects(function)
+ self.add_fixed_in_frame_mobjects(function,slope_text, number)
self.set_camera_orientation(phi=60*DEGREES, theta = 45*DEGREES)
@@ -49,41 +56,41 @@ class Helix(ThreeDScene):
alpha1 = ValueTracker(0)
vector1 = self.get_vector(alpha1.get_value(),helix1)
dot1.add_updater(lambda m: m.move_to(vector1.get_end()))
+ number.add_updater(lambda m: m.set_value(alpha1.get_value()*4*np.pi))
+ number.add_updater(lambda m: self.add_fixed_in_frame_mobjects(m))
+
+
self.play(
ShowCreation(helix1),
GrowFromCenter(dot1),
GrowArrow(vector1)
+
)
+
vector1.add_updater(
lambda m: m.become(
self.get_vector(alpha1.get_value()%1,helix1)
)
)
+
+
+
self.add(vector1,dot1)
+
+
self.play(alpha1.increment_value, 1, run_time=10, rate_func=linear)
- self.play(FadeOut(vector1), FadeOut(dot1))
- self.play(ReplacementTransform(helix1, helix2))
+ self.play(FadeOut(vector1), FadeOut(dot1), FadeOut(number))
+ self.move_camera(phi=0* DEGREES,theta=90*DEGREES)
- dot2 = Dot().rotate(PI/2).set_color(RED_C)
- alpha2 = ValueTracker(0)
- vector2 = self.get_vector(alpha2.get_value(),helix2)
- dot2.add_updater(lambda m: m.move_to(vector2.get_end()))
- self.play(
- ShowCreation(helix2),
- GrowFromCenter(dot2),
- GrowArrow(vector2)
- )
- vector2.add_updater(
- lambda m: m.become(
- self.get_vector(alpha2.get_value()%1,helix2)
- )
- )
- self.add(vector2,dot2)
- self.play(alpha2.increment_value, 1, run_time=10, rate_func=linear)
- self.wait()
+ alpha1 = ValueTracker(0)
+
+ self.add(vector1,dot1)
+
+
+ self.play(alpha1.increment_value, 1, run_time=10, rate_func=linear)
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file1_multivar_func_examples.gif b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file1_multivar_func_examples.gif
index 43c3a42..d078fb9 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file1_multivar_func_examples.gif
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file1_multivar_func_examples.gif
Binary files differ
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file2_multivariable_func_respresentation.gif b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file2_multivariable_func_respresentation.gif
index 8c4506c..83faaa6 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file2_multivariable_func_respresentation.gif
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file2_multivariable_func_respresentation.gif
Binary files differ
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file3_sphere.gif b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file3_sphere.gif
index 3e35ec8..86fa8fe 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file3_sphere.gif
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file3_sphere.gif
Binary files differ
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file4_vectorvf_sine.gif b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file4_vectorvf_sine.gif
index 215459e..b6a266f 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file4_vectorvf_sine.gif
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file4_vectorvf_sine.gif
Binary files differ
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file5_vectorvf_helix.gif b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file5_vectorvf_helix.gif
index c3d37f6..bee019c 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file5_vectorvf_helix.gif
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file5_vectorvf_helix.gif
Binary files differ
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-limits-and-continuity/file1_epsilon_delta_defn.py b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-limits-and-continuity/file1_epsilon_delta_defn.py
index 803c122..052b1eb 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-limits-and-continuity/file1_epsilon_delta_defn.py
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-limits-and-continuity/file1_epsilon_delta_defn.py
@@ -2,8 +2,7 @@ from manimlib.imports import *
class EpsilonDelta(ThreeDScene):
def construct(self):
- axes = ThreeDAxes() # creates a 3D Axis
-
+ axes = ThreeDAxes()
sphere = ParametricSurface(
lambda u, v: np.array([
@@ -12,46 +11,85 @@ class EpsilonDelta(ThreeDScene):
3*np.cos(u)
]),u_min=0,u_max=PI/4,v_min=PI/2,v_max=PI,checkerboard_colors=[RED_D, RED_E],
resolution=(15, 32)).scale(1)
+
+ delta_circle_boundary = Circle(radius= 0.3, color = GREEN_E).shift(1*LEFT+1*UP)
+
+ circle = [np.array([0.3*np.cos(i*DEGREES)-1, 0.3*np.sin(i*DEGREES)+1, 0]) for i in range(361)]
+
+ circle_above = [np.array([0.3*np.cos(i*DEGREES)-1, 0.3*np.sin(i*DEGREES)+1, np.sqrt(9 - (0.3*np.cos(i*DEGREES)-1)**2 - (0.3*np.sin(i*DEGREES)+1)**2)]) for i in range(361)]
+
+ delta_circle = Polygon(*circle, color = BLACK, fill_color = GREEN_E, fill_opacity= 0.5, stroke_width=0.1)
+
+ delta_circle_above = Polygon(*circle_above, color = BLACK, fill_color = GREEN_E, fill_opacity= 0.5, stroke_width=0.1)
+
+ dot_circle = Dot().scale(0.6).move_to(np.array([-1,1,0])).set_fill(PINK)
+ dot_surface = Dot().rotate(-PI/3).scale(0.7).move_to(np.array([-1.2,1.2,2.7])).set_fill(PINK)
- cylinder_z = ParametricSurface(
- lambda u, v: np.array([
- 0.25*np.cos(TAU * v),
- 1.8* (1 - u),
- 0.25*np.sin(TAU * v)
-
- ]),
- checkerboard_colors=[YELLOW_C, YELLOW_E], resolution=(6, 32)).fade(0.2).rotate(PI/4).move_to(np.array([-0.65,0.65,2.54]))
- cylinder_x = ParametricSurface(
- lambda u, v: np.array([
- 0.3*np.cos(TAU * v)-1,
- 0.3*np.sin(TAU * v)+1,
- 2.6*(1 - u)
- ]),
- checkerboard_colors=[BLUE_C, BLUE_E], resolution=(6, 32)).fade(0.2)
+ #Creating cylinder
+ ######
+ '''
+ cylinder = []
+ cylinder.append(np.array([-0.7, 1, 0]))
+ cylinder.append(np.array([-0.7, 1, np.sqrt(9 - (0.7)**2 - 1)]))
+
+
+ #circle_above_reverse = [ele for ele in reversed(circle_above)]
+ circle_above_reverse = [np.array([0.3*np.cos(i*DEGREES)-1, 0.3*np.sin(i*DEGREES)+1, np.sqrt(9 - (0.3*np.cos(i*DEGREES)-1)**2 - (0.3*np.sin(i*DEGREES)+1)**2)]) for i in range(181)]
+ cylinder = cylinder + circle_above_reverse
- delta_circle = Circle(radius= 0.3, color = BLACK).shift(1*LEFT+1*UP).set_fill(GREEN_E, opacity = 0.5)
+ #cylinder.append(np.array([-0.7, 1, np.sqrt(9 - (0.7)**2 - 1)]))
+ cylinder.append(np.array([0.3*np.cos(180)-1, 0.3*np.sin(180)+1, np.sqrt(9 - (0.3*np.cos(180)-1)**2 - (0.3*np.sin(180)+1)**2)]))
+ #cylinder.append(np.array([-0.7, 1, 0]))
+ cylinder.append(np.array([0.3*np.cos(180)-1, 0.3*np.sin(180)+1, 0]))
- epsilon_circle = [np.array([0.25*np.cos(i*DEGREES),0,0.25*np.sin(i*DEGREES)]) for i in range(361)]
+
+ cylinder = cylinder + [np.array([0.3*np.cos(i*DEGREES)-1, 0.3*np.sin(i*DEGREES)+1, 0]) for i in range(180,-1,-1)]
+ #y_x_2.append(np.array([-3, 9, 0]))
+ #cylinder.append(np.array([-0.7, 1, 0]))
- epsilon_circle_polygon = Polygon(*epsilon_circle, color = RED_E, fill_color = RED_E, fill_opacity = 0.5).rotate(PI/4).move_to(np.array([0,0,2.54]))
+ cylinder_plane = Polygon(*cylinder, color = BLACK, fill_color = YELLOW_C, fill_opacity= 0.3, stroke_width=0.1)
+ #plane_y_x_2_text = TextMobject(r"$y = x^2$", color = RED_C).move_to(np.array([5,0,2]))
+
+ #cylinder_plane2 = cylinder_plane.copy().rotate(2*PI)
+ cylinder = []
+ cylinder.append(np.array([-0.7, 1, 0]))
+ cylinder.append(np.array([-0.7, 1, np.sqrt(9 - (0.7)**2 - 1)]))
+
- dot_circle = Dot().move_to(np.array([-1,1,0])).set_fill("#000080")
+ #circle_above_reverse = [ele for ele in reversed(circle_above)]
+ circle_above_reverse = [np.array([0.3*np.cos(i*DEGREES)-1, 0.3*np.sin(i*DEGREES)+1, np.sqrt(9 - (0.3*np.cos(i*DEGREES)-1)**2 - (0.3*np.sin(i*DEGREES)+1)**2)]) for i in range(360, 179, -1)]
- dot_surface = Dot().rotate(-PI/4).scale(1.5).move_to(np.array([-1.2,1.2,2.7])).set_fill("#000080")
+ cylinder = cylinder + circle_above_reverse
- dot_L_epsilon1 = Polygon(*[np.array([0.05*np.cos(i*DEGREES),0,0.05*np.sin(i*DEGREES)]) for i in range(361)], color = "#000080", fill_color = "#000080", fill_opacity = 1).rotate(PI/4).move_to(np.array([0,0,2.3]))
+ #cylinder.append(np.array([-0.7, 1, np.sqrt(9 - (0.7)**2 - 1)]))
+ cylinder.append(np.array([0.3*np.cos(180)-1, 0.3*np.sin(180)+1, np.sqrt(9 - (0.3*np.cos(180)-1)**2 - (0.3*np.sin(180)+1)**2)]))
+ #cylinder.append(np.array([-0.7, 1, 0]))
+ cylinder.append(np.array([0.3*np.cos(180)-1, 0.3*np.sin(180)+1, 0]))
- dot_L_epsilon2 = Polygon(*[np.array([0.05*np.cos(i*DEGREES),0,0.05*np.sin(i*DEGREES)]) for i in range(361)], color = "#000080", fill_color = "#000080", fill_opacity = 1).rotate(PI/4).move_to(np.array([0,0,2.8]))
- dot_L = Polygon(*[np.array([0.05*np.cos(i*DEGREES),0,0.05*np.sin(i*DEGREES)]) for i in range(361)], color = "#006400", fill_color = "#006400", fill_opacity = 1).rotate(PI/4).move_to(np.array([0,0,2.54]))
+ cylinder = cylinder + [np.array([0.3*np.cos(i*DEGREES)-1, 0.3*np.sin(i*DEGREES)+1, 0]) for i in range(180,360)]
+ #y_x_2.append(np.array([-3, 9, 0]))
+ #cylinder.append(np.array([-0.7, 1, 0]))
+ cylinder_plane = Polygon(*cylinder, color = BLACK, fill_color = YELLOW_C, fill_opacity= 0.3, stroke_width=0.1)
-
+ ######
+ '''
+
+
+ lines = [Line(circle[i], circle_above[i], color = BLUE_B, opacity=0.01, stroke_width=0.1) for i in range(0,len(circle),1)]
+ lines_group = VGroup(*lines)
+
+ line_epsilon_first = DashedLine(np.array([-1, 1, 0]), np.array([-1, 1, np.sqrt(7)]), color = YELLOW_C)
+
+
+
+
self.add(axes)
axis = TextMobject(r"X",r"Y",r"Z")
@@ -63,117 +101,235 @@ class EpsilonDelta(ThreeDScene):
self.add_fixed_orientation_mobjects(axis[0])
self.add_fixed_orientation_mobjects(axis[1])
- self.set_camera_orientation(phi=75*DEGREES,theta=135*DEGREES)
- #self.set_camera_orientation(phi=80*DEGREES,theta=45*DEGREES)
+ self.set_camera_orientation(distance=200,phi=70*DEGREES,theta=135*DEGREES)
+
+ self.play(ShowCreation(sphere))
+ self.wait()
+
+ text1 = TexMobject("\\sqrt{(x-a)^2+(y-b)^2}", color = GREEN_E).scale(0.7).to_corner(UR)
+
+ self.play(ShowCreation(delta_circle_boundary), ShowCreation(dot_circle))
+ self.add_fixed_in_frame_mobjects(text1)
+ self.wait(2)
+
+ text2 = TexMobject("\\sqrt{(x-a)^2+(y-b)^2}", "<", "\\delta ", color = GREEN_E).scale(0.7).to_corner(UR)
+ text2[1].set_color(YELLOW_C)
+ text2[2].set_color(ORANGE)
+ self.play(FadeOut(text1), FadeOut(delta_circle_boundary), ShowCreation(delta_circle))
+ self.bring_to_front(dot_circle)
+ self.add_fixed_in_frame_mobjects(text2)
- self.play(ShowCreation(sphere),ShowCreation(delta_circle), ShowCreation(dot_circle))
+ #self.play(ShowCreation(sphere), ShowCreation(delta_circle), ShowCreation(delta_circle_above))
- temp_circle_center = TextMobject(r"$(a,b,0)$").scale(0.6).set_color(BLUE_C).move_to(1.7*LEFT+1.1*UP)
+ temp_circle_center = TextMobject(r"$(a,b,0)$").scale(0.6).set_color(PINK).move_to(1.7*LEFT+1.1*UP)
self.add_fixed_orientation_mobjects(temp_circle_center)
self.wait()
- delta_lab = TextMobject(r"$\delta$", r"$-$", "disk").scale(0.5).move_to(0.6*LEFT+1.7*UP)
- delta_lab[0].set_color(PINK).scale(1.3)
- delta_lab[1].set_color(ORANGE)
- delta_lab[2].set_color(GREEN_E)
+ delta_lab = TextMobject(r"$\delta$", "disk").scale(0.5).move_to(0.6*LEFT+1.7*UP)
+ delta_lab[0].set_color(ORANGE).scale(1.3)
+ delta_lab[1].set_color(GREEN_E)
self.add_fixed_orientation_mobjects(delta_lab)
- self.play(ShowCreation(dot_surface))
-
- temp_curve_circle_center = TextMobject(r"$(a,b,L)$").scale(0.6).set_color("#006400").move_to(np.array([-2,1,2.7]))
+ self.play(ShowCreation(lines_group), ShowCreation(line_epsilon_first))
+ self.bring_to_front(delta_circle_above, dot_surface)
+ temp_curve_circle_center = TextMobject(r"$(a,b,L)$").scale(0.6).set_color(PINK).move_to(np.array([-1.7,1.1,2.7]))
self.add_fixed_orientation_mobjects(temp_curve_circle_center)
-
- self.wait()
- self.play(ShowCreation(cylinder_x), FadeOut(dot_surface))
- self.wait()
+ self.move_camera(distance = 5, phi=50*DEGREES,theta=135*DEGREES)
+ self.wait(3)
- self.move_camera(phi=0* DEGREES,theta=135*DEGREES)
+
+ self.play(FadeOut(dot_surface))
+
+ self.move_camera(distance=200,phi=0* DEGREES,theta=135*DEGREES)
self.wait()
- self.move_camera(phi=80* DEGREES,theta=225*DEGREES)
+ self.move_camera(distance=10,phi=80* DEGREES,theta=225*DEGREES)
self.wait()
- self.play(FadeOut(delta_lab), ShowCreation(cylinder_z))
+ self.play(FadeOut(delta_lab), FadeOut(temp_circle_center), FadeOut(temp_curve_circle_center), FadeOut(text2))
self.wait()
- self.play(FadeOut(temp_circle_center), FadeOut(temp_curve_circle_center),ShowCreation(epsilon_circle_polygon))
- self.move_camera(phi=80* DEGREES,theta=325*DEGREES)
+ line_epsilon1 = DashedLine(np.array([0.3*np.cos(315*DEGREES)-1, 0.3*np.sin(315*DEGREES)+1, np.sqrt(9 - (0.3*np.cos(315*DEGREES)-1)**2 - (0.3*np.sin(315*DEGREES)+1)**2)]),
+ np.array([0, 0, np.sqrt(9 - (0.3*np.cos(315*DEGREES)-1)**2 - (0.3*np.sin(315*DEGREES)+1)**2)]), color = YELLOW_C)
- dot_L_epsilon1_lab = TextMobject(r"$L$", r"$-$", r"$\epsilon$").scale(0.6).move_to(np.array([-0.4,-0.4,2.3]))
+ line_epsilon2 = DashedLine(np.array([0.3*np.cos(135*DEGREES)-1, 0.3*np.sin(135*DEGREES)+1, np.sqrt(9 - (0.3*np.cos(135*DEGREES)-1)**2 - (0.3*np.sin(135*DEGREES)+1)**2)]),
+ np.array([0, 0, np.sqrt(9 - (0.3*np.cos(135*DEGREES)-1)**2 - (0.3*np.sin(135*DEGREES)+1)**2)]), color = YELLOW_C)
+
+ line_epsilon = DashedLine(np.array([-1, +1, np.sqrt(7)]), np.array([0, 0, np.sqrt(7)]), color = YELLOW_C)
+
+
+ self.play(ShowCreation(line_epsilon1), ShowCreation(line_epsilon2), ShowCreation(line_epsilon))
+ self.wait()
+
+ self.move_camera(distance=5,phi=75* DEGREES,theta=325*DEGREES)
+
+
+
+ dot_L_epsilon1 = Polygon(*[np.array([0.05*np.cos(i*DEGREES),0,0.05*np.sin(i*DEGREES)]) for i in range(361)], color = "#000080", fill_color = "#000080", fill_opacity = 1).rotate(PI/4).move_to(np.array([0,0,np.sqrt(9 - (0.3*np.cos(315*DEGREES)-1)**2 - (0.3*np.sin(315*DEGREES)+1)**2)]))
+
+ dot_L_epsilon2 = Polygon(*[np.array([0.05*np.cos(i*DEGREES),0,0.05*np.sin(i*DEGREES)]) for i in range(361)], color = "#000080", fill_color = "#000080", fill_opacity = 1).rotate(PI/4).move_to(np.array([0,0,np.sqrt(9 - (0.3*np.cos(135*DEGREES)-1)**2 - (0.3*np.sin(135*DEGREES)+1)**2)]))
+
+ dot_L = Polygon(*[np.array([0.05*np.cos(i*DEGREES),0,0.05*np.sin(i*DEGREES)]) for i in range(361)], color = "#006400", fill_color = "#006400", fill_opacity = 1).rotate(PI/4).move_to(np.array([0,0,np.sqrt(7)]))
+
+ dot_L_epsilon1_lab = TextMobject(r"$L$", r"$-$", r"$\epsilon$").scale(0.6).move_to(np.array([-0.4,-0.4,np.sqrt(9 - (0.3*np.cos(315*DEGREES)-1)**2 - (0.3*np.sin(315*DEGREES)+1)**2)]))
dot_L_epsilon1_lab[0].set_color("#D4108A")
dot_L_epsilon1_lab[1].set_color("#006400")
dot_L_epsilon1_lab[2].set_color("#4DC8A1").scale(1.5)
- dot_L_epsilon2_lab = TextMobject(r"$L$", r"$+$", r"$\epsilon$").scale(0.6).move_to(np.array([-0.4,-0.4,2.8]))
+ dot_L_epsilon2_lab = TextMobject(r"$L$", r"$+$", r"$\epsilon$").scale(0.6).move_to(np.array([-0.4,-0.4,np.sqrt(9 - (0.3*np.cos(135*DEGREES)-1)**2 - (0.3*np.sin(135*DEGREES)+1)**2)]))
dot_L_epsilon2_lab[0].set_color("#D4108A")
dot_L_epsilon2_lab[1].set_color("#006400")
dot_L_epsilon2_lab[2].set_color("#4DC8A1").scale(1.5)
- dot_L_lab = TextMobject(r"$L$").scale(0.6).set_color("#D4108A").move_to(np.array([-0.4,-0.4,2.54]))
+ dot_L_lab = TextMobject(r"$L$").scale(0.6).set_color("#D4108A").move_to(np.array([-0.4,-0.4,np.sqrt(7)]))
+
+ epsilon_line = Line(np.array([0,0,np.sqrt(9 - (0.3*np.cos(315*DEGREES)-1)**2 - (0.3*np.sin(315*DEGREES)+1)**2)]), np.array([0,0,np.sqrt(9 - (0.3*np.cos(135*DEGREES)-1)**2 - (0.3*np.sin(135*DEGREES)+1)**2)]), color = "#4DC8A1")
+ delta_line = Line(np.array([-1,1,0]), np.array([0.3*np.cos(0*DEGREES)-1, 0.3*np.sin(0*DEGREES)+1, 0]), color = "#000080")
+ delta_line_lab = TexMobject("\\delta", color = ORANGE).scale(0.6).move_to(delta_line.get_center())
- self.play(ShowCreation(dot_L_epsilon1), ShowCreation(dot_L), ShowCreation(dot_L_epsilon2))
- self.add_fixed_orientation_mobjects(dot_L_epsilon1_lab, dot_L_epsilon2_lab, dot_L_lab)
- self.wait(4)
+ self.play(ShowCreation(epsilon_line), ShowCreation(delta_line), ShowCreation(dot_L_epsilon1), ShowCreation(dot_L), ShowCreation(dot_L_epsilon2))
+ self.bring_to_front(dot_L_epsilon1, dot_L, dot_L_epsilon2)
+ self.add_fixed_orientation_mobjects(delta_line_lab, dot_L_epsilon1_lab, dot_L_epsilon2_lab, dot_L_lab)
- self.move_camera(phi=80* DEGREES,theta=45*DEGREES)
self.wait(2)
-
+ circle_1 = [np.array([0.6*np.cos(i*DEGREES)-1, 0.6*np.sin(i*DEGREES)+1, 0]) for i in range(361)]
+
+ circle_above_1 = [np.array([0.6*np.cos(i*DEGREES)-1, 0.6*np.sin(i*DEGREES)+1, np.sqrt(9 - (0.6*np.cos(i*DEGREES)-1)**2 - (0.6*np.sin(i*DEGREES)+1)**2)]) for i in range(361)]
+
+ delta_circle_1 = Polygon(*circle_1, color = BLACK, fill_color = GREEN_E, fill_opacity= 0.5, stroke_width=0.1)
+
+ delta_circle_above_1 = Polygon(*circle_above_1, color = BLACK, fill_color = GREEN_E, fill_opacity= 0.5, stroke_width=0.1)
+
+ lines_1 = [Line(circle_1[i], circle_above_1[i], color = BLUE_B, opacity=0.01, stroke_width=0.1) for i in range(0,len(circle_1),1)]
+ lines_group_1 = VGroup(*lines_1)
-
+ line_epsilon1_1 = DashedLine(np.array([0.6*np.cos(315*DEGREES)-1, 0.6*np.sin(315*DEGREES)+1, np.sqrt(9 - (0.6*np.cos(315*DEGREES)-1)**2 - (0.6*np.sin(315*DEGREES)+1)**2)]),
+ np.array([0, 0, np.sqrt(9 - (0.6*np.cos(315*DEGREES)-1)**2 - (0.6*np.sin(315*DEGREES)+1)**2)]), color = YELLOW_C)
+
+ line_epsilon2_1 = DashedLine(np.array([0.6*np.cos(135*DEGREES)-1, 0.6*np.sin(135*DEGREES)+1, np.sqrt(9 - (0.6*np.cos(135*DEGREES)-1)**2 - (0.6*np.sin(135*DEGREES)+1)**2)]),
+ np.array([0, 0, np.sqrt(9 - (0.6*np.cos(135*DEGREES)-1)**2 - (0.6*np.sin(135*DEGREES)+1)**2)]), color = YELLOW_C)
+
+
+ epsilon_line_1 = Line(np.array([0,0,np.sqrt(9 - (0.6*np.cos(315*DEGREES)-1)**2 - (0.6*np.sin(315*DEGREES)+1)**2)]), np.array([0,0,np.sqrt(9 - (0.6*np.cos(135*DEGREES)-1)**2 - (0.6*np.sin(135*DEGREES)+1)**2)]), color = "#4DC8A1")
+ delta_line1 = Line(np.array([-1,1,0]), np.array([0.6*np.cos(0*DEGREES)-1, 0.6*np.sin(0*DEGREES)+1, 0]), color = "#000080")
+ delta_line_lab1 = TexMobject("\\delta", color = ORANGE).scale(0.6).move_to(delta_line1.get_center())
+
+
+
+
+ epsilon_text1 = TextMobject(r"For every", r"$\epsilon$", " ,", color = YELLOW_C).scale(0.7).move_to(4.2*RIGHT+3.2*UP)
+ epsilon_text1[1].set_color("#4DC8A1")
+
+ epsilon_text2 = TextMobject("there exists a corresponding", r"$\delta$", r"disk", color = YELLOW_C).scale(0.7)
+ epsilon_text2[1].set_color(ORANGE)
+ epsilon_text2.next_to(epsilon_text1, DOWN)
+ epsilon_text3 = TextMobject(r"So that for every value", color = YELLOW_C).scale(0.7).move_to(4*RIGHT+3.2*UP)
-
+ epsilon_text4 = TextMobject("that lies within the", r"$\delta$", r"disk,", color = YELLOW_C).scale(0.7).next_to(epsilon_text3, DOWN)
+ epsilon_text4[1].set_color(ORANGE)
+ epsilon_text5 = TextMobject(r"the limit lies within the", r"$\epsilon$", r"band", color = YELLOW_C).scale(0.7)
+ epsilon_text5[1].set_color("#4DC8A1")
+ epsilon_text5.next_to(epsilon_text4, DOWN)
+ self.add_fixed_in_frame_mobjects(epsilon_text1)
- '''
-
+ self.play( ReplacementTransform(line_epsilon1, line_epsilon1_1), ReplacementTransform(line_epsilon2, line_epsilon2_1), ReplacementTransform(epsilon_line, epsilon_line_1),
+ ApplyMethod(dot_L_epsilon1.move_to, np.array([0,0,np.sqrt(9 - (0.6*np.cos(315*DEGREES)-1)**2 - (0.6*np.sin(315*DEGREES)+1)**2)])),
+ ApplyMethod(dot_L_epsilon2.move_to, np.array([0,0,np.sqrt(9 - (0.6*np.cos(135*DEGREES)-1)**2 - (0.6*np.sin(135*DEGREES)+1)**2)])),
+ ApplyMethod(dot_L_epsilon1_lab.move_to, np.array([-0.4,-0.4,np.sqrt(9 - (0.6*np.cos(315*DEGREES)-1)**2 - (0.6*np.sin(315*DEGREES)+1)**2)])),
+ ApplyMethod(dot_L_epsilon2_lab.move_to, np.array([-0.4,-0.4,np.sqrt(9 - (0.6*np.cos(135*DEGREES)-1)**2 - (0.6*np.sin(135*DEGREES)+1)**2)])))
-
-
+ self.bring_to_front(dot_L_epsilon1, dot_L, dot_L_epsilon2)
+
+ self.wait()
+
+ self.add_fixed_in_frame_mobjects(epsilon_text2)
+
+ self.play(ReplacementTransform(lines_group, lines_group_1), ReplacementTransform(delta_circle, delta_circle_1), ReplacementTransform(delta_circle_above, delta_circle_above_1),
+ ReplacementTransform(delta_line, delta_line1), ReplacementTransform(delta_line_lab, delta_line_lab1))
+ self.bring_to_front(dot_L_epsilon1, dot_L, dot_L_epsilon2)
+
+ self.add_fixed_orientation_mobjects(delta_line_lab1 ,dot_L_epsilon1_lab, dot_L_epsilon2_lab, dot_L_lab)
- delta_lab = TextMobject(r"$\delta - disk$")
- delta_lab.scale(0.5)
- delta_lab.set_color(PINK)
+ self.wait(2)
+
+ self.play(FadeOut(epsilon_text1), FadeOut(epsilon_text2))
+
+ self.add_fixed_in_frame_mobjects(epsilon_text3, epsilon_text4)
+
+ self.wait(2)
+
+ self.add_fixed_in_frame_mobjects(epsilon_text5)
+
+ self.wait(2)
+
+
+ self.play(FadeOut(epsilon_text3), FadeOut(epsilon_text4), FadeOut(epsilon_text5))
- self.play(ShowCreation(circle_center))
- self.add_fixed_in_frame_mobjects(temp_circle_center)
- temp_circle_center.move_to(1.5*RIGHT)
- self.play(Write(temp_circle_center))
- self.play(ShowCreation(curve_circle_center))
- self.add_fixed_in_frame_mobjects(temp_curve_circle_center)
- temp_curve_circle_center.move_to(1.9*UP+1*RIGHT)
- self.play(Write(temp_curve_circle_center))
+ self.move_camera(distance=10,phi=80* DEGREES,theta=45*DEGREES)
+ self.bring_to_front(dot_L_epsilon1_lab, dot_L_lab, dot_L_epsilon2_lab)
+ self.wait(2)
+
+ self.move_camera(distance=10,phi=75* DEGREES,theta=135*DEGREES)
+ self.bring_to_front(dot_L_epsilon1_lab, dot_L_lab, dot_L_epsilon2_lab)
+ self.wait(2)
+
+ circle_2 = [np.array([0.5*np.cos(i*DEGREES)-1, 0.5*np.sin(i*DEGREES)+1, 0]) for i in range(361)]
+
+ circle_above_2 = [np.array([0.5*np.cos(i*DEGREES)-1, 0.5*np.sin(i*DEGREES)+1, np.sqrt(9 - (0.5*np.cos(i*DEGREES)-1)**2 - (0.5*np.sin(i*DEGREES)+1)**2)]) for i in range(361)]
+
+ delta_circle_2 = Polygon(*circle_2, color = BLACK, fill_color = GREEN_E, fill_opacity= 0.5, stroke_width=0.1)
- self.add_fixed_in_frame_mobjects(delta_lab)
- delta_lab.move_to(0.4*DOWN+1.7*RIGHT)
- self.play(Write(delta_lab))
+ delta_circle_above_2 = Polygon(*circle_above_2, color = BLACK, fill_color = GREEN_E, fill_opacity= 0.5, stroke_width=0.1)
+ lines_2 = [Line(circle_2[i], circle_above_2[i], color = BLUE_B, opacity=0.01, stroke_width=0.1) for i in range(0,len(circle_2),1)]
+ lines_group_2 = VGroup(*lines_2)
+ line_epsilon1_2 = DashedLine(np.array([0.5*np.cos(315*DEGREES)-1, 0.5*np.sin(315*DEGREES)+1, np.sqrt(9 - (0.5*np.cos(315*DEGREES)-1)**2 - (0.5*np.sin(315*DEGREES)+1)**2)]),
+ np.array([0, 0, np.sqrt(9 - (0.5*np.cos(315*DEGREES)-1)**2 - (0.5*np.sin(315*DEGREES)+1)**2)]), color = YELLOW_C)
+ line_epsilon2_2 = DashedLine(np.array([0.5*np.cos(135*DEGREES)-1, 0.5*np.sin(135*DEGREES)+1, np.sqrt(9 - (0.5*np.cos(135*DEGREES)-1)**2 - (0.5*np.sin(135*DEGREES)+1)**2)]),
+ np.array([0, 0, np.sqrt(9 - (0.5*np.cos(135*DEGREES)-1)**2 - (0.5*np.sin(135*DEGREES)+1)**2)]), color = YELLOW_C)
- self.begin_ambient_camera_rotation(rate=0.2)
+
+ epsilon_line_2 = Line(np.array([0,0,np.sqrt(9 - (0.5*np.cos(315*DEGREES)-1)**2 - (0.5*np.sin(315*DEGREES)+1)**2)]), np.array([0,0,np.sqrt(9 - (0.5*np.cos(135*DEGREES)-1)**2 - (0.5*np.sin(135*DEGREES)+1)**2)]), color = "#4DC8A1")
- self.play(ShowCreation(circle), ShowCreation(line1), ShowCreation(line2))
- self.play(ShowCreation(line3), ShowCreation(line4))
- self.wait(8)
- ''' \ No newline at end of file
+ delta_line2 = Line(np.array([-1,1,0]), np.array([0.5*np.cos(0*DEGREES)-1, 0.5*np.sin(0*DEGREES)+1, 0]), color = "#000080")
+ delta_line_lab2 = TexMobject("\\delta", color = ORANGE).scale(0.6).move_to(delta_line1.get_center())
+
+ self.bring_to_front(dot_L_epsilon1, dot_L, dot_L_epsilon2)
+
+ self.play(ReplacementTransform(lines_group_1, lines_group_2), ReplacementTransform(delta_circle_1, delta_circle_2), ReplacementTransform(delta_circle_above_1, delta_circle_above_2),
+ ReplacementTransform(line_epsilon1_1, line_epsilon1_2), ReplacementTransform(line_epsilon2_1, line_epsilon2_2), ReplacementTransform(epsilon_line_1, epsilon_line_2),
+ ReplacementTransform(delta_line1, delta_line2), ReplacementTransform(delta_line_lab1, delta_line_lab2),
+ ApplyMethod(dot_L_epsilon1.move_to, np.array([0,0,np.sqrt(9 - (0.5*np.cos(315*DEGREES)-1)**2 - (0.5*np.sin(315*DEGREES)+1)**2)])),
+ ApplyMethod(dot_L_epsilon2.move_to, np.array([0,0,np.sqrt(9 - (0.5*np.cos(135*DEGREES)-1)**2 - (0.5*np.sin(135*DEGREES)+1)**2)])),
+ ApplyMethod(dot_L_epsilon1_lab.move_to, np.array([-0.4,-0.4,np.sqrt(9 - (0.5*np.cos(315*DEGREES)-1)**2 - (0.5*np.sin(315*DEGREES)+1)**2)])),
+ ApplyMethod(dot_L_epsilon2_lab.move_to, np.array([-0.4,-0.4,np.sqrt(9 - (0.5*np.cos(135*DEGREES)-1)**2 - (0.5*np.sin(135*DEGREES)+1)**2)])))
+
+ self.bring_to_front(dot_L_epsilon1, dot_L, dot_L_epsilon2)
+ self.add_fixed_orientation_mobjects(delta_line_lab2 ,dot_L_epsilon1_lab, dot_L_epsilon2_lab, dot_L_lab)
+
+ self.wait(2)
+ \ No newline at end of file
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-limits-and-continuity/gifs/file1_epsilon_delta_defn.gif b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-limits-and-continuity/gifs/file1_epsilon_delta_defn.gif
index 2378bcf..7fef549 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-limits-and-continuity/gifs/file1_epsilon_delta_defn.gif
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-limits-and-continuity/gifs/file1_epsilon_delta_defn.gif
Binary files differ
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/Partial_Derivatives_Quiz.pdf b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/Partial_Derivatives_Quiz.pdf
new file mode 100644
index 0000000..12559d8
--- /dev/null
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/Partial_Derivatives_Quiz.pdf
Binary files differ
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/file2_partial_deriv_hill.py b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/file2_partial_deriv_hill.py
index bfb7687..cd24859 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/file2_partial_deriv_hill.py
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/file2_partial_deriv_hill.py
@@ -17,7 +17,7 @@ class Hill(ThreeDScene):
u,
0,
2 - u*u
- ]),color=RED_E,t_min=-1.2,t_max=1.2,
+ ]),color=RED_E,t_min=0,t_max=1.2,
)
func_y =ParametricFunction(
@@ -25,7 +25,7 @@ class Hill(ThreeDScene):
0,
u,
2 - 1.5*u*u
- ]),color=PINK,t_min=-1.2,t_max=1.2,
+ ]),color=PINK,t_min=0,t_max=1.2,
)
self.set_camera_orientation(phi=60 * DEGREES, theta = 0*DEGREES)
@@ -51,18 +51,29 @@ class Hill(ThreeDScene):
text_x[1].set_color(PINK)
- slope_text_x = TexMobject("Slope =", "{\\partial", "f", "\\over", "\\partial", "x}").scale(0.6).move_to(2*UP + 3.5*RIGHT)
+ slope_text_x = TexMobject("Slope =", "{\\partial", "f", "\\over", "\\partial", "x}", "=").scale(0.6).move_to(2*UP + 3.5*RIGHT)
slope_text_x[0].set_color(BLUE_E)
slope_text_x.set_color_by_tex("\\partial",YELLOW_C)
slope_text_x.set_color_by_tex("f",RED_E)
slope_text_x[5].set_color(PINK)
- self.add_fixed_in_frame_mobjects(text_x, slope_text_x)
+ number_x = DecimalNumber(0,color=RED_C).scale(0.7).next_to(slope_text_x, RIGHT)
+
+ prev_x_x = 0.01
+ prev_x_z = 2
+
+ self.add_fixed_in_frame_mobjects(text_x, slope_text_x, number_x)
dot_x = Dot().rotate(PI/2).set_color(YELLOW_E)
alpha_x = ValueTracker(0)
vector_x = self.get_tangent_vector(alpha_x.get_value(),func_x,scale=1.5)
dot_x.add_updater(lambda m: m.move_to(vector_x.get_center()))
+ number_x.add_updater(lambda m: m.set_value((dot_x.get_center()[2] - prev_x_z)/(dot_x.get_center()[0] - prev_x_x)))
+ number_x.add_updater(lambda m: self.add_fixed_in_frame_mobjects(m))
+
+ prev_x_x = (dot_x.get_center()[0])
+ prev_x_z = (dot_x.get_center()[2])
+
self.play(
ShowCreation(func_x),
GrowFromCenter(dot_x),
@@ -76,27 +87,39 @@ class Hill(ThreeDScene):
self.add(vector_x,dot_x)
- self.play(alpha_x.increment_value, 1, run_time=10, rate_func=linear)
+ self.play(alpha_x.increment_value, 1, run_time=3, rate_func=linear)
#self.move_camera(phi=60 * DEGREES, theta = 0*DEGREES)
- self.play(FadeOut(vector_x), FadeOut(dot_x), FadeOut(func_x), FadeOut(text_x), FadeOut(slope_text_x))
+ self.play(FadeOut(number_x), FadeOut(vector_x), FadeOut(dot_x), FadeOut(func_x), FadeOut(text_x), FadeOut(slope_text_x))
text_y = TextMobject("Slope of the hill along", r"$y$", "axis", color = YELLOW_C).scale(0.6).move_to(2.7*UP + 3.5*RIGHT)
text_y[1].set_color(RED_C)
- slope_text_y = TexMobject("Slope =", "{\\partial", "f", "\\over", "\\partial", "x}").scale(0.6).move_to(2*UP + 3.5*RIGHT)
+ slope_text_y = TexMobject("Slope =", "{\\partial", "f", "\\over", "\\partial", "y}").scale(0.6).move_to(2*UP + 3.5*RIGHT)
slope_text_y[0].set_color(BLUE_E)
slope_text_y.set_color_by_tex("\\partial",YELLOW_C)
slope_text_y.set_color_by_tex("f",PINK)
slope_text_y[5].set_color(RED_C)
- self.add_fixed_in_frame_mobjects(text_y, slope_text_y)
+ number_y = DecimalNumber(0,color=RED_C).scale(0.7).next_to(slope_text_y, RIGHT)
+
+ prev_y_x = 0.01
+ prev_y_z = 2
+
+ self.add_fixed_in_frame_mobjects(text_y, slope_text_y, number_y)
dot_y = Dot().rotate(PI/2).set_color(BLUE_E)
alpha_y = ValueTracker(0)
vector_y = self.get_tangent_vector(alpha_y.get_value(),func_y,scale=1.5)
dot_y.add_updater(lambda m: m.move_to(vector_y.get_center()))
+ number_y.add_updater(lambda m: m.set_value((dot_y.get_center()[2] - prev_y_z)/(dot_y.get_center()[0] - prev_y_x)))
+ number_y.add_updater(lambda m: self.add_fixed_in_frame_mobjects(m))
+
+ prev_y_x = (dot_y.get_center()[0])
+ prev_y_z = (dot_y.get_center()[2])
+
+
self.play(
ShowCreation(func_y),
GrowFromCenter(dot_y),
@@ -109,8 +132,8 @@ class Hill(ThreeDScene):
)
self.add(vector_y,dot_y)
- self.play(alpha_y.increment_value, 1, run_time=10, rate_func=linear)
- self.play(FadeOut(vector_y), FadeOut(dot_y), FadeOut(func_y), FadeOut(text_y), FadeOut(slope_text_y))
+ self.play(alpha_y.increment_value, 1, run_time=3, rate_func=linear)
+ self.play(FadeOut(number_y), FadeOut(vector_y), FadeOut(dot_y), FadeOut(func_y), FadeOut(text_y), FadeOut(slope_text_y))
self.wait(2)
def get_tangent_vector(self, proportion, curve, dx=0.001, scale=1):
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/file3_partial_deriv_defn.py b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/file3_partial_deriv_defn.py
index a25ca56..2b60e16 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/file3_partial_deriv_defn.py
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/file3_partial_deriv_defn.py
@@ -54,7 +54,7 @@ class PartialDeriv(ThreeDScene):
plane2 = Polygon(np.array([0,-2.2,-2.5]),np.array([0,2.2,-2.5]),np.array([0,2.2,2.5]),np.array([0,-2.2,2.5]),np.array([0,-2.2,-2.5]), color = BLUE, fill_color = BLUE, fill_opacity = 0.2)
plane2_text = TextMobject(r"$x = 0$", color = BLUE_C).move_to(2*UP + 3.2*RIGHT)
- surface_eqn = TextMobject("Surface", r"$z = 2- x^2 -y^2$", color = YELLOW_C).scale(0.6).move_to(np.array([3*LEFT +3*UP]))
+ surface_eqn = TextMobject("Surface", r"$z = f(x,y) = 2 - x^2 - y^2$", color = YELLOW_C).scale(0.6).move_to(np.array([3*LEFT +3*UP]))
surface_eqn[0].set_color(PINK)
dot1 =Sphere(radius=0.08).move_to(np.array([-1,0,1]))
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/file4_partial_deriv_example.py b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/file4_partial_deriv_example.py
index 5712a62..0a5832d 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/file4_partial_deriv_example.py
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/file4_partial_deriv_example.py
@@ -35,8 +35,8 @@ class PartialDerivX(ThreeDScene):
plane = Polygon(np.array([-2.2,0,-2.5]),np.array([2.2,0,-2.5]),np.array([2.2,0,2.5]),np.array([-2.2,0,2.5]),np.array([-2.2,0,-2.5]), color = GREEN, fill_color = GREEN, fill_opacity = 0.2)
plane_text = TextMobject(r"$y = 0$", color = GREEN_C).move_to(2*UP + 3*RIGHT)
- surface_eqn = TextMobject("Surface", r"$z = 2- x^2 -y^2$", color = PINK).scale(0.6).move_to(np.array([3*LEFT +3*UP]))
- surface_eqn[0].set_color(BLUE_C)
+ surface_eqn = TextMobject("Surface", r"$z = f(x,y) = 2 - x^2 - y^2$", color = BLUE_C).scale(0.6).move_to(np.array([3*LEFT +3*UP]))
+ surface_eqn[0].set_color(PINK)
line = Line(np.array([-2,0,0]), np.array([2,0,0]), color = RED_C)
@@ -104,7 +104,7 @@ class PartialDerivX(ThreeDScene):
'''
for i in np.arange(-2,2,0.2):
- self.play(ReplacementTransform(Line(np.array([i,0,0]), np.array([i,0,-i*i + 2]), color = GREEN_C), Line(np.array([i+0.2,0,0]), np.array([i+0.2,0,-(i+0.2)**2 + 2]), color = GREEN_C)))
+ self.play(ReplacementTransform(Line(np.array([i,0,0]), np.array([i,0,-i*i + 2]), color = GREEN_C), Line(np.array([i+0.2,0,0]), np.array([i+0.2,0,-(i+0.2)**2 + 2]), color = GREEN_C)))
#self.wait()
'''
@@ -160,8 +160,8 @@ class PartialDerivY(ThreeDScene):
plane = Polygon(np.array([0,-2.2,-2.5]),np.array([0,2.2,-2.5]),np.array([0,2.2,2.5]),np.array([0,-2.2,2.5]),np.array([0,-2.2,-2.5]), color = BLUE, fill_color = BLUE, fill_opacity = 0.2)
plane_text = TextMobject(r"$x = 0$", color = BLUE_C).move_to(2*UP + 3*RIGHT)
- surface_eqn = TextMobject("Surface", r"$z = 2- x^2 -y^2$", color = PINK).scale(0.6).move_to(np.array([3*LEFT +3*UP]))
- surface_eqn[0].set_color(BLUE_C)
+ surface_eqn = TextMobject("Surface", r"$z = f(x,y) = 2 - x^2 - y^2$", color = BLUE_C ).scale(0.6).move_to(np.array([3*LEFT +3*UP]))
+ surface_eqn[0].set_color(PINK)
line = Line(np.array([0,-2,0]), np.array([0,2,0]), color = RED_C)
@@ -223,7 +223,7 @@ class PartialDerivY(ThreeDScene):
'''
for i in np.arange(-2,2,0.2):
- self.play(ReplacementTransform(Line(np.array([0,i,0]), np.array([0,i,-i*i + 2]), color = BLUE_C), Line(np.array([0,i+0.2,0]), np.array([0,i+0.2,-(i+0.2)**2 + 2]), color = BLUE_C)))
+ self.play(ReplacementTransform(Line(np.array([0,i,0]), np.array([0,i,-i*i + 2]), color = BLUE_C), Line(np.array([0,i+0.2,0]), np.array([0,i+0.2,-(i+0.2)**2 + 2]), color = BLUE_C)))
#self.wait()
'''
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/file7_partial_deriv_clariant_rule.py b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/file7_partial_deriv_clariant_rule.py
index 313c6cd..b48f172 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/file7_partial_deriv_clariant_rule.py
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/file7_partial_deriv_clariant_rule.py
@@ -12,9 +12,13 @@ class ClariantRule(ThreeDScene):
]),u_min=0,u_max=PI,v_min=0,v_max=2*PI, color = BLUE_C, fill_color = BLUE_C, fill_opacity = 0.1,
resolution=(15, 32)).scale(1)
-
- function_copy1 = function.copy()
- function_copy2 = function.copy()
+ function_x = ParametricSurface(
+ lambda u, v: np.array([
+ 3.5*np.sin(u)*np.cos(v),
+ 3.5*np.sin(u)*np.sin(v),
+ -4*3.5*3.5*3.5*np.sin(u)*np.sin(u)*np.sin(u)*(2*np.sin(v)*np.sin(v))*np.exp(1 - 3.5*3.5*np.sin(u)*np.sin(u))
+ ]),u_min=0,u_max=PI,v_min=0,v_max=2*PI, color = BLUE_C, fill_color = BLUE_C, fill_opacity = 0.1,
+ resolution=(15, 32)).scale(1)
func_x =ParametricFunction(
lambda u : np.array([
@@ -38,8 +42,11 @@ class ClariantRule(ThreeDScene):
plane_y = Polygon(np.array([0,-3.5,-3]),np.array([0,3.5,-3]),np.array([0,3.5,3]),np.array([0,-3.5,3]),np.array([0,-3.5,-3]), color = GREEN_E, fill_color = GREEN_B, fill_opacity = 0.1)
plane_text_y = TextMobject(r"$x = 0$", color = GREEN_C).move_to(np.array([0,4,2.7])).scale(0.7)
- surface_eqn = TextMobject("Surface", r"$z = (x^2 + 3y^2)e^{(1 - x^2 - y^2)}$", color = YELLOW_C).scale(0.6).move_to(np.array([4.6*LEFT+3.5*UP]))
+ surface_eqn = TextMobject("Surface", r"$z = f(x,y) = (x^2 + 3y^2)e^{(1 - x^2 - y^2)}$", color = YELLOW_C).scale(0.6).move_to(np.array([4.1*LEFT+3.8*UP]))
surface_eqn[0].set_color(BLUE_C)
+ number_plane = NumberPlane()
+
+ line = Line(np.array([0,-1,3]), np.array([0,-1,-3]), color = PURPLE)
self.set_camera_orientation(phi=60 * DEGREES, theta = 45*DEGREES)
@@ -54,15 +61,20 @@ class ClariantRule(ThreeDScene):
self.add_fixed_orientation_mobjects(axis[1])
self.play(ShowCreation(function))
+ self.wait()
+ self.play(ShowCreation(number_plane))
self.add_fixed_in_frame_mobjects(surface_eqn)
- self.play(ShowCreation(plane_x), ShowCreation(plane_y))
+ self.play(ShowCreation(plane_x), ShowCreation(plane_y), ShowCreation(line))
self.add_fixed_orientation_mobjects(plane_text_x, plane_text_y)
- self.play(ShowCreation(func_x), ShowCreation(func_y))
+ self.move_camera(phi=0* DEGREES,theta=45*DEGREES)
+ self.wait(3)
+ self.move_camera(phi=60* DEGREES,theta=45*DEGREES)
+ #self.play(ShowCreation(func_x), ShowCreation(func_y))
- dot_x = Dot().rotate(PI/2).set_color(YELLOW_E)
+ dot_x = Dot().rotate(PI/2).set_color(YELLOW_C)
alpha_x = ValueTracker(0)
vector_x = self.get_tangent_vector(alpha_x.get_value(),func_x,scale=1.5)
dot_x.add_updater(lambda m: m.move_to(vector_x.get_center()))
@@ -92,17 +104,21 @@ class ClariantRule(ThreeDScene):
)
self.add(vector_x,dot_x)
- self.play(alpha_x.increment_value, 1, run_time=10, rate_func=linear)
+ self.play(alpha_x.increment_value, 1, run_time=5, rate_func=linear)
self.add(vector_y,dot_y)
- self.play(alpha_y.increment_value, 1, run_time=10, rate_func=linear)
+ self.play(alpha_y.increment_value, 1, run_time=5, rate_func=linear)
self.wait(2)
-
-
-
-
+
-
+ def get_tangent_vector(self, proportion, curve, dx=0.001, scale=1):
+ coord_i = curve.point_from_proportion(proportion)
+ coord_f = curve.point_from_proportion(proportion + dx)
+ reference_line = Line(coord_i,coord_f)
+ unit_vector = reference_line.get_unit_vector() * scale
+ vector = Line(coord_i - unit_vector, coord_i + unit_vector, color = ORANGE, buff=0)
+ return vector
+
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/gifs/file2_partial_deriv_hill.gif b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/gifs/file2_partial_deriv_hill.gif
index 3c758ff..d74ac4d 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/gifs/file2_partial_deriv_hill.gif
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/gifs/file2_partial_deriv_hill.gif
Binary files differ
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/gifs/file3_partial_deriv_defn.gif b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/gifs/file3_partial_deriv_defn.gif
index c66b3fa..4dd1eee 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/gifs/file3_partial_deriv_defn.gif
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/gifs/file3_partial_deriv_defn.gif
Binary files differ
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/gifs/file4_partial_deriv_example.gif b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/gifs/file4_partial_deriv_example.gif
index d2bf541..32cce4c 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/gifs/file4_partial_deriv_example.gif
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/gifs/file4_partial_deriv_example.gif
Binary files differ
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/gifs/file7_partial_deriv_clariant_rule.gif b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/gifs/file7_partial_deriv_clariant_rule.gif
index 32d5e92..ca5beda 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/gifs/file7_partial_deriv_clariant_rule.gif
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/partial-derivatives/gifs/file7_partial_deriv_clariant_rule.gif
Binary files differ
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/scalar-functions/file1_scalar_functions.py b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/scalar-functions/file1_scalar_functions.py
index 1a6f4ed..8d9bd20 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/scalar-functions/file1_scalar_functions.py
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/scalar-functions/file1_scalar_functions.py
@@ -9,8 +9,8 @@ class ScalarFunction(Scene):
arrow = Arrow(np.array([3,-3,0]),np.array([3,3,0]))
line = Line(np.array([3,-1.5,0]),np.array([3,1.5,0]), color = RED_C)
- dot0 = Dot().shift(np.array([3,0,0])).set_color(RED_E)
- dot0_lab = TextMobject(r"$f(a)$", color = RED_E).scale(0.8).next_to(dot0, RIGHT)
+ dot0 = Dot().shift(np.array([3,0,0])).set_color("#8b000c")
+ dot0_lab = TextMobject(r"$f(a)$", color = "#8b000c").scale(0.8).next_to(dot0, RIGHT)
dot1 = Dot().shift(np.array([3,-1.5,0])).set_color(RED_C)
@@ -38,12 +38,12 @@ class ScalarFunction(Scene):
self.play(ShowCreation(arrow))
- self.play(ShowCreation(dot1), ShowCreation(dot2))
+ self.play(ShowCreation(dot1), ShowCreation(dot2), ShowCreation(line))
self.play(ShowCreation(dot_circle))
self.play(ShowCreation(dot_circle_lab), ShowCreation(dot2_lab))
self.play(ShowCreation(A), ShowCreation(R))
self.play(GrowArrow(arrow_f), ShowCreation(dot0), ShowCreation(dot0_lab), ShowCreation(F_center), GrowArrow(arrow_R_A), ShowCreation(F), Transform(circle.copy(), line.copy()))
-
+ self.bring_to_front(dot0)
self.play(Write(scalar_function))
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/scalar-functions/file2_domain_range.py b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/scalar-functions/file2_domain_range.py
index 1b54cb6..919e68b 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/scalar-functions/file2_domain_range.py
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/scalar-functions/file2_domain_range.py
@@ -20,7 +20,7 @@ class PlotGraphs(GraphScene):
self.play(FadeOut(topic))
self.wait(1)
- scalar_func_R = TextMobject(r"Scalar Valued Functions in $R$").scale(1.5).set_color_by_gradient(RED, ORANGE, YELLOW, GREEN, BLUE, PURPLE)
+ scalar_func_R = TextMobject(r"Scalar Valued Functions in $\mathbb{R}$").scale(1.5).set_color_by_gradient(RED, ORANGE, YELLOW, GREEN, BLUE, PURPLE)
self.play(Write(scalar_func_R))
self.play(FadeOut(scalar_func_R))
self.wait(1)
@@ -55,7 +55,7 @@ class PlotGraphs(GraphScene):
domainMsg.scale(0.5)
domainMsg.set_color(GREEN)
-
+ domain_subset = TextMobject(r"Domain $\subset \mathbb{R}$", color = PURPLE).scale(0.7).move_to(self.graph_origin+3.5*YTD*UP+2*XTD*RIGHT)
self.play(ShowCreation(graphobj))
@@ -67,11 +67,9 @@ class PlotGraphs(GraphScene):
self.wait(1)
self.play(GrowArrow(domainline1))
self.play(GrowArrow(domainline2))
- self.play(Write(domainMsg))
+ self.play(Write(domainMsg), Write(domain_subset))
self.wait(3)
- self.wait(2)
-
@@ -98,8 +96,8 @@ class PlotSineGraphs(GraphScene):
sine_lab = self.get_graph_label(sineobj, label = "\\sin(x)")
- rangeline1 = Line(8*XTD*LEFT,1*YTD*UP+8*XTD*LEFT)
- rangeline2 = Line(8*XTD*LEFT,1*YTD*DOWN+8*XTD*LEFT)
+ rangeline1 = Arrow(8*XTD*LEFT,1*YTD*UP+8*XTD*LEFT, buff = 0)
+ rangeline2 = Arrow(8*XTD*LEFT,1*YTD*DOWN+8*XTD*LEFT, buff = 0)
rangeline1.set_color(RED)
rangeline2.set_color(RED)
@@ -119,7 +117,7 @@ class PlotSineGraphs(GraphScene):
domainMsg.scale(0.5)
domainMsg.set_color(GREEN)
-
+ domain_subset = TextMobject(r"Domain $\subseteq \mathbb{R}$", color = PURPLE).scale(0.7).move_to(self.graph_origin+0.8*YTD*UP+4.5*XTD*RIGHT)
self.play(ShowCreation(sineobj))
self.play(ShowCreation(sine_lab))
@@ -130,16 +128,17 @@ class PlotSineGraphs(GraphScene):
self.wait(1)
self.play(GrowArrow(domainline1))
self.play(GrowArrow(domainline2))
- self.play(Write(domainMsg))
+ self.play(Write(domainMsg), Write(domain_subset))
self.wait(3)
-
+
+
class Paraboloid(ThreeDScene):
def construct(self):
- scalar_func_R2 = TextMobject(r"Scalar Valued Functions in $R^2$").scale(1.5).set_color_by_gradient(RED, ORANGE, YELLOW, GREEN, BLUE, PURPLE)
+ scalar_func_R2 = TextMobject(r"Scalar Valued Functions in $\mathbb{R}^2$").scale(1.5).set_color_by_gradient(RED, ORANGE, YELLOW, GREEN, BLUE, PURPLE)
self.play(Write(scalar_func_R2))
self.play(FadeOut(scalar_func_R2))
self.wait(1)
@@ -155,7 +154,7 @@ class Paraboloid(ThreeDScene):
resolution=(15, 32)).scale(1)
domain = Polygon(np.array([-5,-5,0]),np.array([5,-5,0]),np.array([5,5,0]),np.array([-5,5,0]),np.array([-5,-5,0]), color = BLUE_C, fill_color = BLUE_C, fill_opacity = 0.2)
- domain_lab = TextMobject(r"$Domain: R^2$", color = YELLOW_C).scale(0.7).move_to(1*DOWN + 2*LEFT)
+ domain_lab = TextMobject(r"$Domain: \mathbb{R}^2$", color = YELLOW_C).scale(0.7).move_to(1*DOWN + 2*LEFT)
rangef = Line(np.array([0, 0,0]), np.array([0, 0,5]), color = RED_C)
rangef_lab = TextMobject(r"$Range: z \geq 0$", color = RED_C).scale(0.7).move_to(2*UP + 1.5*RIGHT)
@@ -185,6 +184,4 @@ class Paraboloid(ThreeDScene):
self.wait()
self.play(ShowCreation(rangef))
self.add_fixed_in_frame_mobjects(rangef_lab)
- self.wait(5)
-
- \ No newline at end of file
+ self.wait(5) \ No newline at end of file
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/scalar-functions/gifs/file1_scalar_functions.gif b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/scalar-functions/gifs/file1_scalar_functions.gif
index bea9c7b..aaed437 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/scalar-functions/gifs/file1_scalar_functions.gif
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/scalar-functions/gifs/file1_scalar_functions.gif
Binary files differ
diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/scalar-functions/gifs/file2_domain_range.gif b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/scalar-functions/gifs/file2_domain_range.gif
index 6801e4f..00c87cc 100644
--- a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/scalar-functions/gifs/file2_domain_range.gif
+++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/scalar-functions/gifs/file2_domain_range.gif
Binary files differ