From 086e7f793e9ded164dac46ad5217ea733cedb2b9 Mon Sep 17 00:00:00 2001 From: nishanpoojary Date: Wed, 1 Jul 2020 11:52:44 +0530 Subject: Added updated multivariable-functions folder --- .../Multivariable_Functions_Quiz.pdf | Bin 0 -> 109631 bytes .../file1_multivar_func_examples.py | 167 ++++++++++++++ .../file2_multivariable_func_respresentation.py | 98 ++++++++ .../multivariable-functions/file3_sphere.py | 177 +++++++++++++++ .../multivariable-functions/file4_vectorvf_sine.py | 91 ++++++++ .../file5_vectorvf_helix.py | 92 ++++++++ .../file6_derivative_vectorvf.py | 247 +++++++++++++++++++++ .../gifs/file1_multivar_func_examples.gif | Bin 0 -> 1440511 bytes .../file2_multivariable_func_respresentation.gif | Bin 0 -> 664757 bytes .../multivariable-functions/gifs/file3_sphere.gif | Bin 0 -> 5971004 bytes .../gifs/file4_vectorvf_sine.gif | Bin 0 -> 29814 bytes .../gifs/file5_vectorvf_helix.gif | Bin 0 -> 654632 bytes .../gifs/file6_derivative_vectorvf.gif | Bin 0 -> 117597 bytes 13 files changed, 872 insertions(+) create mode 100644 FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/Multivariable_Functions_Quiz.pdf create mode 100644 FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file1_multivar_func_examples.py create mode 100644 FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file2_multivariable_func_respresentation.py create mode 100644 FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file3_sphere.py create mode 100644 FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file4_vectorvf_sine.py create mode 100644 FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file5_vectorvf_helix.py create mode 100644 FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file6_derivative_vectorvf.py create mode 100644 FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file1_multivar_func_examples.gif create mode 100644 FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file2_multivariable_func_respresentation.gif create mode 100644 FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file3_sphere.gif create mode 100644 FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file4_vectorvf_sine.gif create mode 100644 FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file5_vectorvf_helix.gif create mode 100644 FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file6_derivative_vectorvf.gif (limited to 'FSF-2020/calculus-of-several-variables') 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 new file mode 100644 index 0000000..7895843 Binary files /dev/null and b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/Multivariable_Functions_Quiz.pdf 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 new file mode 100644 index 0000000..55b2b7e --- /dev/null +++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file1_multivar_func_examples.py @@ -0,0 +1,167 @@ +from manimlib.imports import * + +class Examples1(GraphScene): + def construct(self): + + rectangle = Rectangle(height = 3, width = 4, color = GREEN) + rectangle_area_func = TexMobject("Area", "=", "f(", "Length", ",", "Breadth", ")").scale(0.6) + rectangle_area_func[0].set_color(RED_C) + rectangle_area_func[2].set_color(ORANGE) + rectangle_area_func[3].set_color(YELLOW_C) + rectangle_area_func[5].set_color(BLUE_C) + rectangle_area_func[6].set_color(ORANGE) + + + rectangle_area = TexMobject("Area", "=", "Length", "\\times", "Breadth").scale(0.6) + rectangle_area[0].set_color(RED_C) + rectangle_area[2].set_color(YELLOW_C) + rectangle_area[4].set_color(BLUE_C) + + + 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) + + + 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) + + 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) + + + + self.play(ShowCreation(rectangle)) + self.wait(1) + self.play(GrowFromCenter(braces_rect1),Write(eq_text1),GrowFromCenter(braces_rect2),Write(eq_text2)) + self.wait(1) + self.play(Write(rectangle_area_func)) + self.wait(1) + self.play(Transform(rectangle_area_func, rectangle_area)) + self.wait(1) + 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.wait(1) + self.play(Write(square_area_func)) + self.wait(1) + self.play(Transform(square_area_func, square_area)) + self.wait(1) + self.play(FadeOut(braces_square),FadeOut(braces_square_text),FadeOut(square_area_func)) + + + self.play(Transform(rectangle, circle)) + self.wait(1) + self.play(ShowCreation(radius),Write(radius_text)) + self.wait(1) + self.play(FadeOut(radius_text),FadeOut(radius)) + 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)) + + + +class Examples2(ThreeDScene): + def construct(self): + axes = ThreeDAxes() + + rectangle_x_y_0 = Polygon(np.array([-1,-2,0]),np.array([-1,2,0]),np.array([1,2,0]),np.array([1,-2,0]),np.array([-1,-2,0]), color = RED_E, fill_color = RED_C, fill_opacity = 0.1) + rectangle_x_y_3 = Polygon(np.array([-1,-2,3]),np.array([-1,2,3]),np.array([1,2,3]),np.array([1,-2,3]),np.array([-1,-2,3]), color = RED_E, fill_color = RED_C, fill_opacity = 0.1) + + rectangle_y_z_1 = Polygon(np.array([1,-2,3]),np.array([1,2,3]),np.array([1,2,0]),np.array([1,-2,0]),np.array([1,-2,3]), color = RED_E, fill_color = RED_C, fill_opacity = 0.1) + rectangle_y_z_minus_1 = Polygon(np.array([-1,-2,3]),np.array([-1,2,3]),np.array([-1,2,0]),np.array([-1,-2,0]),np.array([-1,-2,3]), color = RED_E, fill_color = RED_C, fill_opacity = 0.1) + + rectangle_x_z_2 = Polygon(np.array([1,2,3]),np.array([-1,2,3]),np.array([-1,2,0]),np.array([1,2,0]),np.array([1,2,3]), color = RED_E, fill_color = RED_C, fill_opacity = 0.1) + rectangle_x_z_minus_2 = Polygon(np.array([1,-2,3]),np.array([-1,-2,3]),np.array([-1,-2,0]),np.array([1,-2,0]),np.array([1,-2,3]), color = RED_E, fill_color = RED_C, fill_opacity = 0.1) + + box = VGroup(rectangle_x_y_0, rectangle_x_y_3, rectangle_y_z_1, rectangle_y_z_minus_1, rectangle_x_z_2, rectangle_x_z_minus_2) + + braces_rectangle_x_y_0 = Line(np.array([1,2,0]), np.array([1,-2,0]), color = BLUE_C) + braces_rectangle_x_y_0_text = TextMobject("Length").set_color(BLUE_C).move_to(np.array([2,-1,0])) + + braces_rectangle_y_z_1 = Line(np.array([1,2,0]), np.array([1,2,3]), color = YELLOW_C) + braces_rectangle_y_z_1_text = TextMobject("Height").set_color(YELLOW_C).move_to(np.array([2,3.8,2])) + + braces_rectangle_x_z_2 = Line(np.array([1,2,3]), np.array([-1,2,3]), color = PURPLE) + braces_rectangle_x_z_2_text = TextMobject("Breadth").set_color(PURPLE).move_to(np.array([0,3.8,3.3])) + + box_area_func = TexMobject("Area =", "f(", "Length", ",", "Breadth", ",", "Height", ")").move_to(4*LEFT+3.5*UP).scale(0.6) + box_area_func[0].set_color(GREEN_C) + box_area_func[1].set_color(ORANGE) + box_area_func[2].set_color(BLUE_C) + box_area_func[4].set_color(PURPLE) + box_area_func[6].set_color(YELLOW_C) + box_area_func[7].set_color(ORANGE) + + box_area_func_2 = TexMobject("Area =", "Length", "\\times", "Breadth", "\\times", "Height").move_to(4*LEFT+3.5*UP).scale(0.6) + box_area_func_2[0].set_color(GREEN_C) + box_area_func_2[1].set_color(BLUE_C) + box_area_func_2[3].set_color(PURPLE) + box_area_func_2[5].set_color(YELLOW_C) + + + self.set_camera_orientation(phi=70 * DEGREES, theta = 45*DEGREES) + + self.add(axes) + + axis = TextMobject(r"X",r"Y",r"Z") + axis[0].move_to(6*RIGHT) + axis[1].move_to(6*UP) + axis[2].move_to(3.7*UP) + + self.add_fixed_in_frame_mobjects(axis[2]) + self.add_fixed_orientation_mobjects(axis[0]) + self.add_fixed_orientation_mobjects(axis[1]) + + self.play(ShowCreation(box), ShowCreation(braces_rectangle_x_y_0)) + self.add_fixed_orientation_mobjects(braces_rectangle_x_y_0_text) + self.play(ShowCreation(braces_rectangle_y_z_1)) + self.add_fixed_orientation_mobjects(braces_rectangle_y_z_1_text) + self.play(ShowCreation(braces_rectangle_x_z_2)) + self.add_fixed_orientation_mobjects(braces_rectangle_x_z_2_text) + self.wait(2) + + self.move_camera(phi=60* DEGREES,theta=80*DEGREES) + self.add_fixed_in_frame_mobjects(box_area_func) + self.play(Write(box_area_func)) + self.wait() + + + self.play(ReplacementTransform(box_area_func,box_area_func_2)) + self.add_fixed_in_frame_mobjects(box_area_func_2) + + + self.wait(3) \ No newline at end of file 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 new file mode 100644 index 0000000..d10ff0a --- /dev/null +++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file2_multivariable_func_respresentation.py @@ -0,0 +1,98 @@ +from manimlib.imports import * + +class MultivariableFunc(Scene): + def construct(self): + + topic = TextMobject("Multivariable Functions") + topic.set_color_by_gradient(RED, ORANGE, YELLOW, GREEN, BLUE, PURPLE) + topic.scale(1.5) + + self.play(Write(topic)) + self.wait() + 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) + scalar_function.move_to(2.5*UP) + + rectangle = Rectangle(height = 2, width = 4) + rectangle.set_color(PURPLE) + + eqn1 = TextMobject(r"f(x,y) = $x^2y$") + eqn1.set_color_by_gradient(RED, ORANGE, YELLOW, GREEN, BLUE) + + + + number1 = TextMobject("(2,1)") + number1.move_to(2.5*UP+ 4*LEFT) + number1.scale(1.2) + number1.set_color(ORANGE) + + output1 = TextMobject("4") + output1.scale(1.5) + output1.set_color(BLUE_C) + output1.move_to(3*RIGHT) + + eqn1_1 = TextMobject(r"f(2,1) = $2^2(1)$") + eqn1_1.set_color_by_gradient(RED, ORANGE, YELLOW, GREEN, BLUE) + + + self.play(Write(eqn1),ShowCreation(rectangle)) + self.wait() + self.play(ApplyMethod(number1.move_to, 3*LEFT)) + self.play(FadeOut(number1)) + self.play(Transform(eqn1, eqn1_1)) + self.wait() + self.play(ApplyMethod(output1.move_to, 2.5*DOWN+4*RIGHT)) + self.wait() + self.play(Write(scalar_function)) + self.play(FadeOut(output1), FadeOut(scalar_function), FadeOut(eqn1)) + + + vector_function = TextMobject("Vector Valued Function") + vector_function.set_color_by_gradient(RED, ORANGE, YELLOW, GREEN, BLUE, PURPLE) + vector_function.scale(1.5) + vector_function.move_to(2.5*UP) + + + eqn2 = TextMobject(r"f(x,y,z) = $ \begin{bmatrix} x^2y \\ 2yz \end{bmatrix}$") + eqn2.set_color_by_gradient(RED, ORANGE, YELLOW, GREEN, BLUE, PURPLE) + + number2 = TextMobject("(2,1,3)") + number2.move_to(2.5*UP+ 4*LEFT) + number2.scale(1.2) + 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)) + + self.wait() + 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 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 new file mode 100644 index 0000000..86239ae --- /dev/null +++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file3_sphere.py @@ -0,0 +1,177 @@ +from manimlib.imports import * + +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.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.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], + resolution=(15, 32)).scale(1) + + + #Experiment with circles by changing difference value of u and v + ''' + sphere_points = [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 u in range(0, 185, 5) for v in range(0, 365, 5)] + + sphere_spheres = [Dot().move_to(pts) for pts in sphere_points] + + sphere = VGroup(*sphere_spheres) + ''' + + self.set_camera_orientation(phi=75 * DEGREES, theta = 45*DEGREES) + + self.add(axes) + + axis = TextMobject(r"X",r"Y",r"Z") + axis[0].move_to(6*RIGHT) + axis[1].move_to(6*UP) + axis[2].move_to(np.array([0,0,3.7])) + + self.add_fixed_orientation_mobjects(axis[2]) + self.add_fixed_orientation_mobjects(axis[0]) + self.add_fixed_orientation_mobjects(axis[1]) + + 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) + + 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) + point_x_y_z1_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_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.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.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.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.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) + + + + 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) + + 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) + point_x_y_z2_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_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.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.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.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.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(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)) + + + + + sphere_final = [] + + for u in range(0, 180, 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] + + sphere_points2 = [np.array([2*np.sin((u+5)*DEGREES)*np.cos(v*DEGREES), 2*np.sin((u+5)*DEGREES)*np.sin(v*DEGREES), 2*np.cos((u+5)*DEGREES)]) for v in range(0, 370, 10)] + sphere_dots2 = [Dot().scale(0.75).set_fill(RED_C).move_to(pts) for pts in sphere_points2] + + sphere_points3 = [np.array([2*np.sin((u+10)*DEGREES)*np.cos(v*DEGREES), 2*np.sin((u+10)*DEGREES)*np.sin(v*DEGREES), 2*np.cos((u+10)*DEGREES)]) for v in range(0, 370, 10)] + sphere_dots3 = [Dot().scale(0.75).set_fill(RED_C).move_to(pts) for pts in sphere_points3] + + sphere_final = sphere_final + sphere_dots1 + sphere_dots2 + sphere_dots3 + + sphere_dots = sphere_dots1 + sphere_dots2 + sphere_dots3 + + sphere_with_dots = VGroup(*sphere_dots) + self.play(ShowCreation(sphere_with_dots)) + + sphere_final_with_dots = VGroup(*sphere_final) + + + self.begin_ambient_camera_rotation(rate=0.5) + self.wait(3) + self.play(ReplacementTransform(sphere_final_with_dots, sphere)) + self.wait(5) + + + + + + + + + + + + + + + + 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 new file mode 100644 index 0000000..06e225e --- /dev/null +++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file4_vectorvf_sine.py @@ -0,0 +1,91 @@ +from manimlib.imports import * + +class SineVectors(GraphScene): + CONFIG = { + "x_min": 0, + "x_max": 10, + "y_min": -1, + "y_max": 1, + "graph_origin": ORIGIN+4*LEFT, + #"x_labeled_nums": list(range(-5, 6)), + #"y_labeled_nums": list(range(0, 5)), + } + def construct(self): + + + + + + XTD = self.x_axis_width/(self.x_max - self.x_min) + YTD = self.y_axis_height/(self.y_max - self.y_min) + + self.setup_axes(animate = True) + + + sine1 = self.get_graph(lambda x : np.sin(x), x_min = 0, x_max = 1.575, color = GREEN) + + 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) + + 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) + + self.play(GrowArrow(vector1),Write(vector1_lab)) + self.play(ShowCreation(point1), Write(point1_lab)) + self.play(ShowCreation(sine1)) + self.wait(1) + + + sine2 = self.get_graph(lambda x : np.sin(x), x_min = 1.575, x_max = 3.15, color = GREEN) + + 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) + + 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) + + self.play(GrowArrow(vector2),Write(vector2_lab)) + self.play(ShowCreation(point2), Write(point2_lab)) + self.play(ShowCreation(sine2)) + self.wait(1) + + + sine3 = self.get_graph(lambda x : np.sin(x), x_min = 3.15, x_max = 4.725, color = GREEN) + + 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) + + 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) + + self.play(GrowArrow(vector3),Write(vector3_lab)) + self.play(ShowCreation(point3), Write(point3_lab)) + self.play(ShowCreation(sine3)) + self.wait(1) + + + sine4 = self.get_graph(lambda x : np.sin(x), x_min = 4.725, x_max = 6.3, color = GREEN) + + 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) + + 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) + + self.play(GrowArrow(vector4),Write(vector4_lab)) + self.play(ShowCreation(point4), Write(point4_lab)) + self.play(ShowCreation(sine4)) + self.wait(3) + 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 new file mode 100644 index 0000000..fc151ac --- /dev/null +++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file5_vectorvf_helix.py @@ -0,0 +1,92 @@ +from manimlib.imports import * + +class Helix(ThreeDScene): + def construct(self): + axes = ThreeDAxes() # creates a 3D Axis + + helix1=ParametricFunction( + lambda u : np.array([ + 1.5*np.cos(u), + 1.5*np.sin(u), + u/4 + ]),color=PURPLE,t_min=-TAU,t_max=TAU, + ) + + helix2=ParametricFunction( + lambda u : np.array([ + 2*np.cos(u), + 2*np.sin(u), + u/2 + ]),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.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) + function.set_color_by_tex(r"\sin", YELLOW_C) + function[0].set_color(ORANGE) + function[4].set_color(ORANGE) + + + self.add_fixed_in_frame_mobjects(function) + + self.set_camera_orientation(phi=60*DEGREES, theta = 45*DEGREES) + + self.add(axes) + + axis = TextMobject(r"X",r"Y",r"Z") + axis[0].move_to(6*RIGHT) + axis[1].move_to(6*UP) + axis[2].move_to(np.array([0,0,3.7])) + + self.add_fixed_orientation_mobjects(axis[2]) + self.add_fixed_orientation_mobjects(axis[0]) + self.add_fixed_orientation_mobjects(axis[1]) + + + dot1 = Dot().rotate(PI/2).set_color(RED_C) + alpha1 = ValueTracker(0) + vector1 = self.get_vector(alpha1.get_value(),helix1) + dot1.add_updater(lambda m: m.move_to(vector1.get_end())) + 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)) + + + 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() + + + + def get_vector(self, proportion, curve): + vector = Line(np.array([0,0,0]), curve.point_from_proportion(proportion), color = YELLOW_C, buff=0) + return vector \ No newline at end of file diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file6_derivative_vectorvf.py b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file6_derivative_vectorvf.py new file mode 100644 index 0000000..466e389 --- /dev/null +++ b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/file6_derivative_vectorvf.py @@ -0,0 +1,247 @@ +from manimlib.imports import * + +class Derivative(GraphScene): + CONFIG = { + "x_min": 0, + "x_max": 3, + "y_min": 0, + "y_max": 5, + "graph_origin": ORIGIN+6*LEFT+3*DOWN, + "x_axis_width": 6, + "x_labeled_nums": list(range(0, 4)), + "y_labeled_nums": list(range(0, 6)), + } + def construct(self): + + XTD = self.x_axis_width/(self.x_max - self.x_min) + YTD = self.y_axis_height/(self.y_max - self.y_min) + + self.setup_axes(animate = True) + + graph = self.get_graph(lambda x : x*x, x_min = 0.5, x_max = 2, color = GREEN) + + point1 = Dot().shift(self.graph_origin+0.25*YTD*UP + 0.5*XTD*RIGHT) + point1_lab = TextMobject(r"$t = a$") + point1_lab.scale(0.7) + point1_lab.next_to(point1, RIGHT) + + point2 = Dot().shift(self.graph_origin+2*XTD*RIGHT+4*YTD*UP) + point2_lab = TextMobject(r"$t = b$") + point2_lab.scale(0.7) + point2_lab.next_to(point2, RIGHT) + + + vector1 = Arrow(self.graph_origin, self.graph_origin+1*YTD*UP + 1*XTD*RIGHT, buff=0.02, color = RED) + vector1_lab = TextMobject(r"$\vec r(t)$", color = RED) + vector1_lab.move_to(self.graph_origin+1.2*XTD*RIGHT+ 0.75*YTD*UP) + vector1_lab.scale(0.8) + + vector2 = Arrow(self.graph_origin, self.graph_origin+2.25*YTD*UP + 1.5*XTD*RIGHT, buff=0.02, color = YELLOW_C) + vector2_lab = TextMobject(r"$\vec r(t + h)$", color = YELLOW_C) + vector2_lab.move_to(self.graph_origin+0.5*XTD*RIGHT+ 2*YTD*UP) + vector2_lab.scale(0.8) + + vector3 = Arrow(self.graph_origin+1*YTD*UP + 1*XTD*RIGHT, self.graph_origin+2.25*YTD*UP + 1.5*XTD*RIGHT, buff=0.02, color = PINK) + vector3_lab = TextMobject(r"$\vec r(t + h) - \vec r(t)$", color = PINK) + vector3_lab.move_to(self.graph_origin+2*XTD*RIGHT+ 1.5*YTD*UP) + vector3_lab.scale(0.8) + + + self.play(ShowCreation(graph)) + self.play(ShowCreation(point1), Write(point1_lab)) + self.play(ShowCreation(point2), Write(point2_lab)) + + self.play(GrowArrow(vector1),Write(vector1_lab)) + self.play(GrowArrow(vector2),Write(vector2_lab)) + self.play(GrowArrow(vector3),Write(vector3_lab)) + self.wait(1) + + self.display_text() + + self.play(ApplyMethod(vector3_lab.move_to,(self.graph_origin+2.3*XTD*RIGHT+ 2.2*YTD*UP))) + + vector4 = Arrow(self.graph_origin+1*YTD*UP + 1*XTD*RIGHT, self.graph_origin+1*YTD*UP + 1.5*XTD*RIGHT, buff=0.02, color = PURPLE) + vector4_lab = TextMobject(r"$dx$", color = PURPLE) + vector4_lab.move_to(self.graph_origin+1.7*XTD*RIGHT+ 0.8*YTD*UP) + vector4_lab.scale(0.7) + + vector5 = Arrow(self.graph_origin+1*YTD*UP + 1.5*XTD*RIGHT, self.graph_origin+2.25*YTD*UP + 1.5*XTD*RIGHT, buff=0.02, color = ORANGE) + vector5_lab = TextMobject(r"$dy$", color = ORANGE) + vector5_lab.move_to(self.graph_origin+1.7*XTD*RIGHT+ 1.4*YTD*UP) + vector5_lab.scale(0.7) + + self.play(GrowArrow(vector4),Write(vector4_lab)) + self.play(GrowArrow(vector5),Write(vector5_lab)) + self.wait(2) + + + + def display_text(self): + text1 = TextMobject(r"$\vec r(t)$",r"+", r"$\vec r(t + h) - \vec r(t)$") + text1[0].set_color(RED) + text1[2].set_color(PINK) + text1.scale(0.7) + + text2 = TextMobject(r"$\vec r(t + h)$", color = YELLOW_C) + text2.scale(0.7) + + text3 = TextMobject(r"$ \vec r(t + h) - \vec r(t)$", color = PINK) + text3.scale(0.7) + + text4 = TextMobject(r"[", r"$x(t+h)$", r"$\vec i$", r"+", r"$y(t+h)$", r"$\vec j$", r"$] - [$", r"$x(t)$", r"$\vec i$", r"+", r"y(t)", r"$\vec j$", r"]") + text4.set_color_by_tex(r"\vec i", BLUE) + text4.set_color_by_tex(r"\vec j", GREEN) + text4[1].set_color(YELLOW_C) + text4[4].set_color(YELLOW_C) + text4[-6].set_color(RED) + text4[-3].set_color(RED) + text4.scale(0.7) + + text5 = TextMobject(r"$[x(t+h) - x(t)]$", r"$\vec i$", r"+", r"$[y(t+h) + y(t)]$", r"$\vec j$") + text5.set_color_by_tex(r"\vec i", BLUE) + text5.set_color_by_tex(r"\vec j", GREEN) + text5[0].set_color(PURPLE) + text5[3].set_color(ORANGE) + text5.scale(0.7) + + text6 = TextMobject(r"$\frac{[\vec r(t + h) - \vec r(t)]}{h}$", r"=", r"$\frac{[x(t+h) - x(t)]}{h}$", r"$\vec i$", r"+", r"$\frac{[y(t+h) + y(t)]}{h}$", r"$\vec j$") + text6.set_color_by_tex(r"\vec i", BLUE) + text6.set_color_by_tex(r"\vec j", GREEN) + text6[0].set_color(PINK) + text6[2].set_color(PURPLE) + text6[-2].set_color(ORANGE) + text6.scale(0.8) + + text7 = TextMobject(r"$\lim_{h \rightarrow 0}$", r"$\frac{[\vec r(t + h) - \vec r(t)]}{h}$", r"=", r"$\lim_{h \rightarrow 0}$", r"$\frac{[x(t+h) - x(t)]}{h}$", r"$\vec i$", r"+", r"$\lim_{h \rightarrow 0}$", r"$\frac{[y(t+h) + y(t)]}{h}$", r"$\vec j$") + text7.set_color_by_tex(r"\vec i", BLUE) + text7.set_color_by_tex(r"\vec j", GREEN) + text7[1].set_color(PINK) + text7[4].set_color(PURPLE) + text7[-2].set_color(ORANGE) + text7.scale(0.6) + + text8 = TextMobject(r"$\vec r'(t)$", r"=",r"$\vec x'(t)$", r"$\vec i$", r"+", r"$\vec y'(t)$", r"$\vec j$") + text8.set_color_by_tex(r"\vec i", BLUE) + text8.set_color_by_tex(r"\vec j", GREEN) + text8[0].set_color(PINK) + text8[2].set_color(PURPLE) + text8[5].set_color(ORANGE) + text8.scale(0.7) + + text9 = TextMobject(r"$\frac{d \vec r}{dt}$", r"=", r"$\frac{d \vec x}{dt}$", r"$\vec i$", r"+", r"$\frac{d \vec y}{dt}$", r"$\vec j$") + text9.set_color_by_tex(r"\vec i", BLUE) + text9.set_color_by_tex(r"\vec j", GREEN) + text9[0].set_color(PINK) + text9[2].set_color(PURPLE) + text9[5].set_color(ORANGE) + text9.scale(0.7) + + + text10 = TextMobject(r"$d \vec r$", r"=", r"$\frac{d \vec x}{dt}dt$", r"$\vec i$", r"+", r"$\frac{d \vec y}{dt}dt$", r"$\vec j$") + text10.set_color_by_tex(r"\vec i", BLUE) + text10.set_color_by_tex(r"\vec j", GREEN) + text10[0].set_color(PINK) + text10[2].set_color(PURPLE) + text10[5].set_color(ORANGE) + text10.scale(0.7) + + text11 = TextMobject(r"$d \vec r$", r"=", r"$x'(t)dt$", r"$\vec i$", r"+", r"$y'(t)dt$", r"$\vec j$") + text11.set_color_by_tex(r"\vec i", BLUE) + text11.set_color_by_tex(r"\vec j", GREEN) + text11[0].set_color(PINK) + text11[2].set_color(PURPLE) + text11[5].set_color(ORANGE) + text11.scale(0.7) + + text12 = TextMobject(r"$d \vec r$", r"=", r"$dx$", r"$\vec i$", r"+", r"$dy$", r"$\vec j$") + text12.set_color_by_tex(r"\vec i", BLUE) + text12.set_color_by_tex(r"\vec j", GREEN) + text12[0].set_color(PINK) + text12[2].set_color(PURPLE) + text12[5].set_color(ORANGE) + text12.scale(0.7) + + + text1.move_to(1*UP+2.7*RIGHT) + text2.move_to(1*UP+2.7*RIGHT) + text3.move_to(1*UP+2.7*RIGHT) + text4.move_to(1*UP+2.7*RIGHT) + text5.move_to(1*UP+2.7*RIGHT) + text6.move_to(1*UP+2.7*RIGHT) + text7.move_to(1*UP+2.5*RIGHT) + text8.move_to(1*UP+2.7*RIGHT) + text9.move_to(1*UP+2.7*RIGHT) + text10.move_to(1*UP+2.7*RIGHT) + text11.move_to(1*UP+2.7*RIGHT) + text12.move_to(1*UP+2.7*RIGHT) + + brace1 = Brace(text7[0:2], DOWN, buff = SMALL_BUFF) + brace2 = Brace(text7[3:6], UP, buff = SMALL_BUFF) + brace3 = Brace(text7[7:], DOWN, buff = SMALL_BUFF) + t1 = brace1.get_text(r"$\vec r'(t)$") + t1.set_color(PINK) + + t2 = brace2.get_text(r"$\vec x'(t)$") + t2.set_color(PURPLE) + + t3 = brace3.get_text(r"$\vec y'(t)$") + t3.set_color(ORANGE) + + + self.play(Write(text1)) + self.play(Transform(text1, text2)) + self.wait(1) + + self.play(Transform(text1, text3)) + self.wait(1) + + self.play(Transform(text1, text4)) + self.wait(1) + + self.play(Transform(text1, text5)) + self.wait(1) + + self.play(Transform(text1, text6)) + self.wait(1) + + self.play(Transform(text1, text7)) + self.wait(1) + + self.play( + GrowFromCenter(brace1), + FadeIn(t1), + ) + self.wait() + self.play( + ReplacementTransform(brace1.copy(),brace2), + ReplacementTransform(t1.copy(),t2) + ) + self.wait() + self.play( + ReplacementTransform(brace2.copy(),brace3), + ReplacementTransform(t2.copy(),t3) + ) + self.wait() + + self.play(FadeOut(brace1), FadeOut(t1), FadeOut(brace2), FadeOut(t2), FadeOut(brace3), FadeOut(t3),) + self.wait() + + self.play(Transform(text1, text8)) + self.wait(1) + + self.play(Transform(text1, text9)) + self.wait(1) + + self.play(Transform(text1, text10)) + self.wait(1) + + self.play(Transform(text1, text11)) + self.wait(1) + + self.play(Transform(text1, text12)) + self.wait(1) + + + + + 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 new file mode 100644 index 0000000..43c3a42 Binary files /dev/null and b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file1_multivar_func_examples.gif 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 new file mode 100644 index 0000000..40add0f Binary files /dev/null and b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file2_multivariable_func_respresentation.gif 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 new file mode 100644 index 0000000..3e35ec8 Binary files /dev/null and b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file3_sphere.gif 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 new file mode 100644 index 0000000..4f6b931 Binary files /dev/null and b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file4_vectorvf_sine.gif 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 new file mode 100644 index 0000000..c3d37f6 Binary files /dev/null and b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file5_vectorvf_helix.gif differ diff --git a/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file6_derivative_vectorvf.gif b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file6_derivative_vectorvf.gif new file mode 100644 index 0000000..a94de90 Binary files /dev/null and b/FSF-2020/calculus-of-several-variables/multivariable-functions-and-paritial-derivatives/multivariable-functions/gifs/file6_derivative_vectorvf.gif differ -- cgit