From a66349fb0ee9c20eb6dc68b50290cc95424770ea Mon Sep 17 00:00:00 2001 From: Archit Sangal Date: Wed, 8 Jul 2020 00:52:56 +0530 Subject: gif added to Linear Transformations --- ...deo 2: Linear Transformation when form 1 is given | Bin 0 -> 50836502 bytes ...atrix Representation Of Linear Transformation.gif | Bin 0 -> 14973890 bytes ...deo 4: Understand Linear Transformations visually | Bin 0 -> 3303032 bytes .../file13_Video 5: Uniform Scaling | Bin 0 -> 1389092 bytes ...otation by an angle of in anticlockwise direction | Bin 0 -> 9471592 bytes ...y understanding linear transformation(using grid) | Bin 0 -> 19348496 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file10_Video 2: Linear Transformation when form 1 is given create mode 100644 FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file11_Video 3: Matrix Representation Of Linear Transformation.gif create mode 100644 FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file12_Video 4: Understand Linear Transformations visually create mode 100644 FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file13_Video 5: Uniform Scaling create mode 100644 FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file14_Video 6: Rotation by an angle of in anticlockwise direction create mode 100644 FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video 1: Visually understanding linear transformation(using grid) (limited to 'FSF-2020') diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file10_Video 2: Linear Transformation when form 1 is given b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file10_Video 2: Linear Transformation when form 1 is given new file mode 100644 index 0000000..e9f4b08 Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file10_Video 2: Linear Transformation when form 1 is given differ diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file11_Video 3: Matrix Representation Of Linear Transformation.gif b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file11_Video 3: Matrix Representation Of Linear Transformation.gif new file mode 100644 index 0000000..017e0c7 Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file11_Video 3: Matrix Representation Of Linear Transformation.gif differ diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file12_Video 4: Understand Linear Transformations visually b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file12_Video 4: Understand Linear Transformations visually new file mode 100644 index 0000000..ba6c156 Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file12_Video 4: Understand Linear Transformations visually differ diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file13_Video 5: Uniform Scaling b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file13_Video 5: Uniform Scaling new file mode 100644 index 0000000..fd9bc7b Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file13_Video 5: Uniform Scaling differ diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file14_Video 6: Rotation by an angle of in anticlockwise direction b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file14_Video 6: Rotation by an angle of in anticlockwise direction new file mode 100644 index 0000000..d996130 Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file14_Video 6: Rotation by an angle of in anticlockwise direction differ diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video 1: Visually understanding linear transformation(using grid) b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video 1: Visually understanding linear transformation(using grid) new file mode 100644 index 0000000..683f586 Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video 1: Visually understanding linear transformation(using grid) differ -- cgit From a651ff753110ac721aa4e7ac47110061b4fa0669 Mon Sep 17 00:00:00 2001 From: Archit Sangal Date: Thu, 9 Jul 2020 02:02:55 +0530 Subject: testing gif updates --- .../Linear-Transformations-(Linear-Maps)/README.md | 11 ++++++++ ...understanding linear transformation(using grid) | Bin 19348496 -> 0 bytes ...understanding_linear_transformation(using_grid) | Bin 0 -> 19348496 bytes .../file10_Left_Null_Space_pSv8iio_d5Sy9qS.gif | Bin 0 -> 1744023 bytes .../file10_NOT_in_lecture_note_Column_Space.py | 30 --------------------- .../file18_NOT_in_lecture_note_Column_Space.py | 30 +++++++++++++++++++++ 6 files changed, 41 insertions(+), 30 deletions(-) create mode 100644 FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md delete mode 100644 FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video 1: Visually understanding linear transformation(using grid) create mode 100644 FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video_1:_Visually_understanding_linear_transformation(using_grid) create mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file10_Left_Null_Space_pSv8iio_d5Sy9qS.gif delete mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file10_NOT_in_lecture_note_Column_Space.py create mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file18_NOT_in_lecture_note_Column_Space.py (limited to 'FSF-2020') diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md new file mode 100644 index 0000000..8ff313b --- /dev/null +++ b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md @@ -0,0 +1,11 @@ +#### Video 1: Visually understanding linear transformation(using grid) +![GIF1](file9_Video_1:_Visually_understanding_linear_transformation(using_grid)) + +#### Video 2: Linear Transformation when form 1 is given +![GIF2](file10_Video 2: Linear Transformation when form 1 is given) + +#### Video 3: Matrix Representation Of Linear Transformation +![GIF3](file11_Video 3: Matrix Representation Of Linear Transformation) + +#### Divergence of a Remainder +![GIF4](file9_Video_1:_Visually_understanding_linear_transformation(using_grid)) diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video 1: Visually understanding linear transformation(using grid) b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video 1: Visually understanding linear transformation(using grid) deleted file mode 100644 index 683f586..0000000 Binary files a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video 1: Visually understanding linear transformation(using grid) and /dev/null differ diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video_1:_Visually_understanding_linear_transformation(using_grid) b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video_1:_Visually_understanding_linear_transformation(using_grid) new file mode 100644 index 0000000..683f586 Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video_1:_Visually_understanding_linear_transformation(using_grid) differ diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file10_Left_Null_Space_pSv8iio_d5Sy9qS.gif b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file10_Left_Null_Space_pSv8iio_d5Sy9qS.gif new file mode 100644 index 0000000..3f50635 Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file10_Left_Null_Space_pSv8iio_d5Sy9qS.gif differ diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file10_NOT_in_lecture_note_Column_Space.py b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file10_NOT_in_lecture_note_Column_Space.py deleted file mode 100644 index afe4f9a..0000000 --- a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file10_NOT_in_lecture_note_Column_Space.py +++ /dev/null @@ -1,30 +0,0 @@ -from manimlib.imports import * - -class Column_Space(Scene): - def construct(self): - - A = TextMobject(r"$A = $",r"$\left( \begin{array}{c c c} 1 & 2 & 1 \\ 1 & 3 & 1 \\ 2 & 1 & 4 \\ 3 & 2 & 3 \end{array} \right)$") - A.move_to(2*UP) - A[1].set_color(color = DARK_BLUE) - A.scale(0.75) - - self.play(Write(A),run_time = 1) - - CS_A = TextMobject(r"Column Space of $A = x_{1}$",r"$\left( \begin{array}{c} 1 \\ 1 \\ 2 \\ 3 \end{array} \right)$",r"$+x_{2}$",r"$ \left( \begin{array}{c} 2 \\ 3 \\ 1 \\ 2 \end{array} \right)$",r"$ + x_{3}$",r"$\left( \begin{array}{c} 1 \\ 1 \\ 4 \\ 3 \end{array} \right)$") - CS_A.move_to(1.5*LEFT+1*DOWN) - CS_A[1].set_color(color = DARK_BLUE) - CS_A[3].set_color(color = DARK_BLUE) - CS_A[5].set_color(color = DARK_BLUE) - CS_A.scale(0.75) - - self.play(Write(CS_A),run_time = 2) - - arrow1 = Arrow(start = 1.25*UP,end = 0.25*DOWN+1.75*LEFT) - arrow2 = Arrow(start = 1.35*UP+0.5*RIGHT,end = 0.25*DOWN+0.5*RIGHT) - arrow3 = Arrow(start = 1.25*UP+0.75*RIGHT,end = 0.25*DOWN+2.9*RIGHT) - - Defn = TextMobject("Linear Combination of Columns of Matrix") - Defn.move_to(3*DOWN) - - self.play(Write(Defn), ShowCreation(arrow1), ShowCreation(arrow2), ShowCreation(arrow3),run_time = 1) - self.wait(1) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file18_NOT_in_lecture_note_Column_Space.py b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file18_NOT_in_lecture_note_Column_Space.py new file mode 100644 index 0000000..afe4f9a --- /dev/null +++ b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file18_NOT_in_lecture_note_Column_Space.py @@ -0,0 +1,30 @@ +from manimlib.imports import * + +class Column_Space(Scene): + def construct(self): + + A = TextMobject(r"$A = $",r"$\left( \begin{array}{c c c} 1 & 2 & 1 \\ 1 & 3 & 1 \\ 2 & 1 & 4 \\ 3 & 2 & 3 \end{array} \right)$") + A.move_to(2*UP) + A[1].set_color(color = DARK_BLUE) + A.scale(0.75) + + self.play(Write(A),run_time = 1) + + CS_A = TextMobject(r"Column Space of $A = x_{1}$",r"$\left( \begin{array}{c} 1 \\ 1 \\ 2 \\ 3 \end{array} \right)$",r"$+x_{2}$",r"$ \left( \begin{array}{c} 2 \\ 3 \\ 1 \\ 2 \end{array} \right)$",r"$ + x_{3}$",r"$\left( \begin{array}{c} 1 \\ 1 \\ 4 \\ 3 \end{array} \right)$") + CS_A.move_to(1.5*LEFT+1*DOWN) + CS_A[1].set_color(color = DARK_BLUE) + CS_A[3].set_color(color = DARK_BLUE) + CS_A[5].set_color(color = DARK_BLUE) + CS_A.scale(0.75) + + self.play(Write(CS_A),run_time = 2) + + arrow1 = Arrow(start = 1.25*UP,end = 0.25*DOWN+1.75*LEFT) + arrow2 = Arrow(start = 1.35*UP+0.5*RIGHT,end = 0.25*DOWN+0.5*RIGHT) + arrow3 = Arrow(start = 1.25*UP+0.75*RIGHT,end = 0.25*DOWN+2.9*RIGHT) + + Defn = TextMobject("Linear Combination of Columns of Matrix") + Defn.move_to(3*DOWN) + + self.play(Write(Defn), ShowCreation(arrow1), ShowCreation(arrow2), ShowCreation(arrow3),run_time = 1) + self.wait(1) \ No newline at end of file -- cgit From 591ad26619bda2db76e4256fdf9058e236a75b9d Mon Sep 17 00:00:00 2001 From: Archit Sangal Date: Thu, 9 Jul 2020 02:05:57 +0530 Subject: testing 2 --- .../Linear-Transformations-(Linear-Maps)/README.md | 2 +- ...y_understanding_linear_transformation(using_grid) | Bin 19348496 -> 0 bytes ...derstanding_linear_transformation(using_grid).gif | Bin 0 -> 19348496 bytes 3 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video_1:_Visually_understanding_linear_transformation(using_grid) create mode 100644 FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video_1:_Visually_understanding_linear_transformation(using_grid).gif (limited to 'FSF-2020') diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md index 8ff313b..a52ccd8 100644 --- a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md +++ b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md @@ -1,5 +1,5 @@ #### Video 1: Visually understanding linear transformation(using grid) -![GIF1](file9_Video_1:_Visually_understanding_linear_transformation(using_grid)) +![GIF1](file9_Video_1:_Visually_understanding_linear_transformation(using_grid).gif) #### Video 2: Linear Transformation when form 1 is given ![GIF2](file10_Video 2: Linear Transformation when form 1 is given) diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video_1:_Visually_understanding_linear_transformation(using_grid) b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video_1:_Visually_understanding_linear_transformation(using_grid) deleted file mode 100644 index 683f586..0000000 Binary files a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video_1:_Visually_understanding_linear_transformation(using_grid) and /dev/null differ diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video_1:_Visually_understanding_linear_transformation(using_grid).gif b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video_1:_Visually_understanding_linear_transformation(using_grid).gif new file mode 100644 index 0000000..683f586 Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video_1:_Visually_understanding_linear_transformation(using_grid).gif differ -- cgit From 23107701f28e4856a359d8c835ef7e396f9bd26e Mon Sep 17 00:00:00 2001 From: Archit Sangal Date: Thu, 9 Jul 2020 02:08:57 +0530 Subject: testing 3 --- .../Linear-Transformations-(Linear-Maps)/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'FSF-2020') diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md index a52ccd8..99a7b62 100644 --- a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md +++ b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md @@ -1,5 +1,5 @@ #### Video 1: Visually understanding linear transformation(using grid) -![GIF1](file9_Video_1:_Visually_understanding_linear_transformation(using_grid).gif) +![GIF1](file6_Horizontal_Shear_gif.gif) #### Video 2: Linear Transformation when form 1 is given ![GIF2](file10_Video 2: Linear Transformation when form 1 is given) -- cgit From 600cf20487c45263c71fa15993e4b12b212cceb7 Mon Sep 17 00:00:00 2001 From: Archit Sangal Date: Thu, 9 Jul 2020 02:23:57 +0530 Subject: testing 4 --- .../Linear-Transformations-(Linear-Maps)/README.md | 18 +++++++++++++++--- .../Linear-Transformations-(Linear-Maps)/file10.gif | Bin 0 -> 9471592 bytes ...deo 2: Linear Transformation when form 1 is given | Bin 50836502 -> 0 bytes .../Linear-Transformations-(Linear-Maps)/file11.gif | Bin 0 -> 50836502 bytes ...atrix Representation Of Linear Transformation.gif | Bin 14973890 -> 0 bytes .../Linear-Transformations-(Linear-Maps)/file12.gif | Bin 0 -> 19348496 bytes ...deo 4: Understand Linear Transformations visually | Bin 3303032 -> 0 bytes .../file13_Video 5: Uniform Scaling | Bin 1389092 -> 0 bytes ...otation by an angle of in anticlockwise direction | Bin 9471592 -> 0 bytes .../Linear-Transformations-(Linear-Maps)/file9.gif | Bin 0 -> 14973890 bytes ...derstanding_linear_transformation(using_grid).gif | Bin 19348496 -> 0 bytes 11 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file10.gif delete mode 100644 FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file10_Video 2: Linear Transformation when form 1 is given create mode 100644 FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file11.gif delete mode 100644 FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file11_Video 3: Matrix Representation Of Linear Transformation.gif create mode 100644 FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file12.gif delete mode 100644 FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file12_Video 4: Understand Linear Transformations visually delete mode 100644 FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file13_Video 5: Uniform Scaling delete mode 100644 FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file14_Video 6: Rotation by an angle of in anticlockwise direction create mode 100644 FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9.gif delete mode 100644 FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video_1:_Visually_understanding_linear_transformation(using_grid).gif (limited to 'FSF-2020') diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md index 99a7b62..b266283 100644 --- a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md +++ b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md @@ -1,11 +1,23 @@ #### Video 1: Visually understanding linear transformation(using grid) -![GIF1](file6_Horizontal_Shear_gif.gif) +![GIF1](file9.gif) #### Video 2: Linear Transformation when form 1 is given -![GIF2](file10_Video 2: Linear Transformation when form 1 is given) +![GIF2](file10.gif) #### Video 3: Matrix Representation Of Linear Transformation ![GIF3](file11_Video 3: Matrix Representation Of Linear Transformation) -#### Divergence of a Remainder +#### Video 4: Understand Linear Transformations visually ![GIF4](file9_Video_1:_Visually_understanding_linear_transformation(using_grid)) + +#### Video 5: Uniform Scaling +![GIF5](file6_Horizontal_Shear_gif.gif) + +#### Fig.1 Horizontal Shear +![GIF6](file6_Horizontal_Shear_gif.gif) + +#### Fig.2 Vertical Shear +![GIF7](file6_Horizontal_Shear_gif.gif) + +#### Video 6: Rotation by an angle of in anticlockwise direction +![GIF8](file6_Horizontal_Shear_gif.gif) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file10.gif b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file10.gif new file mode 100644 index 0000000..d996130 Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file10.gif differ diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file10_Video 2: Linear Transformation when form 1 is given b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file10_Video 2: Linear Transformation when form 1 is given deleted file mode 100644 index e9f4b08..0000000 Binary files a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file10_Video 2: Linear Transformation when form 1 is given and /dev/null differ diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file11.gif b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file11.gif new file mode 100644 index 0000000..e9f4b08 Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file11.gif differ diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file11_Video 3: Matrix Representation Of Linear Transformation.gif b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file11_Video 3: Matrix Representation Of Linear Transformation.gif deleted file mode 100644 index 017e0c7..0000000 Binary files a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file11_Video 3: Matrix Representation Of Linear Transformation.gif and /dev/null differ diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file12.gif b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file12.gif new file mode 100644 index 0000000..683f586 Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file12.gif differ diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file12_Video 4: Understand Linear Transformations visually b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file12_Video 4: Understand Linear Transformations visually deleted file mode 100644 index ba6c156..0000000 Binary files a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file12_Video 4: Understand Linear Transformations visually and /dev/null differ diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file13_Video 5: Uniform Scaling b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file13_Video 5: Uniform Scaling deleted file mode 100644 index fd9bc7b..0000000 Binary files a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file13_Video 5: Uniform Scaling and /dev/null differ diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file14_Video 6: Rotation by an angle of in anticlockwise direction b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file14_Video 6: Rotation by an angle of in anticlockwise direction deleted file mode 100644 index d996130..0000000 Binary files a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file14_Video 6: Rotation by an angle of in anticlockwise direction and /dev/null differ diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9.gif b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9.gif new file mode 100644 index 0000000..017e0c7 Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9.gif differ diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video_1:_Visually_understanding_linear_transformation(using_grid).gif b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video_1:_Visually_understanding_linear_transformation(using_grid).gif deleted file mode 100644 index 683f586..0000000 Binary files a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file9_Video_1:_Visually_understanding_linear_transformation(using_grid).gif and /dev/null differ -- cgit From 6e3b20ca47ec9431302fdd2cd863ad9ca82abfee Mon Sep 17 00:00:00 2001 From: Archit Sangal Date: Thu, 9 Jul 2020 02:36:40 +0530 Subject: testing 5 --- .../Linear-Transformations-(Linear-Maps)/README.md | 14 +++++++------- .../Linear-Transformations-(Linear-Maps)/file13.gif | Bin 0 -> 3303032 bytes .../Linear-Transformations-(Linear-Maps)/file14.gif | Bin 0 -> 1389092 bytes 3 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file13.gif create mode 100644 FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file14.gif (limited to 'FSF-2020') diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md index b266283..8407533 100644 --- a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md +++ b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md @@ -1,23 +1,23 @@ #### Video 1: Visually understanding linear transformation(using grid) -![GIF1](file9.gif) +![GIF1](file12.gif) #### Video 2: Linear Transformation when form 1 is given -![GIF2](file10.gif) +![GIF2](file11.gif) #### Video 3: Matrix Representation Of Linear Transformation -![GIF3](file11_Video 3: Matrix Representation Of Linear Transformation) +![GIF3](file9.gif) #### Video 4: Understand Linear Transformations visually -![GIF4](file9_Video_1:_Visually_understanding_linear_transformation(using_grid)) +![GIF4](file13.gif) #### Video 5: Uniform Scaling -![GIF5](file6_Horizontal_Shear_gif.gif) +![GIF5](file14.gif) #### Fig.1 Horizontal Shear ![GIF6](file6_Horizontal_Shear_gif.gif) #### Fig.2 Vertical Shear -![GIF7](file6_Horizontal_Shear_gif.gif) +![GIF7](file7_Vertical_Shear_gif.gif) #### Video 6: Rotation by an angle of in anticlockwise direction -![GIF8](file6_Horizontal_Shear_gif.gif) \ No newline at end of file +![GIF8](file10.gif) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file13.gif b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file13.gif new file mode 100644 index 0000000..ba6c156 Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file13.gif differ diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file14.gif b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file14.gif new file mode 100644 index 0000000..fd9bc7b Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/file14.gif differ -- cgit From a637d8b87fc86f058af30d8855870921b7267b50 Mon Sep 17 00:00:00 2001 From: Archit Sangal Date: Thu, 9 Jul 2020 02:41:33 +0530 Subject: README.md updated with gif(s) --- .../Linear-Transformations-(Linear-Maps)/README.md | 7 +++++++ FSF-2020/linear-algebra/linear-transformations/README.md | 5 +++-- 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'FSF-2020') diff --git a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md index 8407533..c286736 100644 --- a/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md +++ b/FSF-2020/linear-algebra/linear-transformations/Linear-Transformations-(Linear-Maps)/README.md @@ -1,3 +1,10 @@ +# Contributer: Archit Sangal +My Github Account : architsangal +

+ +## Sub-Topics Covered: ++ Linear Transformations (Linear Maps) + #### Video 1: Visually understanding linear transformation(using grid) ![GIF1](file12.gif) diff --git a/FSF-2020/linear-algebra/linear-transformations/README.md b/FSF-2020/linear-algebra/linear-transformations/README.md index 692201e..cf81d01 100644 --- a/FSF-2020/linear-algebra/linear-transformations/README.md +++ b/FSF-2020/linear-algebra/linear-transformations/README.md @@ -1,9 +1,10 @@ # Contributer: Archit Sangal My Github Account : architsangal

+ ## Sub-Topics Covered: -+ Vector Space Homomorphisms (Linear Maps) ++ Linear Transformations (Linear Maps) + The Four Fundamental Subspaces + Rank-Nullity Theorem + Orthonormal basis -+ Gramm-Schmidt Orthogonalization Process ++ Gramm-Schmidt Orthogonalization Process \ No newline at end of file -- cgit From 350ccaf2453180475406256cc8d4c9bfe9db3880 Mon Sep 17 00:00:00 2001 From: Archit Sangal Date: Thu, 9 Jul 2020 02:59:49 +0530 Subject: updated folder name and README.md files --- .../file1_introduction.py | 33 -- .../file2_projections.py | 79 ----- .../file3_orthonormal.py | 333 --------------------- .../file4_Non_Standard_Basis.py | 51 ---- .../README.md | 18 ++ .../file1_introduction.py | 33 ++ .../file2_projections.py | 79 +++++ .../file3_orthonormal.py | 333 +++++++++++++++++++++ .../file4_Non_Standard_Basis.py | 51 ++++ .../file5.gif | Bin 0 -> 26037424 bytes .../file6.gif | Bin 0 -> 5378916 bytes .../file7.gif | Bin 0 -> 603223 bytes .../file8.gif | Bin 0 -> 1027000 bytes .../Orthonormal Basis/file1_orthogonal.py | 40 --- .../file2_sum_of_projections_part1.py | 133 -------- .../file3_sum_of_projections_part2.py | 173 ----------- .../Orthonormal-Basis/README.md | 30 ++ .../Orthonormal-Basis/file1_orthogonal.py | 40 +++ .../file2_sum_of_projections_part1.py | 133 ++++++++ .../file3_sum_of_projections_part2.py | 173 +++++++++++ .../The-Four-Fundamental-Subspaces/README.md | 30 ++ .../The-Rank-Nullity-Theorem/README.md | 30 ++ 22 files changed, 950 insertions(+), 842 deletions(-) delete mode 100644 FSF-2020/linear-algebra/linear-transformations/Gram Schmidt Orthonormalization Process/file1_introduction.py delete mode 100755 FSF-2020/linear-algebra/linear-transformations/Gram Schmidt Orthonormalization Process/file2_projections.py delete mode 100644 FSF-2020/linear-algebra/linear-transformations/Gram Schmidt Orthonormalization Process/file3_orthonormal.py delete mode 100644 FSF-2020/linear-algebra/linear-transformations/Gram Schmidt Orthonormalization Process/file4_Non_Standard_Basis.py create mode 100644 FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/README.md create mode 100644 FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file1_introduction.py create mode 100755 FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file2_projections.py create mode 100644 FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file3_orthonormal.py create mode 100644 FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file4_Non_Standard_Basis.py create mode 100644 FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file5.gif create mode 100644 FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file6.gif create mode 100644 FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file7.gif create mode 100644 FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file8.gif delete mode 100755 FSF-2020/linear-algebra/linear-transformations/Orthonormal Basis/file1_orthogonal.py delete mode 100755 FSF-2020/linear-algebra/linear-transformations/Orthonormal Basis/file2_sum_of_projections_part1.py delete mode 100644 FSF-2020/linear-algebra/linear-transformations/Orthonormal Basis/file3_sum_of_projections_part2.py create mode 100644 FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/README.md create mode 100755 FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file1_orthogonal.py create mode 100755 FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file2_sum_of_projections_part1.py create mode 100644 FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file3_sum_of_projections_part2.py create mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/README.md create mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Rank-Nullity-Theorem/README.md (limited to 'FSF-2020') diff --git a/FSF-2020/linear-algebra/linear-transformations/Gram Schmidt Orthonormalization Process/file1_introduction.py b/FSF-2020/linear-algebra/linear-transformations/Gram Schmidt Orthonormalization Process/file1_introduction.py deleted file mode 100644 index ccd23c9..0000000 --- a/FSF-2020/linear-algebra/linear-transformations/Gram Schmidt Orthonormalization Process/file1_introduction.py +++ /dev/null @@ -1,33 +0,0 @@ -from manimlib.imports import * - -class Orthonormal(Scene): - def construct(self): - Centre = DOWN - arrow_1 = Arrow(start = Centre+ORIGIN,end = Centre+1.414*(UP+RIGHT)) - arrow_2 = Arrow(start = Centre+ORIGIN,end = Centre+2*UP) - arrow_1.scale(1.35) - arrow_2.scale(1.35) - text = TextMobject("This is a set of linearly independent vectors") - text.scale(0.75) - text.move_to(3*UP+3*LEFT) - text.set_color(PURPLE_E) - arrow_1.set_color(PURPLE_E) - arrow_2.set_color(PURPLE_E) - self.play(Write(text)) - self.play(ShowCreation(arrow_1), ShowCreation(arrow_2)) - self.wait(2) - text1 = TextMobject("After we apply Gram-Schmidt Orthogonalization Process to set of linearly independent vectors") - text1.scale(0.6) - text1.move_to(3*UP+2*LEFT) - text1.set_color(GREEN) - arrow_a = Arrow(start = Centre+ORIGIN,end = Centre+0.707*(UP+RIGHT)) - arrow_a.set_color(GREEN) - arrow_a.scale(2) - self.play(Transform(text,text1)) - self.wait(2) - self.play(Transform(arrow_1,arrow_a)) - arrow_b = Arrow(start = Centre+ORIGIN,end = Centre+0.707*(UP+LEFT)) - arrow_b.set_color(GREEN) - arrow_b.scale(2) - self.play(Transform(arrow_2,arrow_b)) - self.wait(2) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/Gram Schmidt Orthonormalization Process/file2_projections.py b/FSF-2020/linear-algebra/linear-transformations/Gram Schmidt Orthonormalization Process/file2_projections.py deleted file mode 100755 index dd4b8d4..0000000 --- a/FSF-2020/linear-algebra/linear-transformations/Gram Schmidt Orthonormalization Process/file2_projections.py +++ /dev/null @@ -1,79 +0,0 @@ -from manimlib.imports import * - -class Projections(GraphScene): - CONFIG = { - "x_min": -6, - "x_max": 6, - "y_min": -4, - "y_max": 4, - "graph_origin" : ORIGIN , - } - def construct(self): - - self.setup_axes(animate=True) - - XTD = self.x_axis_width/(self.x_max-self.x_min) - YTD = self.y_axis_height/(self.y_max-self.y_min) - - arrow_a = Arrow(start = ORIGIN, end = 4*XTD*RIGHT) - arrow_a.scale(1.2) - arrow_a.set_color(DARK_BLUE) - arrow_b = Arrow(start = ORIGIN, end = 2*YTD*UP+2*XTD*RIGHT) - arrow_b.scale(1.3) - arrow_b.set_color(DARK_BLUE) - self.play(ShowCreation(arrow_a), ShowCreation(arrow_b)) - - text = TextMobject(r"Consider 2 linearly independent vectors $a$ and $b$") - text.set_color(DARK_BLUE) - text.scale(0.6) - text.move_to(3*YTD*UP+5*XTD*LEFT) - text_a = TextMobject("a") - text_a.move_to(0.4*YTD*DOWN+3*XTD*RIGHT) - text_a.set_color(DARK_BLUE) - text_b = TextMobject("b") - text_b.move_to(1.5*YTD*UP+RIGHT*XTD) - text_b.set_color(DARK_BLUE) - - self.play(Write(text),Write(text_a), Write(text_b)) - self.wait() - - arrow_b_copy = Arrow(start = ORIGIN, end = 2*YTD*UP+2*XTD*RIGHT) - arrow_b_copy.scale(1.25) - - arrow_p = Arrow(start = ORIGIN, end = 2*XTD*RIGHT) - arrow_p.scale(1.5) - arrow_p.set_color(GOLD_E) - - text_p = TextMobject("p") - text_p.move_to(0.25*DOWN+RIGHT) - text_p.set_color(GOLD_E) - - self.play(FadeOut(text), Transform(arrow_b_copy,arrow_p), FadeOut(text_a), FadeOut(text_b)) - text = TextMobject(r"$p$ is the projection of $b$ on $a$") - text.set_color(GOLD_E) - text.move_to(3*UP+4*LEFT) - text.scale(0.8) - self.play(Write(text),Write(text_p)) - self.wait() - - self.play(FadeIn(text_a), FadeIn(text_b)) - - arrow_o = Arrow(start = 2*XTD*RIGHT, end = 2*YTD*UP+2*XTD*RIGHT) - arrow_o.scale(1.5) - arrow_o.set_color(GREEN_E) - - text_o = TextMobject("b-p") - text_o.move_to(UP*YTD+2.7*XTD*RIGHT) - text_o.set_color(GREEN_E) - - self.play(ShowCreation(arrow_o)) - self.play(FadeOut(text),Write(text_o)) - - text = TextMobject(r"Observe, ($b-p$) is orthogonal to $a$") - text.set_color(GREEN_E) - text.move_to(2*DOWN+4*LEFT) - text.scale(0.8) - self.play(Write(text)) - self.wait(2) - - self.play(FadeOut(self.axes), FadeOut(arrow_a), FadeOut(arrow_b), FadeOut(arrow_b_copy), FadeOut(arrow_o), FadeOut(text_a), FadeOut(text_b), FadeOut(text_o), FadeOut(text_p), FadeOut(text)) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/Gram Schmidt Orthonormalization Process/file3_orthonormal.py b/FSF-2020/linear-algebra/linear-transformations/Gram Schmidt Orthonormalization Process/file3_orthonormal.py deleted file mode 100644 index af51fc6..0000000 --- a/FSF-2020/linear-algebra/linear-transformations/Gram Schmidt Orthonormalization Process/file3_orthonormal.py +++ /dev/null @@ -1,333 +0,0 @@ -from manimlib.imports import * - -class Algo(ThreeDScene): - def construct(self): - - axes = ThreeDAxes(x_min = -5,x_max=5,y_min=-3,y_max=3,z_min=-4,z_max=4) - self.play(ShowCreation(axes)) - - text = TextMobject(r"This is the vector $\beta_1(=\left[\begin{array}{c} 4\\0\\0 \end{array}\right])$") - text.set_color(GREEN) - text.scale(0.6) - text.move_to(3*UP+5*LEFT) - self.play(Write(text)) - - arrow_a = Arrow(start = ORIGIN, end = 4*RIGHT) - arrow_a.set_color(GREEN) - arrow_a.scale(1.15) - self.play(ShowCreation(arrow_a)) - - text_a = TextMobject(r"$\beta_1$") - text_a.move_to(0.4*DOWN+3*RIGHT) - text_a.set_color(GREEN) - text_a.scale(0.75) - self.play(Write(text_a)) - self.wait() - self.play(FadeOut(text)) - - text = TextMobject(r"Normalize $\beta_1$ to get $\alpha_1$") - text.set_color(DARK_BLUE) - text.scale(0.75) - text.move_to(3*UP+5*LEFT) - self.play(Write(text)) - - alpha_1 = Arrow(start = ORIGIN,end = RIGHT) - alpha_1.scale(1.9) - alpha_1.set_color(DARK_BLUE) - text_alpha_1 = TextMobject(r"$\alpha_1$") - text_alpha_1.move_to(0.4*DOWN+RIGHT) - text_alpha_1.set_color(DARK_BLUE) - text_alpha_1.scale(0.75) - self.play(Transform(text_a,text_alpha_1), Transform(arrow_a,alpha_1)) - self.wait() - self.play(FadeOut(text)) - - text = TextMobject(r"Consider another vector $\beta_2(=\left[\begin{array}{c} 2\\2\\0 \end{array}\right])$") - text1 = TextMobject(r"which is linearly independent to $\beta_1$") - text.set_color(GREEN) - text1.set_color(GREEN) - text.scale(0.6) - text1.scale(0.6) - text.move_to(3*UP+4*LEFT) - text1.move_to(2*UP+4*LEFT) - self.play(Write(text)) - self.play(Write(text1)) - - arrow_b = Arrow(start = ORIGIN, end = 2*UP+2*RIGHT) - arrow_b.scale(1.2) - arrow_b.set_color(GREEN) - text_b = TextMobject(r"$\beta_2$") - text_b.move_to(1.5*UP+RIGHT) - text_b.set_color(GREEN) - text_b.scale(0.75) - - self.play(ShowCreation(arrow_b), Write(text_b)) - self.wait() - - arrow_b_copy = Arrow(start = ORIGIN, end = 2*UP+2*RIGHT) - arrow_b_copy.scale(1.2) - - arrow_p = Arrow(start = ORIGIN, end = 2*RIGHT) - arrow_p.scale(1.35) - arrow_p.set_color(GOLD_E) - - text_p = TextMobject("p") - text_p.move_to(0.25*DOWN+RIGHT) - text_p.set_color(GOLD_E) - - self.play(FadeOut(text), FadeOut(text1), Transform(arrow_b_copy,arrow_p), FadeOut(text_a), FadeOut(text_b)) - text = TextMobject(r"$p$ is the projection of $\beta_2$ on $\alpha_1$") - text.set_color(GOLD_E) - text.move_to(3*UP+4*LEFT) - text.scale(0.8) - self.play(Write(text),Write(text_p)) - self.wait() - - self.play(FadeIn(text_b)) - - arrow_o = Arrow(start = 2*RIGHT, end = 2*UP+2*RIGHT) - arrow_o.scale(1.35) - arrow_o.set_color(PURPLE_E) - - text_o = TextMobject(r"$\beta_2-p$") - text_o.move_to(UP+2.7*RIGHT) - text_o.scale(0.75) - text_o.set_color(PURPLE_E) - - self.play(ShowCreation(arrow_o)) - self.play(FadeOut(text),Write(text_o)) - - text = TextMobject(r"$\beta_2-p$ is orthogonal to p") - text1 = TextMobject(r"(and hence orthogonal to $\alpha_1$ also)") - text.set_color(PURPLE_E) - text1.set_color(PURPLE_E) - text.scale(0.7) - text1.scale(0.7) - text.move_to(3*UP+4*LEFT) - text1.move_to(2.5*UP+4*LEFT) - self.play(Write(text)) - self.play(Write(text1)) - self.wait(2) - - self.play(FadeOut(text_p), FadeIn(arrow_a), FadeOut(text), FadeOut(text1), FadeOut(arrow_b_copy), FadeOut(arrow_p), FadeOut(text_b), FadeOut(arrow_b)) - self.play(ApplyMethod(arrow_o.move_to,UP), ApplyMethod(text_o.move_to,RIGHT+UP)) - - text = TextMobject(r"Now, Normalize $\beta_2-p$") - text.set_color(DARK_BLUE) - text.scale(0.6) - text.move_to(3*UP+4*LEFT) - self.play(Write(text)) - - alpha_2 = Arrow(start = ORIGIN,end = UP) - alpha_2.scale(1.9) - alpha_2.set_color(DARK_BLUE) - text_alpha_2 = TextMobject(r"$\alpha_2$") - text_alpha_2.move_to(0.4*LEFT+UP) - text_alpha_2.set_color(DARK_BLUE) - text_alpha_2.scale(0.75) - self.play(Transform(text_o,text_alpha_2), Transform(arrow_o,alpha_2), FadeIn(text_a)) - self.wait() - self.play(FadeOut(text),FadeOut(text_a),FadeOut(text_o)) - - self.add(axes) - ############################################################################# - axis = TextMobject(r"$\alpha_1$",r"$\alpha_2$",r"$\alpha_3$",r"$\beta_3$",r"$\alpha_3$",r"$\alpha_3$",r"$\alpha_3$",r"$\alpha_3$") - axis.scale(0.5) - axis[0].move_to(0.5*RIGHT+[0,0,-0.5]) - axis[1].move_to(0.5*UP+[0,0,-0.5]) - axis[2].move_to(np.array([0,0,0.5])) - axis[3].move_to(np.array([1,1,1.5])) - self.add_fixed_orientation_mobjects(axis[0]) - self.add_fixed_orientation_mobjects(axis[1]) - ############################################################################# - - text = TextMobject(r"These are the same two orthonormal vectors $\alpha_{1}$ and $\alpha_{2}$") - text.scale(0.6) - text.set_color(DARK_BLUE) - self.add_fixed_in_frame_mobjects(text) - text.move_to(3*(DOWN+RIGHT)) - self.play(Write(text)) - - self.move_camera(phi=60*DEGREES,theta=45*DEGREES,run_time=3) - self.begin_ambient_camera_rotation(rate=0.3) - - line1 = Line(start = ORIGIN,end = 1*RIGHT) - line1.set_color(DARK_BLUE) - tip1 = Polygon(RIGHT,0.8*RIGHT-0.2*DOWN,0.8*RIGHT-0.2*UP) - tip1.set_opacity(1) - tip1.set_fill(DARK_BLUE) - tip1.set_color(DARK_BLUE) - - arrow2 = Line(start = ORIGIN,end = 1*UP) - arrow2.set_color(DARK_BLUE) - tip2 = Polygon(UP,0.8*UP-0.2*RIGHT,0.8*UP-0.2*LEFT) - tip2.set_opacity(1) - tip2.set_fill(DARK_BLUE) - tip2.set_color(DARK_BLUE) - arrow2.set_color(DARK_BLUE) - - self.play(ShowCreation(line1), ShowCreation(tip1), ShowCreation(arrow2), ShowCreation(tip2), FadeOut(arrow_a), FadeOut(arrow_o)) - self.wait() - - a_line = Line(start = ORIGIN,end = 2*UP+2*RIGHT+[0,0,2]) - a_line.set_color(GOLD_E) - a_tip = Polygon(2*UP+2*RIGHT+[0,0,2],2*UP+1.6*RIGHT+[0,0,1.8],1.6*UP+2*RIGHT+[0,0,1.8]) - a_tip.set_opacity(1) - a_tip.set_fill(GOLD_E) - a_tip.set_color(GOLD_E) - - a_line_c1 = Line(start = ORIGIN,end = 2*UP+2*RIGHT+[0,0,2]) - a_line_c1.set_color(GOLD_E) - a_tip_c1 = Polygon(2*UP+2*RIGHT+[0,0,2],2*UP+1.6*RIGHT+[0,0,1.8],1.6*UP+2*RIGHT+[0,0,1.8]) - a_tip_c1.set_opacity(1) - a_tip_c1.set_fill(GOLD_E) - a_tip_c1.set_color(GOLD_E) - - self.play(FadeOut(text), ShowCreation(a_line), ShowCreation(a_tip), ShowCreation(a_line_c1), ShowCreation(a_tip_c1)) - - text = TextMobject(r"Now, we have a vector $\beta_3(=\left[\begin{array}{c} 2\\2\\2 \end{array}\right])$") - text.set_color(GOLD_E) - text.scale(0.7) - self.add_fixed_in_frame_mobjects(text) - self.add_fixed_orientation_mobjects(axis[3]) - text.move_to(3*(DOWN+RIGHT)) - self.play(Write(text)) - self.wait() - self.play(FadeOut(text)) - - p_line1 = Line(start = ORIGIN,end = 2*RIGHT) - p_line1.set_color(GOLD_E) - p_tip1 = Polygon(RIGHT,0.8*RIGHT+0.2*DOWN,0.8*RIGHT+0.2*UP) - p_tip1.move_to(2*RIGHT) - p_tip1.set_opacity(1) - p_tip1.set_fill(GOLD_E) - p_tip1.set_color(GOLD_E) - - self.play(Transform(a_line_c1,p_line1),Transform(a_tip_c1,p_tip1)) - - text = TextMobject(r"Take projection of $\beta_3$ on $\alpha_1$") - text.scale(0.6) - text.set_color(GOLD_E) - self.add_fixed_in_frame_mobjects(text) - text.move_to(3*(DOWN+RIGHT)) - self.play(Write(text)) - self.wait() - self.play(FadeOut(text)) - - o_line1 = Line(start = 2*RIGHT,end = 2*UP+2*RIGHT+[0,0,2]) - o_line1.set_color(GREEN_E) - o_tip1 = Polygon(2*UP+2*RIGHT+[0,0,2],1.8*UP+2*RIGHT+[0,0,1.8]+0.2*RIGHT,1.8*UP+2*RIGHT+[0,0,1.8]-0.2*RIGHT) - o_tip1.set_opacity(1) - o_tip1.set_fill(GREEN_E) - o_tip1.set_color(GREEN_E) - - a_line1 = Line(start = ORIGIN,end = 2*UP+[0,0,2]) - a_line1.set_color(GREEN_E) - a_tip1 = Polygon(2*UP+[0,0,2],1.8*UP+[0,0,1.8]+0.2*RIGHT,1.8*UP+[0,0,1.8]-0.2*RIGHT) - a_tip1.set_opacity(1) - a_tip1.set_fill(GREEN_E) - a_tip1.set_color(GREEN_E) - - a_line1_c1 = Line(start = ORIGIN,end = 2*UP+[0,0,2]) - a_line1_c1.set_color(GREEN_E) - a_tip1_c1 = Polygon(2*UP+[0,0,2],1.8*UP+[0,0,1.8]+0.2*RIGHT,1.8*UP+[0,0,1.8]-0.2*RIGHT) - a_tip1_c1.set_opacity(1) - a_tip1_c1.set_fill(GREEN_E) - a_tip1_c1.set_color(GREEN_E) - - text = TextMobject(r"$\beta_3$-(projection of $\beta_3$ on $\alpha_1$)") - text.set_color(GREEN_E) - text.scale(0.6) - self.add_fixed_in_frame_mobjects(text) - text.move_to(3*(DOWN+RIGHT)) - self.play(Write(text)) - self.play(ShowCreation(o_line1), ShowCreation(o_tip1)) - self.wait(2) - self.play(FadeOut(a_line_c1), FadeOut(a_tip_c1), - FadeOut(a_line), FadeOut(a_tip), FadeOut(axis[3]), - Transform(o_line1,a_line1), Transform(o_tip1,a_tip1)) - - self.wait() - self.play(FadeOut(text)) - - p_arrow2 = Line(start = ORIGIN,end = 2*UP) - p_arrow2.set_color(GOLD_E) - p_tip2 = Polygon(2*UP,1.8*UP+0.2*RIGHT,1.8*UP+0.2*LEFT) - p_tip2.set_opacity(1) - p_tip2.set_fill(GOLD_E) - p_tip2.set_color(GOLD_E) - p_arrow2.set_color(GOLD_E) - - last_a = Line(start = 2*UP,end = [0,2,2]) - last_a.set_color(PURPLE_E) - last_a_tip = Polygon([0,0,2],[0,0,1.8]+0.2*RIGHT,[0,0,1.8]+0.2*LEFT) - last_a_tip.move_to([0,2,2]) - last_a_tip.set_opacity(1) - last_a_tip.set_fill(PURPLE_E) - last_a_tip.set_color(PURPLE_E) - - self.wait() - text = TextMobject(r"Take projection on $\alpha_2$") - text.scale(0.6) - text.set_color(GOLD_E) - self.add_fixed_in_frame_mobjects(text) - text.move_to(3*(DOWN+RIGHT)) - self.play(Write(text)) - self.play(Transform(a_line1_c1,p_arrow2),Transform(a_tip1_c1,p_tip2)) - self.wait() - self.play(FadeOut(text)) - - text = TextMobject(r"$\beta_3$-(projection of $\beta_3$ on $\alpha_1$ + projection of $\beta_3$ on $\alpha_2$)") - text.set_color(PURPLE_E) - text.scale(0.6) - self.add_fixed_in_frame_mobjects(text) - text.move_to(3*DOWN+3.5*RIGHT) - self.play(Write(text)) - self.play(ShowCreation(o_line1), ShowCreation(o_tip1)) - self.wait(2) - self.play(ShowCreation(last_a_tip), ShowCreation(last_a)) - self.wait() - self.play(FadeOut(text)) - - larrow3 = Line(start = ORIGIN,end = [0,0,2]) - larrow3.set_color(PURPLE_E) - ltip3 = Polygon([0,0,2],[0,0,1.8]+0.2*RIGHT,[0,0,1.8]+0.2*LEFT) - ltip3.set_opacity(1) - ltip3.set_fill(PURPLE_E) - ltip3.set_color(PURPLE_E) - self.wait() - self.play(FadeOut(o_line1), FadeOut(o_tip1), FadeOut(a_line1_c1), FadeOut(a_tip1_c1), Transform(last_a,larrow3), Transform(last_a_tip,ltip3)) - - text = TextMobject(r"Normalize, the vector") - text1 = TextMobject(r"$\beta_3$-(projection of $\beta_3$ on $\alpha_1$ + projection of $\beta_3$ on $\alpha_2$") - text.set_color(PURPLE_E) - text1.set_color(PURPLE_E) - text.scale(0.6) - text1.scale(0.6) - self.add_fixed_in_frame_mobjects(text) - self.add_fixed_in_frame_mobjects(text1) - text.move_to(3*DOWN+3*RIGHT) - text1.move_to(3.5*DOWN+3*RIGHT) - self.play(Write(text)) - self.play(Write(text1)) - - arrow3 = Line(start = ORIGIN,end = [0,0,1]) - arrow3.set_color(DARK_BLUE) - tip3 = Polygon([0,0,1],[0,0,0.8]-0.2*RIGHT,[0,0,0.8]-0.2*LEFT) - tip3.set_opacity(1) - tip3.set_fill(DARK_BLUE) - tip3.set_color(DARK_BLUE) - self.play(Transform(last_a,arrow3), Transform(last_a_tip,tip3)) - self.add_fixed_orientation_mobjects(axis[2]) - - self.wait() - self.play(FadeOut(text),FadeOut(text1)) - - text = TextMobject(r"These are the three orthonormal vectors $\alpha_1, \alpha_2, \alpha_3$") - text.set_color(DARK_BLUE) - self.add_fixed_in_frame_mobjects(text) - text.scale(0.6) - text.move_to(3*DOWN+3.5*RIGHT) - self.play(Write(text)) - - self.wait(3) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/Gram Schmidt Orthonormalization Process/file4_Non_Standard_Basis.py b/FSF-2020/linear-algebra/linear-transformations/Gram Schmidt Orthonormalization Process/file4_Non_Standard_Basis.py deleted file mode 100644 index 6410a2c..0000000 --- a/FSF-2020/linear-algebra/linear-transformations/Gram Schmidt Orthonormalization Process/file4_Non_Standard_Basis.py +++ /dev/null @@ -1,51 +0,0 @@ -from manimlib.imports import * - -class NSB(ThreeDScene): - def construct(self): - - axes = ThreeDAxes(x_min = -4,x_max=4,y_min=-4,y_max=4,z_min=-4,z_max=4) - self.play(ShowCreation(axes)) - self.move_camera(phi=60*DEGREES,theta=45*DEGREES,run_time=3) - self.begin_ambient_camera_rotation(rate=0.5) - - matrix = [[0.577,0.577,0.577],[-0.577,0.577,0.577],[0.577,-0.577,0.577]] - - line1 = Line(start = ORIGIN,end = 1*RIGHT) - line1.set_color(DARK_BLUE) - tip1 = Polygon(RIGHT,0.9*RIGHT-0.1*DOWN,0.9*RIGHT-0.1*UP) - tip1.set_opacity(1) - tip1.set_fill(DARK_BLUE) - tip1.set_color(DARK_BLUE) - - arrow2 = Line(start = ORIGIN,end = 1*UP) - arrow2.set_color(DARK_BLUE) - tip2 = Polygon(UP,0.9*UP-0.1*RIGHT,0.9*UP-0.1*LEFT) - tip2.set_opacity(1) - tip2.set_fill(DARK_BLUE) - tip2.set_color(DARK_BLUE) - arrow2.set_color(DARK_BLUE) - - arrow3 = Line(start = ORIGIN,end = [0,0,1]) - arrow3.set_color(DARK_BLUE) - tip3 = Polygon([0,0,1],[0,0,0.9]-0.1*RIGHT,[0,0,0.9]-0.1*LEFT) - tip3.set_opacity(1) - tip3.set_fill(DARK_BLUE) - tip3.set_color(DARK_BLUE) - - line1.apply_matrix(matrix) - tip1.apply_matrix(matrix) - arrow2.apply_matrix(matrix) - tip2.apply_matrix(matrix) - arrow3.apply_matrix(matrix) - tip3.apply_matrix(matrix) - - self.play(ShowCreation(line1), ShowCreation(tip1), ShowCreation(arrow2), ShowCreation(tip2), ShowCreation(arrow3), ShowCreation(tip3)) - - text = TextMobject(r"This is also a set of Orthonormal Vectors") - text.set_color(DARK_BLUE) - self.add_fixed_in_frame_mobjects(text) - text.scale(0.6) - text.move_to(3*DOWN+3.5*RIGHT) - self.play(Write(text)) - - self.wait(7) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/README.md b/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/README.md new file mode 100644 index 0000000..0305ba7 --- /dev/null +++ b/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/README.md @@ -0,0 +1,18 @@ +# Contributer: Archit Sangal +My Github Account : architsangal +

+ +## Sub-Topics Covered: ++ Gramm-Schmidt Orthogonalization Process + +#### Video 1: Introduction to Gram-Schmidt Orthogonalization Process +![GIF1](file7.gif) + +#### Video 2: Obtaining orthogonal vectors using projections +![GIF2](file8.gif) + +#### Video 3: Visual Explanation of how Gram-Schmidt Orthogonalization Process give mutually orthonormal vectors +![GIF3](file5.gif) + +#### Video 4: Example of Orthonormal Vectors which are different from standard basis +![GIF4](file6.gif) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file1_introduction.py b/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file1_introduction.py new file mode 100644 index 0000000..ccd23c9 --- /dev/null +++ b/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file1_introduction.py @@ -0,0 +1,33 @@ +from manimlib.imports import * + +class Orthonormal(Scene): + def construct(self): + Centre = DOWN + arrow_1 = Arrow(start = Centre+ORIGIN,end = Centre+1.414*(UP+RIGHT)) + arrow_2 = Arrow(start = Centre+ORIGIN,end = Centre+2*UP) + arrow_1.scale(1.35) + arrow_2.scale(1.35) + text = TextMobject("This is a set of linearly independent vectors") + text.scale(0.75) + text.move_to(3*UP+3*LEFT) + text.set_color(PURPLE_E) + arrow_1.set_color(PURPLE_E) + arrow_2.set_color(PURPLE_E) + self.play(Write(text)) + self.play(ShowCreation(arrow_1), ShowCreation(arrow_2)) + self.wait(2) + text1 = TextMobject("After we apply Gram-Schmidt Orthogonalization Process to set of linearly independent vectors") + text1.scale(0.6) + text1.move_to(3*UP+2*LEFT) + text1.set_color(GREEN) + arrow_a = Arrow(start = Centre+ORIGIN,end = Centre+0.707*(UP+RIGHT)) + arrow_a.set_color(GREEN) + arrow_a.scale(2) + self.play(Transform(text,text1)) + self.wait(2) + self.play(Transform(arrow_1,arrow_a)) + arrow_b = Arrow(start = Centre+ORIGIN,end = Centre+0.707*(UP+LEFT)) + arrow_b.set_color(GREEN) + arrow_b.scale(2) + self.play(Transform(arrow_2,arrow_b)) + self.wait(2) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file2_projections.py b/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file2_projections.py new file mode 100755 index 0000000..dd4b8d4 --- /dev/null +++ b/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file2_projections.py @@ -0,0 +1,79 @@ +from manimlib.imports import * + +class Projections(GraphScene): + CONFIG = { + "x_min": -6, + "x_max": 6, + "y_min": -4, + "y_max": 4, + "graph_origin" : ORIGIN , + } + def construct(self): + + self.setup_axes(animate=True) + + XTD = self.x_axis_width/(self.x_max-self.x_min) + YTD = self.y_axis_height/(self.y_max-self.y_min) + + arrow_a = Arrow(start = ORIGIN, end = 4*XTD*RIGHT) + arrow_a.scale(1.2) + arrow_a.set_color(DARK_BLUE) + arrow_b = Arrow(start = ORIGIN, end = 2*YTD*UP+2*XTD*RIGHT) + arrow_b.scale(1.3) + arrow_b.set_color(DARK_BLUE) + self.play(ShowCreation(arrow_a), ShowCreation(arrow_b)) + + text = TextMobject(r"Consider 2 linearly independent vectors $a$ and $b$") + text.set_color(DARK_BLUE) + text.scale(0.6) + text.move_to(3*YTD*UP+5*XTD*LEFT) + text_a = TextMobject("a") + text_a.move_to(0.4*YTD*DOWN+3*XTD*RIGHT) + text_a.set_color(DARK_BLUE) + text_b = TextMobject("b") + text_b.move_to(1.5*YTD*UP+RIGHT*XTD) + text_b.set_color(DARK_BLUE) + + self.play(Write(text),Write(text_a), Write(text_b)) + self.wait() + + arrow_b_copy = Arrow(start = ORIGIN, end = 2*YTD*UP+2*XTD*RIGHT) + arrow_b_copy.scale(1.25) + + arrow_p = Arrow(start = ORIGIN, end = 2*XTD*RIGHT) + arrow_p.scale(1.5) + arrow_p.set_color(GOLD_E) + + text_p = TextMobject("p") + text_p.move_to(0.25*DOWN+RIGHT) + text_p.set_color(GOLD_E) + + self.play(FadeOut(text), Transform(arrow_b_copy,arrow_p), FadeOut(text_a), FadeOut(text_b)) + text = TextMobject(r"$p$ is the projection of $b$ on $a$") + text.set_color(GOLD_E) + text.move_to(3*UP+4*LEFT) + text.scale(0.8) + self.play(Write(text),Write(text_p)) + self.wait() + + self.play(FadeIn(text_a), FadeIn(text_b)) + + arrow_o = Arrow(start = 2*XTD*RIGHT, end = 2*YTD*UP+2*XTD*RIGHT) + arrow_o.scale(1.5) + arrow_o.set_color(GREEN_E) + + text_o = TextMobject("b-p") + text_o.move_to(UP*YTD+2.7*XTD*RIGHT) + text_o.set_color(GREEN_E) + + self.play(ShowCreation(arrow_o)) + self.play(FadeOut(text),Write(text_o)) + + text = TextMobject(r"Observe, ($b-p$) is orthogonal to $a$") + text.set_color(GREEN_E) + text.move_to(2*DOWN+4*LEFT) + text.scale(0.8) + self.play(Write(text)) + self.wait(2) + + self.play(FadeOut(self.axes), FadeOut(arrow_a), FadeOut(arrow_b), FadeOut(arrow_b_copy), FadeOut(arrow_o), FadeOut(text_a), FadeOut(text_b), FadeOut(text_o), FadeOut(text_p), FadeOut(text)) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file3_orthonormal.py b/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file3_orthonormal.py new file mode 100644 index 0000000..af51fc6 --- /dev/null +++ b/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file3_orthonormal.py @@ -0,0 +1,333 @@ +from manimlib.imports import * + +class Algo(ThreeDScene): + def construct(self): + + axes = ThreeDAxes(x_min = -5,x_max=5,y_min=-3,y_max=3,z_min=-4,z_max=4) + self.play(ShowCreation(axes)) + + text = TextMobject(r"This is the vector $\beta_1(=\left[\begin{array}{c} 4\\0\\0 \end{array}\right])$") + text.set_color(GREEN) + text.scale(0.6) + text.move_to(3*UP+5*LEFT) + self.play(Write(text)) + + arrow_a = Arrow(start = ORIGIN, end = 4*RIGHT) + arrow_a.set_color(GREEN) + arrow_a.scale(1.15) + self.play(ShowCreation(arrow_a)) + + text_a = TextMobject(r"$\beta_1$") + text_a.move_to(0.4*DOWN+3*RIGHT) + text_a.set_color(GREEN) + text_a.scale(0.75) + self.play(Write(text_a)) + self.wait() + self.play(FadeOut(text)) + + text = TextMobject(r"Normalize $\beta_1$ to get $\alpha_1$") + text.set_color(DARK_BLUE) + text.scale(0.75) + text.move_to(3*UP+5*LEFT) + self.play(Write(text)) + + alpha_1 = Arrow(start = ORIGIN,end = RIGHT) + alpha_1.scale(1.9) + alpha_1.set_color(DARK_BLUE) + text_alpha_1 = TextMobject(r"$\alpha_1$") + text_alpha_1.move_to(0.4*DOWN+RIGHT) + text_alpha_1.set_color(DARK_BLUE) + text_alpha_1.scale(0.75) + self.play(Transform(text_a,text_alpha_1), Transform(arrow_a,alpha_1)) + self.wait() + self.play(FadeOut(text)) + + text = TextMobject(r"Consider another vector $\beta_2(=\left[\begin{array}{c} 2\\2\\0 \end{array}\right])$") + text1 = TextMobject(r"which is linearly independent to $\beta_1$") + text.set_color(GREEN) + text1.set_color(GREEN) + text.scale(0.6) + text1.scale(0.6) + text.move_to(3*UP+4*LEFT) + text1.move_to(2*UP+4*LEFT) + self.play(Write(text)) + self.play(Write(text1)) + + arrow_b = Arrow(start = ORIGIN, end = 2*UP+2*RIGHT) + arrow_b.scale(1.2) + arrow_b.set_color(GREEN) + text_b = TextMobject(r"$\beta_2$") + text_b.move_to(1.5*UP+RIGHT) + text_b.set_color(GREEN) + text_b.scale(0.75) + + self.play(ShowCreation(arrow_b), Write(text_b)) + self.wait() + + arrow_b_copy = Arrow(start = ORIGIN, end = 2*UP+2*RIGHT) + arrow_b_copy.scale(1.2) + + arrow_p = Arrow(start = ORIGIN, end = 2*RIGHT) + arrow_p.scale(1.35) + arrow_p.set_color(GOLD_E) + + text_p = TextMobject("p") + text_p.move_to(0.25*DOWN+RIGHT) + text_p.set_color(GOLD_E) + + self.play(FadeOut(text), FadeOut(text1), Transform(arrow_b_copy,arrow_p), FadeOut(text_a), FadeOut(text_b)) + text = TextMobject(r"$p$ is the projection of $\beta_2$ on $\alpha_1$") + text.set_color(GOLD_E) + text.move_to(3*UP+4*LEFT) + text.scale(0.8) + self.play(Write(text),Write(text_p)) + self.wait() + + self.play(FadeIn(text_b)) + + arrow_o = Arrow(start = 2*RIGHT, end = 2*UP+2*RIGHT) + arrow_o.scale(1.35) + arrow_o.set_color(PURPLE_E) + + text_o = TextMobject(r"$\beta_2-p$") + text_o.move_to(UP+2.7*RIGHT) + text_o.scale(0.75) + text_o.set_color(PURPLE_E) + + self.play(ShowCreation(arrow_o)) + self.play(FadeOut(text),Write(text_o)) + + text = TextMobject(r"$\beta_2-p$ is orthogonal to p") + text1 = TextMobject(r"(and hence orthogonal to $\alpha_1$ also)") + text.set_color(PURPLE_E) + text1.set_color(PURPLE_E) + text.scale(0.7) + text1.scale(0.7) + text.move_to(3*UP+4*LEFT) + text1.move_to(2.5*UP+4*LEFT) + self.play(Write(text)) + self.play(Write(text1)) + self.wait(2) + + self.play(FadeOut(text_p), FadeIn(arrow_a), FadeOut(text), FadeOut(text1), FadeOut(arrow_b_copy), FadeOut(arrow_p), FadeOut(text_b), FadeOut(arrow_b)) + self.play(ApplyMethod(arrow_o.move_to,UP), ApplyMethod(text_o.move_to,RIGHT+UP)) + + text = TextMobject(r"Now, Normalize $\beta_2-p$") + text.set_color(DARK_BLUE) + text.scale(0.6) + text.move_to(3*UP+4*LEFT) + self.play(Write(text)) + + alpha_2 = Arrow(start = ORIGIN,end = UP) + alpha_2.scale(1.9) + alpha_2.set_color(DARK_BLUE) + text_alpha_2 = TextMobject(r"$\alpha_2$") + text_alpha_2.move_to(0.4*LEFT+UP) + text_alpha_2.set_color(DARK_BLUE) + text_alpha_2.scale(0.75) + self.play(Transform(text_o,text_alpha_2), Transform(arrow_o,alpha_2), FadeIn(text_a)) + self.wait() + self.play(FadeOut(text),FadeOut(text_a),FadeOut(text_o)) + + self.add(axes) + ############################################################################# + axis = TextMobject(r"$\alpha_1$",r"$\alpha_2$",r"$\alpha_3$",r"$\beta_3$",r"$\alpha_3$",r"$\alpha_3$",r"$\alpha_3$",r"$\alpha_3$") + axis.scale(0.5) + axis[0].move_to(0.5*RIGHT+[0,0,-0.5]) + axis[1].move_to(0.5*UP+[0,0,-0.5]) + axis[2].move_to(np.array([0,0,0.5])) + axis[3].move_to(np.array([1,1,1.5])) + self.add_fixed_orientation_mobjects(axis[0]) + self.add_fixed_orientation_mobjects(axis[1]) + ############################################################################# + + text = TextMobject(r"These are the same two orthonormal vectors $\alpha_{1}$ and $\alpha_{2}$") + text.scale(0.6) + text.set_color(DARK_BLUE) + self.add_fixed_in_frame_mobjects(text) + text.move_to(3*(DOWN+RIGHT)) + self.play(Write(text)) + + self.move_camera(phi=60*DEGREES,theta=45*DEGREES,run_time=3) + self.begin_ambient_camera_rotation(rate=0.3) + + line1 = Line(start = ORIGIN,end = 1*RIGHT) + line1.set_color(DARK_BLUE) + tip1 = Polygon(RIGHT,0.8*RIGHT-0.2*DOWN,0.8*RIGHT-0.2*UP) + tip1.set_opacity(1) + tip1.set_fill(DARK_BLUE) + tip1.set_color(DARK_BLUE) + + arrow2 = Line(start = ORIGIN,end = 1*UP) + arrow2.set_color(DARK_BLUE) + tip2 = Polygon(UP,0.8*UP-0.2*RIGHT,0.8*UP-0.2*LEFT) + tip2.set_opacity(1) + tip2.set_fill(DARK_BLUE) + tip2.set_color(DARK_BLUE) + arrow2.set_color(DARK_BLUE) + + self.play(ShowCreation(line1), ShowCreation(tip1), ShowCreation(arrow2), ShowCreation(tip2), FadeOut(arrow_a), FadeOut(arrow_o)) + self.wait() + + a_line = Line(start = ORIGIN,end = 2*UP+2*RIGHT+[0,0,2]) + a_line.set_color(GOLD_E) + a_tip = Polygon(2*UP+2*RIGHT+[0,0,2],2*UP+1.6*RIGHT+[0,0,1.8],1.6*UP+2*RIGHT+[0,0,1.8]) + a_tip.set_opacity(1) + a_tip.set_fill(GOLD_E) + a_tip.set_color(GOLD_E) + + a_line_c1 = Line(start = ORIGIN,end = 2*UP+2*RIGHT+[0,0,2]) + a_line_c1.set_color(GOLD_E) + a_tip_c1 = Polygon(2*UP+2*RIGHT+[0,0,2],2*UP+1.6*RIGHT+[0,0,1.8],1.6*UP+2*RIGHT+[0,0,1.8]) + a_tip_c1.set_opacity(1) + a_tip_c1.set_fill(GOLD_E) + a_tip_c1.set_color(GOLD_E) + + self.play(FadeOut(text), ShowCreation(a_line), ShowCreation(a_tip), ShowCreation(a_line_c1), ShowCreation(a_tip_c1)) + + text = TextMobject(r"Now, we have a vector $\beta_3(=\left[\begin{array}{c} 2\\2\\2 \end{array}\right])$") + text.set_color(GOLD_E) + text.scale(0.7) + self.add_fixed_in_frame_mobjects(text) + self.add_fixed_orientation_mobjects(axis[3]) + text.move_to(3*(DOWN+RIGHT)) + self.play(Write(text)) + self.wait() + self.play(FadeOut(text)) + + p_line1 = Line(start = ORIGIN,end = 2*RIGHT) + p_line1.set_color(GOLD_E) + p_tip1 = Polygon(RIGHT,0.8*RIGHT+0.2*DOWN,0.8*RIGHT+0.2*UP) + p_tip1.move_to(2*RIGHT) + p_tip1.set_opacity(1) + p_tip1.set_fill(GOLD_E) + p_tip1.set_color(GOLD_E) + + self.play(Transform(a_line_c1,p_line1),Transform(a_tip_c1,p_tip1)) + + text = TextMobject(r"Take projection of $\beta_3$ on $\alpha_1$") + text.scale(0.6) + text.set_color(GOLD_E) + self.add_fixed_in_frame_mobjects(text) + text.move_to(3*(DOWN+RIGHT)) + self.play(Write(text)) + self.wait() + self.play(FadeOut(text)) + + o_line1 = Line(start = 2*RIGHT,end = 2*UP+2*RIGHT+[0,0,2]) + o_line1.set_color(GREEN_E) + o_tip1 = Polygon(2*UP+2*RIGHT+[0,0,2],1.8*UP+2*RIGHT+[0,0,1.8]+0.2*RIGHT,1.8*UP+2*RIGHT+[0,0,1.8]-0.2*RIGHT) + o_tip1.set_opacity(1) + o_tip1.set_fill(GREEN_E) + o_tip1.set_color(GREEN_E) + + a_line1 = Line(start = ORIGIN,end = 2*UP+[0,0,2]) + a_line1.set_color(GREEN_E) + a_tip1 = Polygon(2*UP+[0,0,2],1.8*UP+[0,0,1.8]+0.2*RIGHT,1.8*UP+[0,0,1.8]-0.2*RIGHT) + a_tip1.set_opacity(1) + a_tip1.set_fill(GREEN_E) + a_tip1.set_color(GREEN_E) + + a_line1_c1 = Line(start = ORIGIN,end = 2*UP+[0,0,2]) + a_line1_c1.set_color(GREEN_E) + a_tip1_c1 = Polygon(2*UP+[0,0,2],1.8*UP+[0,0,1.8]+0.2*RIGHT,1.8*UP+[0,0,1.8]-0.2*RIGHT) + a_tip1_c1.set_opacity(1) + a_tip1_c1.set_fill(GREEN_E) + a_tip1_c1.set_color(GREEN_E) + + text = TextMobject(r"$\beta_3$-(projection of $\beta_3$ on $\alpha_1$)") + text.set_color(GREEN_E) + text.scale(0.6) + self.add_fixed_in_frame_mobjects(text) + text.move_to(3*(DOWN+RIGHT)) + self.play(Write(text)) + self.play(ShowCreation(o_line1), ShowCreation(o_tip1)) + self.wait(2) + self.play(FadeOut(a_line_c1), FadeOut(a_tip_c1), + FadeOut(a_line), FadeOut(a_tip), FadeOut(axis[3]), + Transform(o_line1,a_line1), Transform(o_tip1,a_tip1)) + + self.wait() + self.play(FadeOut(text)) + + p_arrow2 = Line(start = ORIGIN,end = 2*UP) + p_arrow2.set_color(GOLD_E) + p_tip2 = Polygon(2*UP,1.8*UP+0.2*RIGHT,1.8*UP+0.2*LEFT) + p_tip2.set_opacity(1) + p_tip2.set_fill(GOLD_E) + p_tip2.set_color(GOLD_E) + p_arrow2.set_color(GOLD_E) + + last_a = Line(start = 2*UP,end = [0,2,2]) + last_a.set_color(PURPLE_E) + last_a_tip = Polygon([0,0,2],[0,0,1.8]+0.2*RIGHT,[0,0,1.8]+0.2*LEFT) + last_a_tip.move_to([0,2,2]) + last_a_tip.set_opacity(1) + last_a_tip.set_fill(PURPLE_E) + last_a_tip.set_color(PURPLE_E) + + self.wait() + text = TextMobject(r"Take projection on $\alpha_2$") + text.scale(0.6) + text.set_color(GOLD_E) + self.add_fixed_in_frame_mobjects(text) + text.move_to(3*(DOWN+RIGHT)) + self.play(Write(text)) + self.play(Transform(a_line1_c1,p_arrow2),Transform(a_tip1_c1,p_tip2)) + self.wait() + self.play(FadeOut(text)) + + text = TextMobject(r"$\beta_3$-(projection of $\beta_3$ on $\alpha_1$ + projection of $\beta_3$ on $\alpha_2$)") + text.set_color(PURPLE_E) + text.scale(0.6) + self.add_fixed_in_frame_mobjects(text) + text.move_to(3*DOWN+3.5*RIGHT) + self.play(Write(text)) + self.play(ShowCreation(o_line1), ShowCreation(o_tip1)) + self.wait(2) + self.play(ShowCreation(last_a_tip), ShowCreation(last_a)) + self.wait() + self.play(FadeOut(text)) + + larrow3 = Line(start = ORIGIN,end = [0,0,2]) + larrow3.set_color(PURPLE_E) + ltip3 = Polygon([0,0,2],[0,0,1.8]+0.2*RIGHT,[0,0,1.8]+0.2*LEFT) + ltip3.set_opacity(1) + ltip3.set_fill(PURPLE_E) + ltip3.set_color(PURPLE_E) + self.wait() + self.play(FadeOut(o_line1), FadeOut(o_tip1), FadeOut(a_line1_c1), FadeOut(a_tip1_c1), Transform(last_a,larrow3), Transform(last_a_tip,ltip3)) + + text = TextMobject(r"Normalize, the vector") + text1 = TextMobject(r"$\beta_3$-(projection of $\beta_3$ on $\alpha_1$ + projection of $\beta_3$ on $\alpha_2$") + text.set_color(PURPLE_E) + text1.set_color(PURPLE_E) + text.scale(0.6) + text1.scale(0.6) + self.add_fixed_in_frame_mobjects(text) + self.add_fixed_in_frame_mobjects(text1) + text.move_to(3*DOWN+3*RIGHT) + text1.move_to(3.5*DOWN+3*RIGHT) + self.play(Write(text)) + self.play(Write(text1)) + + arrow3 = Line(start = ORIGIN,end = [0,0,1]) + arrow3.set_color(DARK_BLUE) + tip3 = Polygon([0,0,1],[0,0,0.8]-0.2*RIGHT,[0,0,0.8]-0.2*LEFT) + tip3.set_opacity(1) + tip3.set_fill(DARK_BLUE) + tip3.set_color(DARK_BLUE) + self.play(Transform(last_a,arrow3), Transform(last_a_tip,tip3)) + self.add_fixed_orientation_mobjects(axis[2]) + + self.wait() + self.play(FadeOut(text),FadeOut(text1)) + + text = TextMobject(r"These are the three orthonormal vectors $\alpha_1, \alpha_2, \alpha_3$") + text.set_color(DARK_BLUE) + self.add_fixed_in_frame_mobjects(text) + text.scale(0.6) + text.move_to(3*DOWN+3.5*RIGHT) + self.play(Write(text)) + + self.wait(3) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file4_Non_Standard_Basis.py b/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file4_Non_Standard_Basis.py new file mode 100644 index 0000000..6410a2c --- /dev/null +++ b/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file4_Non_Standard_Basis.py @@ -0,0 +1,51 @@ +from manimlib.imports import * + +class NSB(ThreeDScene): + def construct(self): + + axes = ThreeDAxes(x_min = -4,x_max=4,y_min=-4,y_max=4,z_min=-4,z_max=4) + self.play(ShowCreation(axes)) + self.move_camera(phi=60*DEGREES,theta=45*DEGREES,run_time=3) + self.begin_ambient_camera_rotation(rate=0.5) + + matrix = [[0.577,0.577,0.577],[-0.577,0.577,0.577],[0.577,-0.577,0.577]] + + line1 = Line(start = ORIGIN,end = 1*RIGHT) + line1.set_color(DARK_BLUE) + tip1 = Polygon(RIGHT,0.9*RIGHT-0.1*DOWN,0.9*RIGHT-0.1*UP) + tip1.set_opacity(1) + tip1.set_fill(DARK_BLUE) + tip1.set_color(DARK_BLUE) + + arrow2 = Line(start = ORIGIN,end = 1*UP) + arrow2.set_color(DARK_BLUE) + tip2 = Polygon(UP,0.9*UP-0.1*RIGHT,0.9*UP-0.1*LEFT) + tip2.set_opacity(1) + tip2.set_fill(DARK_BLUE) + tip2.set_color(DARK_BLUE) + arrow2.set_color(DARK_BLUE) + + arrow3 = Line(start = ORIGIN,end = [0,0,1]) + arrow3.set_color(DARK_BLUE) + tip3 = Polygon([0,0,1],[0,0,0.9]-0.1*RIGHT,[0,0,0.9]-0.1*LEFT) + tip3.set_opacity(1) + tip3.set_fill(DARK_BLUE) + tip3.set_color(DARK_BLUE) + + line1.apply_matrix(matrix) + tip1.apply_matrix(matrix) + arrow2.apply_matrix(matrix) + tip2.apply_matrix(matrix) + arrow3.apply_matrix(matrix) + tip3.apply_matrix(matrix) + + self.play(ShowCreation(line1), ShowCreation(tip1), ShowCreation(arrow2), ShowCreation(tip2), ShowCreation(arrow3), ShowCreation(tip3)) + + text = TextMobject(r"This is also a set of Orthonormal Vectors") + text.set_color(DARK_BLUE) + self.add_fixed_in_frame_mobjects(text) + text.scale(0.6) + text.move_to(3*DOWN+3.5*RIGHT) + self.play(Write(text)) + + self.wait(7) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file5.gif b/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file5.gif new file mode 100644 index 0000000..2ce3577 Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file5.gif differ diff --git a/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file6.gif b/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file6.gif new file mode 100644 index 0000000..7cd7b3d Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file6.gif differ diff --git a/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file7.gif b/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file7.gif new file mode 100644 index 0000000..19a13dd Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file7.gif differ diff --git a/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file8.gif b/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file8.gif new file mode 100644 index 0000000..0ef4551 Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/Gram-Schmidt-Orthonormalization-Process/file8.gif differ diff --git a/FSF-2020/linear-algebra/linear-transformations/Orthonormal Basis/file1_orthogonal.py b/FSF-2020/linear-algebra/linear-transformations/Orthonormal Basis/file1_orthogonal.py deleted file mode 100755 index a5d96f5..0000000 --- a/FSF-2020/linear-algebra/linear-transformations/Orthonormal Basis/file1_orthogonal.py +++ /dev/null @@ -1,40 +0,0 @@ -from manimlib.imports import * - -class Orthogonal(ThreeDScene): - def construct(self): - axes = ThreeDAxes() - self.play(ShowCreation(axes)) - self.move_camera(phi=60*DEGREES,theta=45*DEGREES,run_time=3) - - text = TextMobject(r"$\hat{i}$",r"$\hat{j}$",r"$\hat{k}$") - text[0].move_to(0.7*DOWN+0.8*LEFT) - text[1].move_to(0.75*DOWN+0.7*RIGHT) - text[2].move_to(0.75*UP+0.4*RIGHT) - self.add_fixed_in_frame_mobjects(text) - self.play(Write(text)) - - line1 = Line(start = ORIGIN,end = RIGHT) - line1.set_color(DARK_BLUE) - tip1 = Polygon(-0.95*LEFT,-0.8*LEFT-0.1*DOWN,-0.8*LEFT-0.1*UP) - tip1.set_opacity(1) - tip1.set_fill(DARK_BLUE) - tip1.set_color(DARK_BLUE) - - arrow2 = Line(start = ORIGIN,end = UP) - arrow2.set_color(DARK_BLUE) - tip2 = Polygon(0.95*UP,0.8*UP-0.1*RIGHT,0.8*UP-0.1*LEFT) - tip2.set_opacity(1) - tip2.set_fill(DARK_BLUE) - tip2.set_color(DARK_BLUE) - arrow2.set_color(DARK_BLUE) - - arrow3 = Line(start = ORIGIN,end = [0,0,1]) - arrow3.set_color(DARK_BLUE) - tip3 = Polygon([0,0,0.95],[0,0,0.8]-0.1*RIGHT,[0,0,0.8]-0.1*LEFT) - tip3.set_opacity(1) - tip3.set_fill(DARK_BLUE) - tip3.set_color(DARK_BLUE) - - self.play(ShowCreation(line1), ShowCreation(tip1), ShowCreation(arrow2), ShowCreation(tip2), ShowCreation(arrow3), ShowCreation(tip3)) - - self.wait() diff --git a/FSF-2020/linear-algebra/linear-transformations/Orthonormal Basis/file2_sum_of_projections_part1.py b/FSF-2020/linear-algebra/linear-transformations/Orthonormal Basis/file2_sum_of_projections_part1.py deleted file mode 100755 index 81a0888..0000000 --- a/FSF-2020/linear-algebra/linear-transformations/Orthonormal Basis/file2_sum_of_projections_part1.py +++ /dev/null @@ -1,133 +0,0 @@ -from manimlib.imports import * -class LinearTrans(LinearTransformationScene): - CONFIG = { - "show_basis_vectors": True, - "basis_vector_stroke_width": 1, - "leave_ghost_vectors": False, - "show_coordinates": True, - } - - def construct(self): - - self.setup() - - matrix = [[0.6,-0.8],[0.8,0.6]] - self.apply_matrix(matrix) - - self.wait(2) - orthonormal = TextMobject(r"These are 2 orthonormal vectors($v_1$ and $v_2$)") - orthonormal.scale(0.7) - orthonormal.move_to(DOWN+LEFT*3.5) - orthonormal.add_background_rectangle() - v1 = TextMobject(r"$v_1$") - v1.scale(0.75) - v1.set_color(X_COLOR) - v1.move_to(0.75*UP+RIGHT) - v1.add_background_rectangle() - v2 = TextMobject(r"$v_2$") - v2.scale(0.75) - v2.set_color(Y_COLOR) - v2.move_to(0.75*UP+LEFT*1.25) - v2.add_background_rectangle() - self.play(Write(orthonormal)) - self.play(Write(v1),Write(v2)) - self.wait() - self.play(FadeOut(orthonormal), FadeOut(v1), FadeOut(v2)) - - arrow = Arrow(start = ORIGIN,end = 3*RIGHT+UP) - arrow.scale(1.2) - arrow.set_color(BLUE) - arrow.apply_matrix(matrix) - text3 = TextMobject("v") - text3.move_to(3.2*UP+1.2*RIGHT) - text3.add_background_rectangle() - self.play(ShowCreation(arrow),Write(text3)) - self.wait() - v_cor = TextMobject("(1,3)") - v_cor.move_to(3.2*UP+1.3*RIGHT) - v_cor.set_color(BLUE) - v_cor.scale(0.75) - v_cor.add_background_rectangle() - self.play(Transform(text3,v_cor)) - - line1 = DashedLine(start = 1*UP+3*RIGHT, end = 3*RIGHT) - line2 = DashedLine(start = 1*UP+3*RIGHT, end = UP) - line1.apply_matrix(matrix) - line2.apply_matrix(matrix) - self.play(ShowCreation(line1),ShowCreation(line2),run_time = 2) - - v1 = Arrow(start = ORIGIN,end = 3*RIGHT+UP) - v1.scale(1.2) - v1.set_color(BLUE) - v1.apply_matrix(matrix) - arrow1 = Arrow(start = ORIGIN,end = 3*RIGHT) - arrow1.scale(1.2) - arrow1.set_color("#6B8E23") - arrow1.apply_matrix(matrix) - self.play(Transform(v1,arrow1)) - v1_cor = TextMobject(r"$ v_1$") - v1_cor.move_to(2.5*UP+3*RIGHT) - v1_cor.scale(0.75) - v1_cor.add_background_rectangle() - self.play(Write(v1_cor)) - self.wait(0.5) - text1 = TextMobject(r"(1.8,2.4)") - text1.move_to(2.1*UP+2.5*RIGHT) - text1.scale(0.75) - text1.set_color("#6B8E23") - text1.add_background_rectangle() - self.play(Transform(v1_cor,text1)) - - v2 = Arrow(start = ORIGIN,end = 3*RIGHT+UP) - v2.scale(1.2) - v2.set_color("#8b0000") - v2.apply_matrix(matrix) - arrow2 = Arrow(start = ORIGIN,end = UP) - arrow2.scale(2.1) - arrow2.set_color("#8b0000") - arrow2.apply_matrix(matrix) - self.wait(0.5) - self.play(Transform(v2,arrow2)) - self.wait(0.5) - v2_cor = TextMobject(r"$ v_2$") - v2_cor.move_to(0.75*UP+2.5*LEFT) - v2_cor.scale(0.75) - v2_cor.add_background_rectangle() - self.play(Write(v2_cor)) - self.wait(0.5) - text2 = TextMobject(r"(-0.8,0.6)") - text2.move_to(0.75*UP+1.75*LEFT) - text2.scale(0.75) - text2.set_color("#8b0000") - text2.add_background_rectangle() - self.play(Transform(v2_cor,text2)) - - self.wait() - - self.play(ApplyMethod(v2.move_to,1.4*RIGHT+2.7*UP),FadeOut(v1_cor),FadeOut(v2_cor),FadeOut(v_cor)) - - self.wait() - - ending = TextMobject(r"$v = v_1 + v_2$") - ending.scale(0.7) - ending.move_to(DOWN) - ending.add_background_rectangle() - self.play(Write(ending)) - self.wait() - self.play(FadeOut(ending)) - - ending = TextMobject(r"$\left[ \begin{array} {c} 1\\ 3 \end{array}\right] = \left[ \begin{array} {c}1.8 \\ 2.4 \end{array}\right] + \left[ \begin{array} {c} -0.8\\ 0.6 \end{array}\right]$") - ending.scale(0.7) - ending.move_to(DOWN) - ending.add_background_rectangle() - self.play(Write(ending)) - self.wait() - self.play(FadeOut(ending)) - - ending = TextMobject(r"$v$ is the sum of projections on the orthonormal vectors") - ending.scale(0.7) - ending.move_to(DOWN) - ending.add_background_rectangle() - self.play(Write(ending)) - self.wait() - self.play(FadeOut(ending)) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/Orthonormal Basis/file3_sum_of_projections_part2.py b/FSF-2020/linear-algebra/linear-transformations/Orthonormal Basis/file3_sum_of_projections_part2.py deleted file mode 100644 index 9d25192..0000000 --- a/FSF-2020/linear-algebra/linear-transformations/Orthonormal Basis/file3_sum_of_projections_part2.py +++ /dev/null @@ -1,173 +0,0 @@ -from manimlib.imports import * -class ThreeDExplanation(ThreeDScene): - - def construct(self): - - text = TextMobject("Let us consider the example discussed above again. These are the things we know:-") - text.scale(0.75) - self.add_fixed_in_frame_mobjects(text) - text.move_to(3*UP) - self.play(Write(text)) - self.wait(2) - basis = TextMobject(r"Set of Orthonormal Basis - $\left(\begin{array}{c}\frac{1}{\sqrt{2}}\\\frac{1}{\sqrt{2}}\\0\end{array}\right),\left(\begin{array}{c}\frac{-1}{\sqrt{2}}\\\frac{1}{\sqrt{2}}\\0\end{array}\right),\left(\begin{array}{c}0\\0\\1\end{array}\right)$") - basis.scale(0.75) - basis.move_to(UP*1.5) - self.play(Write(basis)) - v = TextMobject(r"$v_1$",r"$v_2$",r"$v_3$") - v[0].move_to(UP*0.5+RIGHT*0.75) - v[1].move_to(UP*0.5+RIGHT*2.5) - v[2].move_to(UP*0.5+RIGHT*4) - eq = TextMobject(r"$v = \left(\begin{array}{c}3\\4\\5\end{array}\right)$") - eq1 = TextMobject(r"$ = \frac{3}{\sqrt{2}} + \frac{4}{\sqrt{2}} + 0 = \frac{7}{\sqrt{2}}$") - eq2 = TextMobject(r"$ = \frac{-3}{\sqrt{2}} + \frac{4}{\sqrt{2}} + 0 =\frac{1}{\sqrt{2}}$") - eq3 = TextMobject(r"$ =  0 + 0 + 5 =5$") - eq.move_to(4*LEFT+DOWN) - eq1.move_to(0.5*DOWN+2*RIGHT) - eq2.move_to(1.5*DOWN+2*RIGHT) - eq3.move_to(2.5*DOWN+2*RIGHT) - self.play(Write(v)) - self.play(Write(eq)) - self.play(Write(eq1)) - self.play(Write(eq2)) - self.play(Write(eq3)) - self.wait() - self.play(FadeOut(text), FadeOut(basis), FadeOut(eq), FadeOut(v), FadeOut(eq1), FadeOut(eq2), FadeOut(eq3)) - self.wait() - - text = TextMobject("These are the 3 mutually orthonormal basis of the set(", r"$v_1$, ", r"$v_2$, ", r"$v_3$",")") - text[1].set_color(DARK_BLUE) - text[2].set_color(RED) - text[3].set_color(YELLOW) - text.scale(0.75) - self.add_fixed_in_frame_mobjects(text) - text.move_to(3*DOWN) - self.play(Write(text)) - self.wait() - - axes = ThreeDAxes(x_min = -9,x_max=9,y_min=-9,y_max=9,z_min=-9,z_max=9) - self.play(ShowCreation(axes)) - self.move_camera(distance = 100, phi=30*DEGREES,theta=45*DEGREES,run_time=3) - self.begin_ambient_camera_rotation(rate=0.3) - - dashedline1 = DashedLine(start = -12*(UP+RIGHT), end = 12*(UP+RIGHT)) - dashedline2 = DashedLine(start = -12*(UP+LEFT), end = 12*(UP+LEFT)) - dashedline3 = DashedLine(start = 4*UP+3*RIGHT+[0,0,5], end = 3.5*UP+3.5*RIGHT) - dashedline4 = DashedLine(start = 4*UP+3*RIGHT+[0,0,5], end = 0.5*UP+0.5*LEFT) - dashedline5 = DashedLine(start = 4*UP+3*RIGHT+[0,0,5], end = [0,0,5]) - - self.play(ShowCreation(dashedline1), ShowCreation(dashedline2)) - - line1 = Line(start = ORIGIN,end = 0.707*RIGHT + 0.707*UP) - line1.set_color(DARK_BLUE) - tip1 = Polygon(0.707*RIGHT + 0.707*UP, 0.707*RIGHT + 0.607*UP, 0.607*RIGHT + 0.707*UP) - tip1.set_opacity(1) - tip1.set_fill(DARK_BLUE) - tip1.set_color(DARK_BLUE) - self.play(ShowCreation(line1), ShowCreation(tip1)) - - line2 = Line(start = ORIGIN,end = 0.707*LEFT + 0.707*UP) - line2.set_color(RED) - tip2 = Polygon(0.707*LEFT + 0.707*UP, 0.707*LEFT + 0.607*UP, 0.607*LEFT + 0.707*UP) - tip2.set_opacity(1) - tip2.set_fill(RED) - tip2.set_color(RED) - - self.play(ShowCreation(line2), ShowCreation(tip2)) - - line3 = Line(start = ORIGIN,end = [0,0,1]) - line3.set_color(YELLOW) - tip3 = Polygon([0,0,1],[0,0,0.8]-0.2*RIGHT,[0,0,0.8]-0.2*LEFT) - tip3.set_opacity(1) - tip3.set_fill(YELLOW) - tip3.set_color(YELLOW) - self.play(ShowCreation(line3), ShowCreation(tip3)) - self.wait() - - self.play(FadeOut(text)) - - text = TextMobject("Take the projection of ", r"$v$", " on the mutually orthonormal vectors") - text[1].set_color(GOLD_E) - text.scale(0.75) - self.add_fixed_in_frame_mobjects(text) - text.move_to(3*DOWN) - self.play(Write(text)) - self.wait(2) - - a_line = Line(start = ORIGIN,end = 4*UP+3*RIGHT+[0,0,5]) - a_line.set_color(GOLD_E) - a_tip = Polygon(4*UP+3*RIGHT+[0,0,5],3.6*UP+2.7*RIGHT+[0,0,4.5]+0.1*UP+0.1*LEFT,3.6*UP+2.7*RIGHT+[0,0,4.5]+0.1*DOWN+0.1*RIGHT) - a_tip.set_opacity(1) - a_tip.set_fill(GOLD_E) - a_tip.set_color(GOLD_E) - - self.play(ShowCreation(a_line), ShowCreation(a_tip)) - self.wait(9) - self.play(ShowCreation(dashedline3),ShowCreation(dashedline4),ShowCreation(dashedline5)) - self.wait(6) - - pv1 = Line(start = ORIGIN,end = 4*UP+3*RIGHT+[0,0,5]) - pv1.set_color(GOLD_E) - pv1tip = Polygon(4*UP+3*RIGHT+[0,0,5],3.6*UP+2.7*RIGHT+[0,0,4.5]+0.1*UP+0.1*LEFT,3.6*UP+2.7*RIGHT+[0,0,4.5]+0.1*DOWN+0.1*RIGHT) - pv1tip.set_opacity(1) - pv1tip.set_fill(GOLD_E) - pv1tip.set_color(GOLD_E) - - v1_p = Line(start = ORIGIN,end = 3.5*RIGHT + 3.5*UP) - v1_p.set_color(BLUE_E) - v1_p_tip = Polygon(3.5*RIGHT + 3.5*UP, 3.5*RIGHT + 3.4*UP, 3.4*RIGHT + 3.5*UP) - v1_p_tip.set_opacity(1) - v1_p_tip.set_fill(BLUE_E) - v1_p_tip.set_color(BLUE_E) - - pv2 = Line(start = ORIGIN,end = 4*UP+3*RIGHT+[0,0,5]) - pv2.set_color(GOLD_E) - pv2tip = Polygon(4*UP+3*RIGHT+[0,0,5],3.6*UP+2.7*RIGHT+[0,0,4.5]+0.1*UP+0.1*LEFT,3.6*UP+2.7*RIGHT+[0,0,4.5]+0.1*DOWN+0.1*RIGHT) - pv2tip.set_opacity(1) - pv2tip.set_fill(GOLD_E) - pv2tip.set_color(GOLD_E) - - v2_p = Line(start = ORIGIN,end = 0.5*LEFT + 0.5*UP) - v2_p.set_color(RED_E) - v2_p_tip = Polygon(0.5*LEFT + 0.5*UP, 0.5*LEFT + 0.4*UP, 0.4*LEFT + 0.5*UP) - v2_p_tip.set_opacity(1) - v2_p_tip.set_fill(RED_E) - v2_p_tip.set_color(RED_E) - - pv3 = Line(start = ORIGIN,end = 4*UP+3*RIGHT+[0,0,5]) - pv3.set_color(GOLD_E) - pv3tip = Polygon(4*UP+3*RIGHT+[0,0,5],3.6*UP+2.7*RIGHT+[0,0,4.5]+0.1*UP+0.1*LEFT,3.6*UP+2.7*RIGHT+[0,0,4.5]+0.1*DOWN+0.1*RIGHT) - pv3tip.set_opacity(1) - pv3tip.set_fill(GOLD_E) - pv3tip.set_color(GOLD_E) - - v3_p = Line(start = ORIGIN,end = [0,0,5]) - v3_p.set_color(YELLOW_E) - v3_p_tip = Polygon([0,0,5],[0,0,4.8]+0.2*RIGHT,[0,0,4.8]+0.2*LEFT) - v3_p_tip.set_opacity(1) - v3_p_tip.set_fill(YELLOW_E) - v3_p_tip.set_color(YELLOW_E) - - self.stop_ambient_camera_rotation() - self.play(Transform(pv1,v1_p), Transform(pv1tip,v1_p_tip), Transform(pv2,v2_p), Transform(pv2tip,v2_p_tip), Transform(pv3,v3_p), Transform(pv3tip,v3_p_tip)) - self.play(FadeOut(dashedline1), - FadeOut(dashedline2), - FadeOut(dashedline3), - FadeOut(dashedline4), - FadeOut(dashedline5), - FadeOut(line1), - FadeOut(tip1), - FadeOut(line2), - FadeOut(tip2), - FadeOut(line3), - FadeOut(tip3), - FadeOut(text)) - - text = TextMobject(r"$v$ is the sum of projections on the orthonormal vectors") - text.set_color(GOLD_E) - text.scale(0.75) - self.add_fixed_in_frame_mobjects(text) - text.move_to(3*DOWN) - self.play(Write(text), ApplyMethod(pv2.move_to,(3.5*RIGHT + 3.5*UP+3*RIGHT+4*UP)/2), ApplyMethod(pv2tip.move_to,(3.1*RIGHT + 3.9*UP))) - self.play(ApplyMethod(pv3.move_to,3*RIGHT + 4*UP + [0,0,2.5]), ApplyMethod(pv3tip.move_to,(3*RIGHT + 4*UP + [0,0,4.8]))) - - self.wait(3) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/README.md b/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/README.md new file mode 100644 index 0000000..c286736 --- /dev/null +++ b/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/README.md @@ -0,0 +1,30 @@ +# Contributer: Archit Sangal +My Github Account : architsangal +

+ +## Sub-Topics Covered: ++ Linear Transformations (Linear Maps) + +#### Video 1: Visually understanding linear transformation(using grid) +![GIF1](file12.gif) + +#### Video 2: Linear Transformation when form 1 is given +![GIF2](file11.gif) + +#### Video 3: Matrix Representation Of Linear Transformation +![GIF3](file9.gif) + +#### Video 4: Understand Linear Transformations visually +![GIF4](file13.gif) + +#### Video 5: Uniform Scaling +![GIF5](file14.gif) + +#### Fig.1 Horizontal Shear +![GIF6](file6_Horizontal_Shear_gif.gif) + +#### Fig.2 Vertical Shear +![GIF7](file7_Vertical_Shear_gif.gif) + +#### Video 6: Rotation by an angle of in anticlockwise direction +![GIF8](file10.gif) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file1_orthogonal.py b/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file1_orthogonal.py new file mode 100755 index 0000000..a5d96f5 --- /dev/null +++ b/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file1_orthogonal.py @@ -0,0 +1,40 @@ +from manimlib.imports import * + +class Orthogonal(ThreeDScene): + def construct(self): + axes = ThreeDAxes() + self.play(ShowCreation(axes)) + self.move_camera(phi=60*DEGREES,theta=45*DEGREES,run_time=3) + + text = TextMobject(r"$\hat{i}$",r"$\hat{j}$",r"$\hat{k}$") + text[0].move_to(0.7*DOWN+0.8*LEFT) + text[1].move_to(0.75*DOWN+0.7*RIGHT) + text[2].move_to(0.75*UP+0.4*RIGHT) + self.add_fixed_in_frame_mobjects(text) + self.play(Write(text)) + + line1 = Line(start = ORIGIN,end = RIGHT) + line1.set_color(DARK_BLUE) + tip1 = Polygon(-0.95*LEFT,-0.8*LEFT-0.1*DOWN,-0.8*LEFT-0.1*UP) + tip1.set_opacity(1) + tip1.set_fill(DARK_BLUE) + tip1.set_color(DARK_BLUE) + + arrow2 = Line(start = ORIGIN,end = UP) + arrow2.set_color(DARK_BLUE) + tip2 = Polygon(0.95*UP,0.8*UP-0.1*RIGHT,0.8*UP-0.1*LEFT) + tip2.set_opacity(1) + tip2.set_fill(DARK_BLUE) + tip2.set_color(DARK_BLUE) + arrow2.set_color(DARK_BLUE) + + arrow3 = Line(start = ORIGIN,end = [0,0,1]) + arrow3.set_color(DARK_BLUE) + tip3 = Polygon([0,0,0.95],[0,0,0.8]-0.1*RIGHT,[0,0,0.8]-0.1*LEFT) + tip3.set_opacity(1) + tip3.set_fill(DARK_BLUE) + tip3.set_color(DARK_BLUE) + + self.play(ShowCreation(line1), ShowCreation(tip1), ShowCreation(arrow2), ShowCreation(tip2), ShowCreation(arrow3), ShowCreation(tip3)) + + self.wait() diff --git a/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file2_sum_of_projections_part1.py b/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file2_sum_of_projections_part1.py new file mode 100755 index 0000000..81a0888 --- /dev/null +++ b/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file2_sum_of_projections_part1.py @@ -0,0 +1,133 @@ +from manimlib.imports import * +class LinearTrans(LinearTransformationScene): + CONFIG = { + "show_basis_vectors": True, + "basis_vector_stroke_width": 1, + "leave_ghost_vectors": False, + "show_coordinates": True, + } + + def construct(self): + + self.setup() + + matrix = [[0.6,-0.8],[0.8,0.6]] + self.apply_matrix(matrix) + + self.wait(2) + orthonormal = TextMobject(r"These are 2 orthonormal vectors($v_1$ and $v_2$)") + orthonormal.scale(0.7) + orthonormal.move_to(DOWN+LEFT*3.5) + orthonormal.add_background_rectangle() + v1 = TextMobject(r"$v_1$") + v1.scale(0.75) + v1.set_color(X_COLOR) + v1.move_to(0.75*UP+RIGHT) + v1.add_background_rectangle() + v2 = TextMobject(r"$v_2$") + v2.scale(0.75) + v2.set_color(Y_COLOR) + v2.move_to(0.75*UP+LEFT*1.25) + v2.add_background_rectangle() + self.play(Write(orthonormal)) + self.play(Write(v1),Write(v2)) + self.wait() + self.play(FadeOut(orthonormal), FadeOut(v1), FadeOut(v2)) + + arrow = Arrow(start = ORIGIN,end = 3*RIGHT+UP) + arrow.scale(1.2) + arrow.set_color(BLUE) + arrow.apply_matrix(matrix) + text3 = TextMobject("v") + text3.move_to(3.2*UP+1.2*RIGHT) + text3.add_background_rectangle() + self.play(ShowCreation(arrow),Write(text3)) + self.wait() + v_cor = TextMobject("(1,3)") + v_cor.move_to(3.2*UP+1.3*RIGHT) + v_cor.set_color(BLUE) + v_cor.scale(0.75) + v_cor.add_background_rectangle() + self.play(Transform(text3,v_cor)) + + line1 = DashedLine(start = 1*UP+3*RIGHT, end = 3*RIGHT) + line2 = DashedLine(start = 1*UP+3*RIGHT, end = UP) + line1.apply_matrix(matrix) + line2.apply_matrix(matrix) + self.play(ShowCreation(line1),ShowCreation(line2),run_time = 2) + + v1 = Arrow(start = ORIGIN,end = 3*RIGHT+UP) + v1.scale(1.2) + v1.set_color(BLUE) + v1.apply_matrix(matrix) + arrow1 = Arrow(start = ORIGIN,end = 3*RIGHT) + arrow1.scale(1.2) + arrow1.set_color("#6B8E23") + arrow1.apply_matrix(matrix) + self.play(Transform(v1,arrow1)) + v1_cor = TextMobject(r"$ v_1$") + v1_cor.move_to(2.5*UP+3*RIGHT) + v1_cor.scale(0.75) + v1_cor.add_background_rectangle() + self.play(Write(v1_cor)) + self.wait(0.5) + text1 = TextMobject(r"(1.8,2.4)") + text1.move_to(2.1*UP+2.5*RIGHT) + text1.scale(0.75) + text1.set_color("#6B8E23") + text1.add_background_rectangle() + self.play(Transform(v1_cor,text1)) + + v2 = Arrow(start = ORIGIN,end = 3*RIGHT+UP) + v2.scale(1.2) + v2.set_color("#8b0000") + v2.apply_matrix(matrix) + arrow2 = Arrow(start = ORIGIN,end = UP) + arrow2.scale(2.1) + arrow2.set_color("#8b0000") + arrow2.apply_matrix(matrix) + self.wait(0.5) + self.play(Transform(v2,arrow2)) + self.wait(0.5) + v2_cor = TextMobject(r"$ v_2$") + v2_cor.move_to(0.75*UP+2.5*LEFT) + v2_cor.scale(0.75) + v2_cor.add_background_rectangle() + self.play(Write(v2_cor)) + self.wait(0.5) + text2 = TextMobject(r"(-0.8,0.6)") + text2.move_to(0.75*UP+1.75*LEFT) + text2.scale(0.75) + text2.set_color("#8b0000") + text2.add_background_rectangle() + self.play(Transform(v2_cor,text2)) + + self.wait() + + self.play(ApplyMethod(v2.move_to,1.4*RIGHT+2.7*UP),FadeOut(v1_cor),FadeOut(v2_cor),FadeOut(v_cor)) + + self.wait() + + ending = TextMobject(r"$v = v_1 + v_2$") + ending.scale(0.7) + ending.move_to(DOWN) + ending.add_background_rectangle() + self.play(Write(ending)) + self.wait() + self.play(FadeOut(ending)) + + ending = TextMobject(r"$\left[ \begin{array} {c} 1\\ 3 \end{array}\right] = \left[ \begin{array} {c}1.8 \\ 2.4 \end{array}\right] + \left[ \begin{array} {c} -0.8\\ 0.6 \end{array}\right]$") + ending.scale(0.7) + ending.move_to(DOWN) + ending.add_background_rectangle() + self.play(Write(ending)) + self.wait() + self.play(FadeOut(ending)) + + ending = TextMobject(r"$v$ is the sum of projections on the orthonormal vectors") + ending.scale(0.7) + ending.move_to(DOWN) + ending.add_background_rectangle() + self.play(Write(ending)) + self.wait() + self.play(FadeOut(ending)) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file3_sum_of_projections_part2.py b/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file3_sum_of_projections_part2.py new file mode 100644 index 0000000..9d25192 --- /dev/null +++ b/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file3_sum_of_projections_part2.py @@ -0,0 +1,173 @@ +from manimlib.imports import * +class ThreeDExplanation(ThreeDScene): + + def construct(self): + + text = TextMobject("Let us consider the example discussed above again. These are the things we know:-") + text.scale(0.75) + self.add_fixed_in_frame_mobjects(text) + text.move_to(3*UP) + self.play(Write(text)) + self.wait(2) + basis = TextMobject(r"Set of Orthonormal Basis - $\left(\begin{array}{c}\frac{1}{\sqrt{2}}\\\frac{1}{\sqrt{2}}\\0\end{array}\right),\left(\begin{array}{c}\frac{-1}{\sqrt{2}}\\\frac{1}{\sqrt{2}}\\0\end{array}\right),\left(\begin{array}{c}0\\0\\1\end{array}\right)$") + basis.scale(0.75) + basis.move_to(UP*1.5) + self.play(Write(basis)) + v = TextMobject(r"$v_1$",r"$v_2$",r"$v_3$") + v[0].move_to(UP*0.5+RIGHT*0.75) + v[1].move_to(UP*0.5+RIGHT*2.5) + v[2].move_to(UP*0.5+RIGHT*4) + eq = TextMobject(r"$v = \left(\begin{array}{c}3\\4\\5\end{array}\right)$") + eq1 = TextMobject(r"$ = \frac{3}{\sqrt{2}} + \frac{4}{\sqrt{2}} + 0 = \frac{7}{\sqrt{2}}$") + eq2 = TextMobject(r"$ = \frac{-3}{\sqrt{2}} + \frac{4}{\sqrt{2}} + 0 =\frac{1}{\sqrt{2}}$") + eq3 = TextMobject(r"$ =  0 + 0 + 5 =5$") + eq.move_to(4*LEFT+DOWN) + eq1.move_to(0.5*DOWN+2*RIGHT) + eq2.move_to(1.5*DOWN+2*RIGHT) + eq3.move_to(2.5*DOWN+2*RIGHT) + self.play(Write(v)) + self.play(Write(eq)) + self.play(Write(eq1)) + self.play(Write(eq2)) + self.play(Write(eq3)) + self.wait() + self.play(FadeOut(text), FadeOut(basis), FadeOut(eq), FadeOut(v), FadeOut(eq1), FadeOut(eq2), FadeOut(eq3)) + self.wait() + + text = TextMobject("These are the 3 mutually orthonormal basis of the set(", r"$v_1$, ", r"$v_2$, ", r"$v_3$",")") + text[1].set_color(DARK_BLUE) + text[2].set_color(RED) + text[3].set_color(YELLOW) + text.scale(0.75) + self.add_fixed_in_frame_mobjects(text) + text.move_to(3*DOWN) + self.play(Write(text)) + self.wait() + + axes = ThreeDAxes(x_min = -9,x_max=9,y_min=-9,y_max=9,z_min=-9,z_max=9) + self.play(ShowCreation(axes)) + self.move_camera(distance = 100, phi=30*DEGREES,theta=45*DEGREES,run_time=3) + self.begin_ambient_camera_rotation(rate=0.3) + + dashedline1 = DashedLine(start = -12*(UP+RIGHT), end = 12*(UP+RIGHT)) + dashedline2 = DashedLine(start = -12*(UP+LEFT), end = 12*(UP+LEFT)) + dashedline3 = DashedLine(start = 4*UP+3*RIGHT+[0,0,5], end = 3.5*UP+3.5*RIGHT) + dashedline4 = DashedLine(start = 4*UP+3*RIGHT+[0,0,5], end = 0.5*UP+0.5*LEFT) + dashedline5 = DashedLine(start = 4*UP+3*RIGHT+[0,0,5], end = [0,0,5]) + + self.play(ShowCreation(dashedline1), ShowCreation(dashedline2)) + + line1 = Line(start = ORIGIN,end = 0.707*RIGHT + 0.707*UP) + line1.set_color(DARK_BLUE) + tip1 = Polygon(0.707*RIGHT + 0.707*UP, 0.707*RIGHT + 0.607*UP, 0.607*RIGHT + 0.707*UP) + tip1.set_opacity(1) + tip1.set_fill(DARK_BLUE) + tip1.set_color(DARK_BLUE) + self.play(ShowCreation(line1), ShowCreation(tip1)) + + line2 = Line(start = ORIGIN,end = 0.707*LEFT + 0.707*UP) + line2.set_color(RED) + tip2 = Polygon(0.707*LEFT + 0.707*UP, 0.707*LEFT + 0.607*UP, 0.607*LEFT + 0.707*UP) + tip2.set_opacity(1) + tip2.set_fill(RED) + tip2.set_color(RED) + + self.play(ShowCreation(line2), ShowCreation(tip2)) + + line3 = Line(start = ORIGIN,end = [0,0,1]) + line3.set_color(YELLOW) + tip3 = Polygon([0,0,1],[0,0,0.8]-0.2*RIGHT,[0,0,0.8]-0.2*LEFT) + tip3.set_opacity(1) + tip3.set_fill(YELLOW) + tip3.set_color(YELLOW) + self.play(ShowCreation(line3), ShowCreation(tip3)) + self.wait() + + self.play(FadeOut(text)) + + text = TextMobject("Take the projection of ", r"$v$", " on the mutually orthonormal vectors") + text[1].set_color(GOLD_E) + text.scale(0.75) + self.add_fixed_in_frame_mobjects(text) + text.move_to(3*DOWN) + self.play(Write(text)) + self.wait(2) + + a_line = Line(start = ORIGIN,end = 4*UP+3*RIGHT+[0,0,5]) + a_line.set_color(GOLD_E) + a_tip = Polygon(4*UP+3*RIGHT+[0,0,5],3.6*UP+2.7*RIGHT+[0,0,4.5]+0.1*UP+0.1*LEFT,3.6*UP+2.7*RIGHT+[0,0,4.5]+0.1*DOWN+0.1*RIGHT) + a_tip.set_opacity(1) + a_tip.set_fill(GOLD_E) + a_tip.set_color(GOLD_E) + + self.play(ShowCreation(a_line), ShowCreation(a_tip)) + self.wait(9) + self.play(ShowCreation(dashedline3),ShowCreation(dashedline4),ShowCreation(dashedline5)) + self.wait(6) + + pv1 = Line(start = ORIGIN,end = 4*UP+3*RIGHT+[0,0,5]) + pv1.set_color(GOLD_E) + pv1tip = Polygon(4*UP+3*RIGHT+[0,0,5],3.6*UP+2.7*RIGHT+[0,0,4.5]+0.1*UP+0.1*LEFT,3.6*UP+2.7*RIGHT+[0,0,4.5]+0.1*DOWN+0.1*RIGHT) + pv1tip.set_opacity(1) + pv1tip.set_fill(GOLD_E) + pv1tip.set_color(GOLD_E) + + v1_p = Line(start = ORIGIN,end = 3.5*RIGHT + 3.5*UP) + v1_p.set_color(BLUE_E) + v1_p_tip = Polygon(3.5*RIGHT + 3.5*UP, 3.5*RIGHT + 3.4*UP, 3.4*RIGHT + 3.5*UP) + v1_p_tip.set_opacity(1) + v1_p_tip.set_fill(BLUE_E) + v1_p_tip.set_color(BLUE_E) + + pv2 = Line(start = ORIGIN,end = 4*UP+3*RIGHT+[0,0,5]) + pv2.set_color(GOLD_E) + pv2tip = Polygon(4*UP+3*RIGHT+[0,0,5],3.6*UP+2.7*RIGHT+[0,0,4.5]+0.1*UP+0.1*LEFT,3.6*UP+2.7*RIGHT+[0,0,4.5]+0.1*DOWN+0.1*RIGHT) + pv2tip.set_opacity(1) + pv2tip.set_fill(GOLD_E) + pv2tip.set_color(GOLD_E) + + v2_p = Line(start = ORIGIN,end = 0.5*LEFT + 0.5*UP) + v2_p.set_color(RED_E) + v2_p_tip = Polygon(0.5*LEFT + 0.5*UP, 0.5*LEFT + 0.4*UP, 0.4*LEFT + 0.5*UP) + v2_p_tip.set_opacity(1) + v2_p_tip.set_fill(RED_E) + v2_p_tip.set_color(RED_E) + + pv3 = Line(start = ORIGIN,end = 4*UP+3*RIGHT+[0,0,5]) + pv3.set_color(GOLD_E) + pv3tip = Polygon(4*UP+3*RIGHT+[0,0,5],3.6*UP+2.7*RIGHT+[0,0,4.5]+0.1*UP+0.1*LEFT,3.6*UP+2.7*RIGHT+[0,0,4.5]+0.1*DOWN+0.1*RIGHT) + pv3tip.set_opacity(1) + pv3tip.set_fill(GOLD_E) + pv3tip.set_color(GOLD_E) + + v3_p = Line(start = ORIGIN,end = [0,0,5]) + v3_p.set_color(YELLOW_E) + v3_p_tip = Polygon([0,0,5],[0,0,4.8]+0.2*RIGHT,[0,0,4.8]+0.2*LEFT) + v3_p_tip.set_opacity(1) + v3_p_tip.set_fill(YELLOW_E) + v3_p_tip.set_color(YELLOW_E) + + self.stop_ambient_camera_rotation() + self.play(Transform(pv1,v1_p), Transform(pv1tip,v1_p_tip), Transform(pv2,v2_p), Transform(pv2tip,v2_p_tip), Transform(pv3,v3_p), Transform(pv3tip,v3_p_tip)) + self.play(FadeOut(dashedline1), + FadeOut(dashedline2), + FadeOut(dashedline3), + FadeOut(dashedline4), + FadeOut(dashedline5), + FadeOut(line1), + FadeOut(tip1), + FadeOut(line2), + FadeOut(tip2), + FadeOut(line3), + FadeOut(tip3), + FadeOut(text)) + + text = TextMobject(r"$v$ is the sum of projections on the orthonormal vectors") + text.set_color(GOLD_E) + text.scale(0.75) + self.add_fixed_in_frame_mobjects(text) + text.move_to(3*DOWN) + self.play(Write(text), ApplyMethod(pv2.move_to,(3.5*RIGHT + 3.5*UP+3*RIGHT+4*UP)/2), ApplyMethod(pv2tip.move_to,(3.1*RIGHT + 3.9*UP))) + self.play(ApplyMethod(pv3.move_to,3*RIGHT + 4*UP + [0,0,2.5]), ApplyMethod(pv3tip.move_to,(3*RIGHT + 4*UP + [0,0,4.8]))) + + self.wait(3) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/README.md b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/README.md new file mode 100644 index 0000000..c286736 --- /dev/null +++ b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/README.md @@ -0,0 +1,30 @@ +# Contributer: Archit Sangal +My Github Account : architsangal +

+ +## Sub-Topics Covered: ++ Linear Transformations (Linear Maps) + +#### Video 1: Visually understanding linear transformation(using grid) +![GIF1](file12.gif) + +#### Video 2: Linear Transformation when form 1 is given +![GIF2](file11.gif) + +#### Video 3: Matrix Representation Of Linear Transformation +![GIF3](file9.gif) + +#### Video 4: Understand Linear Transformations visually +![GIF4](file13.gif) + +#### Video 5: Uniform Scaling +![GIF5](file14.gif) + +#### Fig.1 Horizontal Shear +![GIF6](file6_Horizontal_Shear_gif.gif) + +#### Fig.2 Vertical Shear +![GIF7](file7_Vertical_Shear_gif.gif) + +#### Video 6: Rotation by an angle of in anticlockwise direction +![GIF8](file10.gif) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Rank-Nullity-Theorem/README.md b/FSF-2020/linear-algebra/linear-transformations/The-Rank-Nullity-Theorem/README.md new file mode 100644 index 0000000..c286736 --- /dev/null +++ b/FSF-2020/linear-algebra/linear-transformations/The-Rank-Nullity-Theorem/README.md @@ -0,0 +1,30 @@ +# Contributer: Archit Sangal +My Github Account : architsangal +

+ +## Sub-Topics Covered: ++ Linear Transformations (Linear Maps) + +#### Video 1: Visually understanding linear transformation(using grid) +![GIF1](file12.gif) + +#### Video 2: Linear Transformation when form 1 is given +![GIF2](file11.gif) + +#### Video 3: Matrix Representation Of Linear Transformation +![GIF3](file9.gif) + +#### Video 4: Understand Linear Transformations visually +![GIF4](file13.gif) + +#### Video 5: Uniform Scaling +![GIF5](file14.gif) + +#### Fig.1 Horizontal Shear +![GIF6](file6_Horizontal_Shear_gif.gif) + +#### Fig.2 Vertical Shear +![GIF7](file7_Vertical_Shear_gif.gif) + +#### Video 6: Rotation by an angle of in anticlockwise direction +![GIF8](file10.gif) \ No newline at end of file -- cgit From cb8944b427c93bff78b9b4d4b172613135726ee1 Mon Sep 17 00:00:00 2001 From: Archit Sangal Date: Thu, 9 Jul 2020 03:11:35 +0530 Subject: updated folder name and README.md files --- .../Orthonormal-Basis/README.md | 29 +++++---------------- .../Orthonormal-Basis/file4.gif | Bin 0 -> 1733367 bytes .../Orthonormal-Basis/file5.gif | Bin 0 -> 43092116 bytes .../Orthonormal-Basis/file6.gif | Bin 0 -> 37493895 bytes 4 files changed, 7 insertions(+), 22 deletions(-) create mode 100644 FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file4.gif create mode 100644 FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file5.gif create mode 100644 FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file6.gif (limited to 'FSF-2020') diff --git a/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/README.md b/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/README.md index c286736..55aba66 100644 --- a/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/README.md +++ b/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/README.md @@ -3,28 +3,13 @@ My Github Account : architsangal

## Sub-Topics Covered: -+ Linear Transformations (Linear Maps) ++ Orthonormal Bases -#### Video 1: Visually understanding linear transformation(using grid) -![GIF1](file12.gif) +#### Video 1: Example of Orthonormal bases +![GIF1](file4.gif) -#### Video 2: Linear Transformation when form 1 is given -![GIF2](file11.gif) +#### Video 2: Adding the projections of a vector on orthonormal basis will produce the same vector +![GIF2](file5.gif) -#### Video 3: Matrix Representation Of Linear Transformation -![GIF3](file9.gif) - -#### Video 4: Understand Linear Transformations visually -![GIF4](file13.gif) - -#### Video 5: Uniform Scaling -![GIF5](file14.gif) - -#### Fig.1 Horizontal Shear -![GIF6](file6_Horizontal_Shear_gif.gif) - -#### Fig.2 Vertical Shear -![GIF7](file7_Vertical_Shear_gif.gif) - -#### Video 6: Rotation by an angle of in anticlockwise direction -![GIF8](file10.gif) \ No newline at end of file +#### Video 3: Relating the example and the property +![GIF3](file6.gif) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file4.gif b/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file4.gif new file mode 100644 index 0000000..4891350 Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file4.gif differ diff --git a/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file5.gif b/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file5.gif new file mode 100644 index 0000000..47fc316 Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file5.gif differ diff --git a/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file6.gif b/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file6.gif new file mode 100644 index 0000000..d4ae50c Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/Orthonormal-Basis/file6.gif differ -- cgit From d55ea3bd90b05ab4ba731d822f347bcdbea67159 Mon Sep 17 00:00:00 2001 From: Archit Sangal Date: Thu, 9 Jul 2020 03:38:00 +0530 Subject: updated README.md files and gif(s) added --- .../The-Four-Fundamental-Subspaces/README.md | 34 ++++++++++----------- .../The-Four-Fundamental-Subspaces/file11.gif | Bin 0 -> 2669469 bytes .../The-Four-Fundamental-Subspaces/file12.gif | Bin 0 -> 14917563 bytes .../The-Four-Fundamental-Subspaces/file13.gif | Bin 0 -> 4257387 bytes .../The-Four-Fundamental-Subspaces/file14.gif | Bin 0 -> 28796385 bytes .../The-Four-Fundamental-Subspaces/file15.gif | Bin 0 -> 16130920 bytes .../The-Four-Fundamental-Subspaces/file16.gif | Bin 0 -> 15623398 bytes .../The-Four-Fundamental-Subspaces/file17.gif | Bin 0 -> 15546537 bytes .../The-Rank-Nullity-Theorem/README.md | 25 ++------------- .../The-Rank-Nullity-Theorem/file2.gif | Bin 0 -> 34430418 bytes 10 files changed, 19 insertions(+), 40 deletions(-) create mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file11.gif create mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file12.gif create mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file13.gif create mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file14.gif create mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file15.gif create mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file16.gif create mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file17.gif create mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Rank-Nullity-Theorem/file2.gif (limited to 'FSF-2020') diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/README.md b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/README.md index c286736..d21c4dc 100644 --- a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/README.md +++ b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/README.md @@ -3,28 +3,28 @@ My Github Account : architsangal

## Sub-Topics Covered: -+ Linear Transformations (Linear Maps) ++ The Four Fundamental Subspaces -#### Video 1: Visually understanding linear transformation(using grid) -![GIF1](file12.gif) +#### Video 1: Video 1: Writing System of linear equations in form of Ax=b +![GIF1](file11.gif) -#### Video 2: Linear Transformation when form 1 is given -![GIF2](file11.gif) +#### Video 2: Column Space is same as the image of Linear Transformation +![GIF2](file14.gif) -#### Video 3: Matrix Representation Of Linear Transformation -![GIF3](file9.gif) +#### Video 3: Existance of Solution w.r.t. vector b +![GIF3](file17.gif) -#### Video 4: Understand Linear Transformations visually -![GIF4](file13.gif) +#### Video 4: Null Space (Visually) +![GIF4](file12.gif) -#### Video 5: Uniform Scaling -![GIF5](file14.gif) +#### Video 5: Definition 1 is equivalent to Definition 2 +![GIF5](file13.gif) -#### Fig.1 Horizontal Shear -![GIF6](file6_Horizontal_Shear_gif.gif) +#### Video 6: Relation between Row Space and Null Space +![GIF6](file16.gif) -#### Fig.2 Vertical Shear -![GIF7](file7_Vertical_Shear_gif.gif) +#### Fig. 1 Naming of the left null space +![GIF7](file10_Left_Null_Space_pSv8iio_d5Sy9qS.gif) -#### Video 6: Rotation by an angle of in anticlockwise direction -![GIF8](file10.gif) \ No newline at end of file +#### Video 7: Left Null Space(Visually) +![GIF8](file15.gif) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file11.gif b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file11.gif new file mode 100644 index 0000000..8f74202 Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file11.gif differ diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file12.gif b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file12.gif new file mode 100644 index 0000000..aa7403b Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file12.gif differ diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file13.gif b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file13.gif new file mode 100644 index 0000000..34b54c7 Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file13.gif differ diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file14.gif b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file14.gif new file mode 100644 index 0000000..b77791b Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file14.gif differ diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file15.gif b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file15.gif new file mode 100644 index 0000000..8bb24bf Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file15.gif differ diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file16.gif b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file16.gif new file mode 100644 index 0000000..87e0026 Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file16.gif differ diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file17.gif b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file17.gif new file mode 100644 index 0000000..eec819a Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file17.gif differ diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Rank-Nullity-Theorem/README.md b/FSF-2020/linear-algebra/linear-transformations/The-Rank-Nullity-Theorem/README.md index c286736..ee1a337 100644 --- a/FSF-2020/linear-algebra/linear-transformations/The-Rank-Nullity-Theorem/README.md +++ b/FSF-2020/linear-algebra/linear-transformations/The-Rank-Nullity-Theorem/README.md @@ -3,28 +3,7 @@ My Github Account : architsangal

## Sub-Topics Covered: -+ Linear Transformations (Linear Maps) ++ The Rank-Nullity Theorem #### Video 1: Visually understanding linear transformation(using grid) -![GIF1](file12.gif) - -#### Video 2: Linear Transformation when form 1 is given -![GIF2](file11.gif) - -#### Video 3: Matrix Representation Of Linear Transformation -![GIF3](file9.gif) - -#### Video 4: Understand Linear Transformations visually -![GIF4](file13.gif) - -#### Video 5: Uniform Scaling -![GIF5](file14.gif) - -#### Fig.1 Horizontal Shear -![GIF6](file6_Horizontal_Shear_gif.gif) - -#### Fig.2 Vertical Shear -![GIF7](file7_Vertical_Shear_gif.gif) - -#### Video 6: Rotation by an angle of in anticlockwise direction -![GIF8](file10.gif) \ No newline at end of file +![GIF1](file2.gif) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Rank-Nullity-Theorem/file2.gif b/FSF-2020/linear-algebra/linear-transformations/The-Rank-Nullity-Theorem/file2.gif new file mode 100644 index 0000000..46efc66 Binary files /dev/null and b/FSF-2020/linear-algebra/linear-transformations/The-Rank-Nullity-Theorem/file2.gif differ -- cgit From e21bbdde2d574b10a073b5f7788748212bd9317e Mon Sep 17 00:00:00 2001 From: vishal786-commits Date: Thu, 9 Jul 2020 08:37:20 +0530 Subject: Update and rename file1_flux_through_sphere.py to file1_flux_through_circle.py --- .../flux/file1_flux_through_circle.py | 43 +++++++++++++++++++ .../flux/file1_flux_through_sphere.py | 50 ---------------------- 2 files changed, 43 insertions(+), 50 deletions(-) create mode 100644 FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_circle.py delete mode 100644 FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_sphere.py (limited to 'FSF-2020') diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_circle.py b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_circle.py new file mode 100644 index 0000000..e418a96 --- /dev/null +++ b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_circle.py @@ -0,0 +1,43 @@ +from manimlib.imports import * +def pendulum_vector_field_func(point): + #theta, omega = point[:2] + return np.array([ + point[0], + point[1], + point[2], + ]) +class F2D(Scene): + CONFIG = { + # "func": cylinder_flow_vec or_field, + "flow_time": 5, + } + def initialize_vector_field(self): + self.vector_field = VectorField( + pendulum_vector_field_func, + ) + self.vector_field.sort(get_norm) + def construct(self): + # plane = NumberPlane(color=RED) + # plane.add(plane.get_axis_labels()) + # self.add(plane) + self.initialize_vector_field() + + field = self.vector_field + c1=Circle(radius=3,color=BLUE) + self.play(ShowCreation(field), run_time=7) + self.play(ShowCreation(c1)) + self.wait(3) + lines = StreamLines( + pendulum_vector_field_func, + virtual_time=3, + min_magnitude=0, + max_magnitude=2, + ) + self.add(AnimatedStreamLines( + lines, + line_anim_class=ShowPassingFlash + )) + self.wait(2) + phase_point = VectorizedPoint(1*UP+1*RIGHT) + self.add(move_along_vector_field(phase_point, pendulum_vector_field_func)) + self.wait(2) diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_sphere.py b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_sphere.py deleted file mode 100644 index e07715e..0000000 --- a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_sphere.py +++ /dev/null @@ -1,50 +0,0 @@ -from manimlib.imports import * -class fluxsphere(ThreeDScene): - - - def construct(self): - s = Sphere(checkerboard_colors=[BLUE_D,BLUE_D]) - s.scale(2.3) - - n = VGroup( - *[self.n(*self.func(u, v)) - for u in np.arange(0, PI, 0.4) - for v in np.arange(0, TAU, 0.8)] - ) - - - - self.move_camera(0.8 * PI / 2, -0.45 * PI) - self.play(Write(s)) - # self.play(Write(f)) - self.play(ShowCreation(n), run_time=4) - # self.add(n) - self.begin_ambient_camera_rotation(rate=0.1) - self.wait(5) - - - def func(self, u, v): - return [ - np.cos(v) * np.sin(u), - np.sin(v) * np.sin(u), - np.cos(u) - ] - - def vect(self, x, y, z): - return np.array([ - x, y, z - ]) - - def n(self, x, y, z): - vect = np.array([ - x, - y, - z - ]) - - mag = math.sqrt(vect[0] ** 2 + vect[1] ** 2 + vect[2] ** 2) - v = Vector( - (1.5/mag) * vect, - color=RED_B, - stroke_width=4).shift(2*x * RIGHT + 2*y * UP + 2*z * OUT) - return v -- cgit From 2818ff1434902ace2bfabcd00d3bb8e13608a245 Mon Sep 17 00:00:00 2001 From: vishal786-commits Date: Thu, 9 Jul 2020 08:37:53 +0530 Subject: Delete file1_flux_through_sphere.gif --- .../flux/file1_flux_through_sphere.gif | Bin 7695314 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_sphere.gif (limited to 'FSF-2020') diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_sphere.gif b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_sphere.gif deleted file mode 100644 index 43327bf..0000000 Binary files a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_sphere.gif and /dev/null differ -- cgit From d44656dc8fdd348e4bd482c8db0473fb2651b71a Mon Sep 17 00:00:00 2001 From: vishal786-commits Date: Thu, 9 Jul 2020 08:39:49 +0530 Subject: Add files via upload --- .../flux/file1_flux_through_circle.gif | Bin 0 -> 3561130 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_circle.gif (limited to 'FSF-2020') diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_circle.gif b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_circle.gif new file mode 100644 index 0000000..c00076b Binary files /dev/null and b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file1_flux_through_circle.gif differ -- cgit From 6984c84d6f9e2cc49aa1b85ffb07ef98c0ac57e9 Mon Sep 17 00:00:00 2001 From: vishal786-commits Date: Thu, 9 Jul 2020 08:40:34 +0530 Subject: Delete file2_mobius_strip.py --- .../flux/file2_mobius_strip.py | 81 ---------------------- 1 file changed, 81 deletions(-) delete mode 100644 FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file2_mobius_strip.py (limited to 'FSF-2020') diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file2_mobius_strip.py b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file2_mobius_strip.py deleted file mode 100644 index 31b1990..0000000 --- a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file2_mobius_strip.py +++ /dev/null @@ -1,81 +0,0 @@ -from manimlib.imports import * - -class Mobius(ThreeDScene): - def construct(self): - axes=ThreeDAxes() - - - - R=2.5 - - - mobius = ParametricSurface( - lambda u, v: np.array([ - (R+u*np.cos(v/2))*np.cos(v), - (R+u*np.cos(v/2))*np.sin( v), - u*np.sin(v/2) - ]), - u_min = -0.5, u_max = 0.5, v_min = 0, v_max = 2*PI, - - resolution=(6, 32)).fade(0.5) #Resolution of the surfaces - circle=Circle(radius=2.5, color=BLUE) - - - - mobius.rotate(PI/2, axis=RIGHT) - mobius.rotate(PI/2, axis=OUT) - # # mobius.shift(RIGHT+OUT+DOWN) - - - - - - along = ParametricSurface( - lambda u, v: np.array([ - (R+u*np.cos(v/2))*np.cos(v), - (R+u*np.cos(v/2))*np.sin(v), - 0 - ]), - u_min = -0.5, u_max = 0.5, v_min = 0, v_max = 2*PI, - - resolution=(6, 32)).fade(0.5) #Resolution of the surfaces - circle=Circle(radius=2.5, color=BLUE) - - - - - - - - - - - - - - - - - - - - - - - - self.set_camera_orientation(phi=75 * DEGREES,theta=-75*DEGREES) - - self.play(Write(mobius)) - - self.wait(1) - self.begin_ambient_camera_rotation(rate=0.65) - - self.wait(10) - self.stop_ambient_camera_rotation() - self.wait(1) - - - - - - -- cgit From f2542d5792a34bc3230cd67d37757bb727199a87 Mon Sep 17 00:00:00 2001 From: vishal786-commits Date: Thu, 9 Jul 2020 08:40:52 +0530 Subject: Delete file2_mobius_strip.gif --- .../flux/file2_mobius_strip.gif | Bin 20725583 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file2_mobius_strip.gif (limited to 'FSF-2020') diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file2_mobius_strip.gif b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file2_mobius_strip.gif deleted file mode 100644 index 9623046..0000000 Binary files a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file2_mobius_strip.gif and /dev/null differ -- cgit From 091a9d63628607de01f81c8002b9f708033228f3 Mon Sep 17 00:00:00 2001 From: vishal786-commits Date: Thu, 9 Jul 2020 08:43:06 +0530 Subject: Update file4_cube_surface.py --- .../flux/file4_cube_surface.py | 174 +++++++++------------ 1 file changed, 71 insertions(+), 103 deletions(-) (limited to 'FSF-2020') diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file4_cube_surface.py b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file4_cube_surface.py index 9301a00..146d955 100644 --- a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file4_cube_surface.py +++ b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file4_cube_surface.py @@ -1,7 +1,4 @@ from manimlib.imports import* - - - class cuber(ThreeDScene): def construct(self): @@ -41,6 +38,7 @@ class cuber(ThreeDScene): n1=TextMobject(r"$\vec{n}$",color=YELLOW) n1.scale(0.8) n1.rotate(PI/2,axis=RIGHT) + n1.rotate(PI,axis=OUT) n1.shift(3*RIGHT+1.3*OUT+DOWN) spaceloc = [[0,0,2],[1,0,2],[-1,0,2],[2,0,2],[-2,0,2],[3,0,2],[-3,0,2], @@ -59,158 +57,128 @@ class cuber(ThreeDScene): [0,3,2],[1,3,2],[-1,3,2],[2,3,2],[-2,3,2],[3,3,2],[-3,3,2]] - veclist1=[Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E)] + veclist1=[Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY), + Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY), + Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY), + Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY), + Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY), + Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY)] - [veclist1[i].rotate(PI/4,axis=RIGHT) for i in range(10,30,1)] - [veclist1[i].rotate(PI/4,axis=RIGHT) for i in range(40,80,2)] - [veclist1[i].rotate(PI/6,axis=OUT) for i in range(98)] - [veclist1[i].rotate(PI/8,axis=DOWN) for i in range(98)] + [veclist1[i].rotate(PI/4,axis=RIGHT) for i in range(42)] + [veclist1[i].rotate(PI/6,axis=OUT) for i in range(42)] + [veclist1[i].rotate(PI/8,axis=DOWN) for i in range(42)] vectorfield1=VGroup(*veclist1) - [veclist1[i].shift(spaceloc[i]) for i in range(98)] + [veclist1[i].shift(spaceloc[i]) for i in range(42)] - veclist2=[Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E), - Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E),Vector(color=GOLD_E)] + veclist2=[Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY), + Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY), + Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY), + Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY), + Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY), + Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY)] - [veclist2[i].rotate(PI/4,axis=RIGHT) for i in range(10,30,1)] - [veclist2[i].rotate(PI/4,axis=RIGHT) for i in range(40,80,2)] - [veclist2[i].rotate(PI/6,axis=OUT) for i in range(98)] - [veclist2[i].rotate(PI/8,axis=DOWN) for i in range(98)] + [veclist2[i].rotate(PI/4,axis=RIGHT) for i in range(42)] + [veclist2[i].rotate(PI/4,axis=RIGHT) for i in range(42)] + [veclist2[i].rotate(PI/6,axis=OUT) for i in range(42)] + [veclist2[i].rotate(PI/8,axis=DOWN) for i in range(42)] vectorfield2=VGroup(*veclist2) - [veclist2[i].shift(spaceloc[i]) for i in range(98)] + [veclist2[i].shift(spaceloc[i]) for i in range(42)] - veclist3=[Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector()] + veclist3=[Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY), + Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY), + Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY), + Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY), + Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY), + Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY)] - [veclist3[i].rotate(PI/4,axis=RIGHT) for i in range(10,30,1)] - [veclist3[i].rotate(PI/4,axis=RIGHT) for i in range(40,80,2)] - [veclist3[i].rotate(PI/6,axis=OUT) for i in range(98)] - [veclist3[i].rotate(PI/8,axis=DOWN) for i in range(98)] + [veclist3[i].rotate(PI/4,axis=RIGHT) for i in range(42)] + [veclist3[i].rotate(PI/4,axis=RIGHT) for i in range(42)] + [veclist3[i].rotate(PI/6,axis=OUT) for i in range(42)] + [veclist3[i].rotate(PI/8,axis=DOWN) for i in range(42)] vectorfield3=VGroup(*veclist3) - [veclist3[i].shift(spaceloc[i]) for i in range(98)] + [veclist3[i].shift(spaceloc[i]) for i in range(42)] - veclist4=[Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector(), - Vector(color=RED),Vector(color=GREEN),Vector(color=BLUE),Vector(color=PINK),Vector(color=MAROON),Vector(color=GREEN),Vector()] + veclist4=[Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY), + Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY), + Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY), + Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY), + Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY), + Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY)] - [veclist4[i].rotate(PI/4,axis=RIGHT) for i in range(10,30,1)] - [veclist4[i].rotate(PI/4,axis=RIGHT) for i in range(40,80,2)] - [veclist4[i].rotate(PI/6,axis=OUT) for i in range(98)] - [veclist4[i].rotate(PI/8,axis=DOWN) for i in range(98)] + [veclist4[i].rotate(PI/4,axis=RIGHT) for i in range(42)] + [veclist4[i].rotate(PI/4,axis=RIGHT) for i in range(42)] + [veclist4[i].rotate(PI/6,axis=OUT) for i in range(42)] + [veclist4[i].rotate(PI/8,axis=DOWN) for i in range(42)] vectorfield4=VGroup(*veclist4) - [veclist4[i].shift(spaceloc[i]) for i in range(98)] + [veclist4[i].shift(spaceloc[i]) for i in range(42)] vectorfield1.shift(1.5*DOWN) vectorfield2.shift(IN+1.5*DOWN) vectorfield3.shift(2*IN+1.5*DOWN) - vectorfield4.shift(3*IN+1.5*DOWN) + vectorfield4.shift(3*IN+1.5*DOWN) + vectors=[vectorfield1,vectorfield2,vectorfield3,vectorfield4] vectorfield=VGroup(*vectors) - vectorfield.scale(1.25) + vectorfield.scale(1.3) + - fv=[Vector(color=ORANGE),Vector(color=ORANGE),Vector(color=ORANGE),Vector(color=ORANGE), - Vector(color=ORANGE),Vector(color=ORANGE),Vector(color=ORANGE),Vector(color=ORANGE), - Vector(color=ORANGE),Vector(color=ORANGE),Vector(color=ORANGE),Vector(color=ORANGE), - Vector(color=ORANGE),Vector(color=ORANGE),Vector(color=ORANGE),Vector(color=ORANGE), + fv=[Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY), + Vector(color=GREY),Vector(color=GREY),Vector(color=GREY),Vector(color=GREY), + Vector(color=GREY) ] - spaceloc2 = [[1.5,0.5,0.5],[1.5,1,0.5],[1.5,1.5,0.5],[1.5,2,0.5], - [1.5,0.5,1],[1.5,1,1],[1.5,1.5,1],[1.5,2,1], - [1.5,0.5,1.5],[1.5,1,1.5],[1.5,1.5,1.5],[1.5,2,1.5], - [1.5,0.5,2],[1.5,1,2],[1.5,1.5,2],[1.5,2,2]] - - [fv[i].rotate(PI/4,axis=RIGHT) for i in range(1)] - [fv[i].rotate(PI/6,axis=OUT) for i in range(16)] - [fv[i].rotate(PI/8,axis=DOWN) for i in range(16)] - [fv[i].shift(spaceloc2[i]) for i in range(16)] + spaceloc2 = [[1.5,0.5,0.5],[1.5,1,0.5],[1.5,1.5,0.5], + [1.5,0.5,1],[1.5,1,1],[1.5,1.5,1], + [1.5,0.5,1.5],[1.5,1,1.5],[1.5,1.5,1.5] + ] + [fv[i].rotate(PI/4,axis=RIGHT) for i in range(9)] + [fv[i].rotate(PI/6,axis=OUT) for i in range(9)] + [fv[i].rotate(PI/8,axis=DOWN) for i in range(9)] + [fv[i].shift(spaceloc2[i]) for i in range(9)] fvfield=VGroup(*fv) - fvfield.shift(0.5*IN+2*DOWN) + fvfield.shift(2*DOWN) + fvfield.scale(1.3) - flux=TextMobject("Flux through one side of the cube").set_color(ORANGE) - flux.shift(3*UP+1.5*LEFT) + flux=TextMobject("Flux through one side of the cube").set_color(GOLD) + flux.shift(3.5*UP+0.5*LEFT) + alll=[vectorfield1,vectorfield2,vectorfield3,vectorfield4,fvfield] + alllvectors=VGroup(*alll) self.set_camera_orientation(phi=70 * DEGREES,theta=-75*DEGREES) self.play(ShowCreation(axes),ShowCreation(axis_label)) - self.play(ShowCreation(vectorfield)) - self.add(fvfield) - self.begin_ambient_camera_rotation(rate=0.01) + self.begin_ambient_camera_rotation(rate=0.2) + self.play(ShowCreation(alllvectors)) + # self.add(fvfield) self.play(ShowCreation(cube, run_time=1)) @@ -223,6 +191,6 @@ class cuber(ThreeDScene): # self.play(ShowCreation(flux)) self.wait(1) self.play(ShowCreation(v1),ShowCreation(n1)) - self.wait(6) - # self.stop_ambient_camera_rotation() - + self.wait(5) + self.stop_ambient_camera_rotation() + self.wait(1) -- cgit From 6ae54e19c9bea2dc70338c21a931d60c5d3ec44b Mon Sep 17 00:00:00 2001 From: vishal786-commits Date: Thu, 9 Jul 2020 08:43:33 +0530 Subject: Delete file4_cube_surface.gif --- .../flux/file4_cube_surface.gif | Bin 3620201 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file4_cube_surface.gif (limited to 'FSF-2020') diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file4_cube_surface.gif b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file4_cube_surface.gif deleted file mode 100644 index c6101cf..0000000 Binary files a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file4_cube_surface.gif and /dev/null differ -- cgit From c01ee7dbff27bd0a14bbe851d32f955ccc0c522a Mon Sep 17 00:00:00 2001 From: vishal786-commits Date: Thu, 9 Jul 2020 08:47:05 +0530 Subject: Add files via upload --- .../flux/file4_cube_surface.gif | Bin 0 -> 14969816 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file4_cube_surface.gif (limited to 'FSF-2020') diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file4_cube_surface.gif b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file4_cube_surface.gif new file mode 100644 index 0000000..001edb8 Binary files /dev/null and b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/file4_cube_surface.gif differ -- cgit From 5fe5c1c126aff3118a2b975235dae78d55f28a09 Mon Sep 17 00:00:00 2001 From: vishal786-commits Date: Thu, 9 Jul 2020 08:48:35 +0530 Subject: Update README.md --- .../triple-and-surface-integrals/flux/README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'FSF-2020') diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/README.md b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/README.md index 0af7aa1..97d6d10 100644 --- a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/README.md +++ b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/flux/README.md @@ -1,7 +1,5 @@ -**file1_flux_through_sphere.py** -![file1_flux_through_sphere](file1_flux_through_sphere.gif) -**file2_mobius_strip.py** -![file2_mobius_strip](file2_mobius_strip.gif) +**file1_flux_through_circle.py** +![file1_flux_through_circle](file1_flux_through_circle.gif) **file3_normal_vector.py** ![file3_normal_vector](file3_normal_vector.gif) **file4_cube_surface.py** -- cgit From 147be193e665211eeef5170119084a93d122feec Mon Sep 17 00:00:00 2001 From: vishal786-commits Date: Thu, 9 Jul 2020 08:52:12 +0530 Subject: Create file1_flux@_various_points.py --- .../file1_flux@_various_points.py | 43 ++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/file1_flux@_various_points.py (limited to 'FSF-2020') diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/file1_flux@_various_points.py b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/file1_flux@_various_points.py new file mode 100644 index 0000000..85567bb --- /dev/null +++ b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/file1_flux@_various_points.py @@ -0,0 +1,43 @@ +from manimlib.imports import * +def pendulum_vector_field_func(point): + #theta, omega = point[:2] + return np.array([ + 5*point[2]+point[1], + 3*point[0]+3*point[1], + 0, + ]) +class SimpleField(Scene): + CONFIG = { + #"func": cylinder_flow_vector_field, + "flow_time": 5, + } + def initialize_vector_field(self): + self.vector_field = VectorField( + pendulum_vector_field_func, + ) + self.vector_field.sort(get_norm) + def construct(self): + # plane = NumberPlane(color=RED) + # plane.add(plane.get_axis_labels()) + # self.add(plane) + # self.initialize_vector_field() + + c1=Circle(radius=3,color=RED) + field = self.vector_field + self.play(c1) + self.play(ShowCreation(field), run_time=10) + self.wait(3) + lines = StreamLines( + pendulum_vector_field_func, + virtual_time=3, + min_magnitude=0, + max_magnitude=2, + ) + self.add(AnimatedStreamLines( + lines, + line_anim_class=ShowPassingFlash + )) + self.wait(2) + phase_point = VectorizedPoint(1*UP+1*RIGHT) + self.add(move_along_vector_field(phase_point, pendulum_vector_field_func)) + self.wait(2) -- cgit From a78063c421876d66fd1c1750a5a5e87cdd5274ca Mon Sep 17 00:00:00 2001 From: vishal786-commits Date: Thu, 9 Jul 2020 08:55:35 +0530 Subject: Update file1_flux@_various_points.py --- .../file1_flux@_various_points.py | 33 ++++++++++++++++------ 1 file changed, 25 insertions(+), 8 deletions(-) (limited to 'FSF-2020') diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/file1_flux@_various_points.py b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/file1_flux@_various_points.py index 85567bb..6727982 100644 --- a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/file1_flux@_various_points.py +++ b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/file1_flux@_various_points.py @@ -2,11 +2,11 @@ from manimlib.imports import * def pendulum_vector_field_func(point): #theta, omega = point[:2] return np.array([ - 5*point[2]+point[1], - 3*point[0]+3*point[1], + 5*point[0]+point[1], + 3*point[1]+3*point[1], 0, ]) -class SimpleField(Scene): +class SF(Scene): CONFIG = { #"func": cylinder_flow_vector_field, "flow_time": 5, @@ -20,13 +20,30 @@ class SimpleField(Scene): # plane = NumberPlane(color=RED) # plane.add(plane.get_axis_labels()) # self.add(plane) - # self.initialize_vector_field() - c1=Circle(radius=3,color=RED) + A=TextMobject("The net flux through the green circular region is zero",tex_to_color_map={"green": GREEN}) + B=TextMobject("The net flux through the blue circular region is non-zero",tex_to_color_map={"blue": BLUE}) + + c1=Circle(color=GREEN, radius=1.5) + c1.shift(4*LEFT+2.2*UP) + c2=Circle(color=BLUE, radius=1.5) + + + + + self.play(ShowCreation(A)) + self.wait(0.5) + self.play(ApplyMethod(A.shift, (0.8*UP+0.2*LEFT))) + self.play(ShowCreation(B)) + # self.play(ApplyMethod(B.shift, (2*UP))) + self.wait(2) + self.play(FadeOut(A),FadeOut(B)) + self.initialize_vector_field() field = self.vector_field - self.play(c1) - self.play(ShowCreation(field), run_time=10) - self.wait(3) + self.play(ShowCreation(field), run_time=4) + self.play(ShowCreation(c1)) + self.play(ShowCreation(c2)) + self.wait(1) lines = StreamLines( pendulum_vector_field_func, virtual_time=3, -- cgit From 52bda3b678e7c9ab56e3e141f4d80a6cb32156a2 Mon Sep 17 00:00:00 2001 From: vishal786-commits Date: Thu, 9 Jul 2020 08:57:30 +0530 Subject: Add files via upload --- .../file1_flux@_various_points.gif | Bin 0 -> 4439959 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/file1_flux@_various_points.gif (limited to 'FSF-2020') diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/file1_flux@_various_points.gif b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/file1_flux@_various_points.gif new file mode 100644 index 0000000..6c32b94 Binary files /dev/null and b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/file1_flux@_various_points.gif differ -- cgit From f491a97683c327d4b8d515ef5af235f13e4fab14 Mon Sep 17 00:00:00 2001 From: vishal786-commits Date: Thu, 9 Jul 2020 08:59:12 +0530 Subject: Create file2_different_valuesof_Div.py --- .../file2_different_valuesof_Div.py | 91 ++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/file2_different_valuesof_Div.py (limited to 'FSF-2020') diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/file2_different_valuesof_Div.py b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/file2_different_valuesof_Div.py new file mode 100644 index 0000000..921047d --- /dev/null +++ b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/file2_different_valuesof_Div.py @@ -0,0 +1,91 @@ +from manimlib.imports import * +class Div(Scene): + def construct(self): + one=TextMobject(r"Div$ \vec{F} < 0$ ").set_color(RED) + two=TextMobject(r"Div$ \vec{F} = 0$ ").set_color(BLUE) + three=TextMobject(r"Div$ \vec{F} > 0$ ").set_color(YELLOW) + + one.shift(2.3*DOWN) + two.shift(2.3*DOWN) + three.shift(2.3*DOWN) + + + a=Dot(color=RED) + a.shift(0.1*LEFT) + b=Dot(color=BLUE) + b.shift(0.1*LEFT) + c=Dot(color=YELLOW) + c.shift(0.1*LEFT) + + rot=[0*DEGREES,45*DEGREES,90*DEGREES,135*DEGREES,180*DEGREES,225*DEGREES,270*DEGREES,315*DEGREES] + rot2=[180*DEGREES,180*DEGREES,180*DEGREES,180*DEGREES,180*DEGREES,180*DEGREES,180*DEGREES,180*DEGREES] + shift=[RIGHT,0.7*RIGHT+0.7*UP,UP,0.7*LEFT+0.7*UP,LEFT,0.7*LEFT+0.7*DOWN,DOWN,0.7*RIGHT+0.7*DOWN] + shift2=[RIGHT,RIGHT+UP,RIGHT+DOWN,UP,DOWN,LEFT,LEFT+UP,LEFT+DOWN] + + + + u=[Vector(color=RED),Vector(color=RED),Vector(color=RED),Vector(color=RED), + Vector(color=RED),Vector(color=RED),Vector(color=RED),Vector(color=RED)] + + + [u[i].rotate(rot[i]) for i in range(8) ] + [u[i].rotate(rot2[i]) for i in range(8) ] + [u[i].shift(shift[i]) for i in range(8) ] + + + divone=VGroup(*u) + divone.shift(0.6*LEFT) + + + v=[Vector(color=BLUE),Vector(color=BLUE),Vector(color=BLUE),Vector(color=BLUE), + Vector(color=BLUE),Vector(color=BLUE),Vector(color=BLUE),Vector(color=BLUE)] + + + [v[i].rotate(45*DEGREES) for i in range(8)] + [v[i].shift(shift2[i]) for i in range(8) ] + + divtwo=VGroup(*v) + divtwo.shift(0.6*LEFT) + + + w=[Vector(color=YELLOW),Vector(color=YELLOW),Vector(color=YELLOW),Vector(color=YELLOW), + Vector(color=YELLOW),Vector(color=YELLOW),Vector(color=YELLOW),Vector(color=YELLOW)] + + + [w[i].rotate(rot[i]) for i in range(8)] + [w[i].shift(shift[i]) for i in range(8) ] + + + divthree=VGroup(*w) + divthree.shift(0.6*LEFT) + + + + + self.play(ShowCreation(a),ShowCreation(divone)) + self.play(ShowCreation(one)) + self.wait(1) + self.play(FadeOut(a),FadeOut(divone),FadeOut(one)) + + self.play(ShowCreation(b),ShowCreation(divtwo)) + self.play(ShowCreation(two)) + self.wait(1) + self.play(FadeOut(b),FadeOut(divtwo),FadeOut(two)) + + + self.play(ShowCreation(c),ShowCreation(divthree)) + self.play(ShowCreation(three)) + self.wait(1) + self.play(FadeOut(c),FadeOut(divthree),FadeOut(three)) + self.wait(0.5) + + + + + + + + + + + -- cgit From 5492814bf7ce6b0f5f5a93581ce445e219075203 Mon Sep 17 00:00:00 2001 From: vishal786-commits Date: Thu, 9 Jul 2020 09:00:06 +0530 Subject: Add files via upload --- .../file2_different_valuesof_Div.gif | Bin 0 -> 595705 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/file2_different_valuesof_Div.gif (limited to 'FSF-2020') diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/file2_different_valuesof_Div.gif b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/file2_different_valuesof_Div.gif new file mode 100644 index 0000000..477c311 Binary files /dev/null and b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/file2_different_valuesof_Div.gif differ -- cgit From ca86e164677dea499a972538c0d9aad8c0577588 Mon Sep 17 00:00:00 2001 From: vishal786-commits Date: Thu, 9 Jul 2020 09:02:57 +0530 Subject: Update README.md --- .../triple-and-surface-integrals/divergence-gauss-theorem/README.md | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'FSF-2020') diff --git a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/README.md b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/README.md index e69de29..17fcde0 100644 --- a/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/README.md +++ b/FSF-2020/calculus-of-several-variables/triple-and-surface-integrals/divergence-gauss-theorem/README.md @@ -0,0 +1,4 @@ +**file1_flux@_various_points.py** +![file1_flux@_various_points](file1_flux@_various_points.gif) +**file2_different_valuesof_Div.py** +![file2_different_valuesof_Div](file2_different_valuesof_Div.gif) -- cgit From 180a4c39d032e8f6c8be1b5a35e028a40dfebd0e Mon Sep 17 00:00:00 2001 From: stayaryan Date: Fri, 10 Jul 2020 14:36:17 +0530 Subject: Create limit1.py --- .../calculus/intro-to-calculus/limit/limit1.py | 105 +++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 FSF-2020/calculus/intro-to-calculus/limit/limit1.py (limited to 'FSF-2020') diff --git a/FSF-2020/calculus/intro-to-calculus/limit/limit1.py b/FSF-2020/calculus/intro-to-calculus/limit/limit1.py new file mode 100644 index 0000000..fe5cb1e --- /dev/null +++ b/FSF-2020/calculus/intro-to-calculus/limit/limit1.py @@ -0,0 +1,105 @@ +from manimlib.imports import * +class limit1(GraphScene,MovingCameraScene): + def setup(self): + GraphScene.setup(self) + MovingCameraScene.setup(self) + CONFIG = { + "y_max" : 1, + "y_min" : 0, + "x_max" : 1, + "x_min" : -1, + "y_tick_frequency" : 0.2, + "x_tick_frequency" : 0.2, + "axes_color" : WHITE, + "num_graph_anchor_points": 3000, #this is the number of points that graph manim + "graph_origin" : ORIGIN+3*DOWN, + "x_labeled_nums": list(range(-1,2)), + "y_labeled_nums": list(range(0,2)), + "x_axis_label":"$x$", + "y_axis_label":"$f(x)$", + "x_axis_width": 10, + "y_axis_height": 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) + + dot1 = SmallDot(np.array([0.025,-2.975,0])) + dot2 = SmallDot(np.array([-0.025,-2.975,0])) + sqr = Square(side_length = 15.0).move_to(np.array([0,-3,0])) + brline1 = DashedVMobject(Line(np.array([0.15,-3,0]), np.array([0.15,-2.85,0]))) + brline2 = DashedVMobject(Line(np.array([0.025,-3,0]), np.array([0.025,-2.975,0]))) + brline3 = DashedVMobject(Line(np.array([-0.15,-3,0]), np.array([-0.15,-2.85,0]))) + brline4 = DashedVMobject(Line(np.array([-0.025,-3,0]), np.array([-0.025,-2.975,0]))) + textdef = TextMobject("") + text003 = TextMobject("0.03").move_to(np.array([0.15,-3.05,0])).scale(0.1) + textazero1 = TexMobject(r"\approx 0").move_to(np.array([0.04,-3.05,0])).scale(0.1) + textazero2 = TexMobject(r"\approx 0").move_to(np.array([-0.04,-3.05,0])).scale(0.1) + textm003 = TextMobject("-0.03").move_to(np.array([-0.15,-3.05,0])).scale(0.1) + text2 = TextMobject("Let f(x) = |x|. We'll check neighbourhood of origin") + text3 = TextMobject("h has to be a very small number greater than 0").move_to(np.array([0,-3.3,0])).scale(0.2) + text4 = TextMobject("The point travels through range of neighbourhood").move_to(np.array([0,-3.3,0])).scale(0.19) + text5 = TextMobject("let h be equal to 0.03").move_to(np.array([0,-3.3,0])).scale(0.25) + text6 = TextMobject("Notice how the point never touches the origin").move_to(np.array([0,-3.3,0])).scale(0.2) + text7 = TextMobject("Green line shows the Right hand neighbourhood of origin").move_to(np.array([0,-3.3,0])).scale(0.17) + text8 = TextMobject("The point is approaching (0,0) for the values of x which are positive").move_to(np.array([0,-3.3,0])).scale(0.1) + text9 = TextMobject("Values of x are tending to 0 from positive side").move_to(np.array([0,-3.3,0])).scale(0.19) + text10 = TexMobject(r"\text {Notation for this is }",r"x\rightarrow { 0 }^{ + }").move_to(np.array([0,-3.3,0])).scale(0.25) + text11 = TextMobject("Similar case can be made for negative values of x").move_to(np.array([0,-3.3,0])).scale(0.19) + text12 = TextMobject("The point is approaching (0,0) for the values of x which are negative").move_to(np.array([0,-3.3,0])).scale(0.1) + text13 = TextMobject("Values of x are tending to 0 from negative side").move_to(np.array([0,-3.3,0])).scale(0.19) + text14 = TexMobject(r"\text {Notation for this is }",r"x\rightarrow { 0 }^{ - }").move_to(np.array([0,-3.3,0])).scale(0.25) + + + self.play(FadeIn(text2), run_time = 1.5) + self.wait(2.5) + self.setup_axes() + graph_1 = self.get_graph(lambda x : x, color = RED, x_min = 0, x_max = 1) + graph_2 = self.get_graph(lambda x : -x, color = RED, x_min = 0, x_max = -1) + graph_3 = self.get_graph(lambda x : x,color = RED, x_min = 0.005, x_max = 0.03) + graph_4 = self.get_graph(lambda x : x,color = GREEN_SCREEN, x_min = 0.03, x_max = 0.005) + graph_5 = self.get_graph(lambda x : -x,color = GREEN_SCREEN, x_min = -0.03, x_max = -0.005) + grp1 = VGroup(graph_1,graph_2) + grp2 = VGroup(brline2, textazero1) + grp3 = VGroup(textazero2, textm003, brline3, brline4) + self.play(ShowCreation(grp1)) + self.add(sqr) + self.play(ReplacementTransform(text2, text3)) + self.camera_frame.save_state() + self.play(self.camera_frame.set_width,2.25,self.camera_frame.move_to,sqr,run_time = 2) + self.wait(2.5) + self.play(ReplacementTransform(text3, text4), ShowCreation(dot1)) + self.wait(2.5) + self.play(ReplacementTransform(text4, text5), ShowCreation(brline1), ShowCreation(text003)) + self.wait(2.5) + for i in range(0,3): + self.play(MoveAlongPath(dot1,graph_3), run_time = 0.5) + self.play(MoveAlongPath(dot1,graph_4), run_time = 0.5) + self.play(ReplacementTransform(text5, text6), ShowCreation(grp2)) + self.wait(2) + self.play(FadeOut(dot1)) + self.add(graph_4) + self.play(ReplacementTransform(text6, text7)) + self.wait(2.5) + self.play(ReplacementTransform(text7,text8)) + for i in range(0,3): + self.play(MoveAlongPath(dot1,graph_4), run_time = 0.7) + self.play(ReplacementTransform(text8, text9)) + self.wait(2.5) + self.play(ReplacementTransform(text9, text10)) + self.wait(2.5) + self.play(ShowCreation(grp3), ReplacementTransform(text10, text11), FadeOut(dot1)) + self.add(graph_5) + for i in range(0,3): + self.play(MoveAlongPath(dot2, graph_5), run_time = 0.7) + self.play(ReplacementTransform(text11, text12)) + self.wait(2.5) + self.play(ReplacementTransform(text12, text13)) + self.wait(2.5) + self.play(ReplacementTransform(text13, text14)) + self.wait(2) + self.play(FadeOut(dot2), ReplacementTransform(text14, textdef)) + self.wait(2) + self.play(Restore(self.camera_frame)) + + self.wait(2.5) -- cgit From f5d1083427a43886dd0c413bd33b9c7259132ef7 Mon Sep 17 00:00:00 2001 From: stayaryan Date: Fri, 10 Jul 2020 14:39:19 +0530 Subject: Create derivative1.py --- .../introderivative/derivative1.py | 55 ++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 FSF-2020/calculus/intro-to-calculus/introderivative/derivative1.py (limited to 'FSF-2020') diff --git a/FSF-2020/calculus/intro-to-calculus/introderivative/derivative1.py b/FSF-2020/calculus/intro-to-calculus/introderivative/derivative1.py new file mode 100644 index 0000000..79a6fc6 --- /dev/null +++ b/FSF-2020/calculus/intro-to-calculus/introderivative/derivative1.py @@ -0,0 +1,55 @@ +from manimlib.imports import * +class derivative1(GraphScene, Scene): + def setup(self): + GraphScene.setup(self) + CONFIG = { + "y_max" : 4, + "y_min" : -2, + "x_max" : 4, + "x_min" : -2, + "y_tick_frequency" : 1, + "x_tick_frequency" : 1, + "axes_color" : WHITE, + "num_graph_anchor_points": 3000, #this is the number of points that graph manim + "graph_origin" : ORIGIN+2*DOWN+4*LEFT, + "x_labeled_nums": list(range(-2,5)), + "y_labeled_nums": list(range(-2,5)), + "x_axis_label":"$x$", + "y_axis_label":r"$f(x)=y= 3-\frac { 3 }{ 2 } x$", + "x_axis_width": 5, + "y_axis_height": 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) + + text1 = TextMobject("") + text2 = TexMobject("{y}_{2}-{y}_{1}") + text2 = TexMobject("{x}_{2}-{x}_{1}") + text3 = TexMobject(r"m\quad =\frac { { y }_{ 2 }-{ y }_{ 1 } }{ { x }_{ 2 }-{ x }_{ 1 } }").move_to(np.array([3,0,0])) + text4 = TexMobject(r"m\quad =\frac { 3 }{ -2 }").move_to(np.array([3,0,0])) + text5 = TexMobject(r"m\quad =\quad -1.5").move_to(np.array([3,0,0])) + self.setup_axes() + graph_1 = self.get_graph(lambda x : 3-1.5*x, color = GREEN_SCREEN, x_min = -1, x_max = 3) + graph_2 = self.get_graph(lambda x : 3.1-1.5*x, color = ORANGE, x_min = 0, x_max = 2) + dot1 = Dot() + dot2 = SmallDot(self.graph_origin+1.7*RIGHT, color = PINK) + dot3 = SmallDot(self.graph_origin+2.5*UP, color = RED_B) + vec1 = Vector(2.5*DOWN, color = PINK).shift(self.graph_origin+2.5*UP) + vec2 = Vector(1.7*RIGHT, color = RED_B).shift(self.graph_origin) + brace1 = Brace(vec1, LEFT) + brace2 = Brace(vec2, DOWN) + br1text = brace1.get_text(r"${y}_{2}-{y}_{1}$").next_to(brace1, LEFT) + br2text = brace2.get_text(r"${x}_{2}-{x}_{1}$").next_to(brace2, DOWN) + self.play(ShowCreation(graph_1), ShowCreation(dot2), ShowCreation(dot3)) + self.play(MoveAlongPath(dot1, graph_2), ShowCreation(vec1), ShowCreation(vec2), run_time = 3) + self.wait(1) + self.play(ShowCreation(brace1), ShowCreation(brace2)) + self.play(ShowCreation(br1text), ShowCreation(br2text)) + self.wait(2) + self.play(GrowFromCenter(text3)) + self.wait(2.5) + self.play(ReplacementTransform(text3, text4)) + self.wait(2) + self.play(ReplacementTransform(text4, text5)) + self.wait(2) -- cgit From df8328f3268ba35f531cfc926375800c8ce301ce Mon Sep 17 00:00:00 2001 From: stayaryan Date: Fri, 10 Jul 2020 14:40:51 +0530 Subject: Create rierect1.py --- .../intro-to-calculus/riemannintegrals/rierect1.py | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 FSF-2020/calculus/intro-to-calculus/riemannintegrals/rierect1.py (limited to 'FSF-2020') diff --git a/FSF-2020/calculus/intro-to-calculus/riemannintegrals/rierect1.py b/FSF-2020/calculus/intro-to-calculus/riemannintegrals/rierect1.py new file mode 100644 index 0000000..748d766 --- /dev/null +++ b/FSF-2020/calculus/intro-to-calculus/riemannintegrals/rierect1.py @@ -0,0 +1,31 @@ +from manimlib.imports import * +class rierect1(GraphScene): + CONFIG = { + "y_max" : 6, + "y_min" : 0, + "x_max" : 4, + "x_min" : 0, + "y_tick_frequency" : 1, + "x_tick_frequency" : 1, + "axes_color" : WHITE, + "num_graph_anchor_points": 3000, #this is the number of points that graph manim + "graph_origin" : ORIGIN+2*DOWN+4*LEFT, + "x_labeled_nums": None,#list(range(-1,2)), + "y_labeled_nums": None,#list(range(0,2)), + "x_axis_label":"$x$", + "y_axis_label":"$f(x)$", + "x_axis_width": 10, + "y_axis_height": 5, + } + def construct(self): + self.setup_axes() + graph1 = self.get_graph(lambda x : (0.1*(1.5*x+1)**2 +0.5), x_min = 0, x_max = 4) + minlim = self.get_vertical_line_to_graph(1,graph1,DashedLine, color = PINK) + maxlim = self.get_vertical_line_to_graph(3,graph1,DashedLine,color = PINK) + x1 = TexMobject(r"{x}_{1}").next_to(minlim, DOWN) + x2 = TexMobject(r"{x}_{2}").next_to(maxlim, DOWN) + rie1 = self.get_riemann_rectangles(graph1, x_min = 1, x_max = 3, dx = 0.4, input_sample_type = "left", fill_opacity = 1, start_color = YELLOW, end_color = YELLOW) + #rie2 = self.get_riemann_rectangles(graph1, x_min = 1, x_max = 3, dx = 0.01, input_sample_type = "right", fill_opacity = 0.5, start_color = PINK, end_color = LIGHT_PINK) + group = VGroup(graph1, minlim, maxlim, x1, x2, rie1) + self.play(ShowCreation(group)) + self.wait(1.5) -- cgit From eee9a67ba2945d18107a85a1f7ebc00a5738dff9 Mon Sep 17 00:00:00 2001 From: stayaryan Date: Fri, 10 Jul 2020 14:48:18 +0530 Subject: Create limit3.py --- .../calculus/intro-to-calculus/limit/limit3.py | 95 ++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 FSF-2020/calculus/intro-to-calculus/limit/limit3.py (limited to 'FSF-2020') diff --git a/FSF-2020/calculus/intro-to-calculus/limit/limit3.py b/FSF-2020/calculus/intro-to-calculus/limit/limit3.py new file mode 100644 index 0000000..a4f07d7 --- /dev/null +++ b/FSF-2020/calculus/intro-to-calculus/limit/limit3.py @@ -0,0 +1,95 @@ +from manimlib.imports import * +class limit3(GraphScene, MovingCameraScene): + def setup(self): + GraphScene.setup(self) + MovingCameraScene.setup(self) + CONFIG = { + "y_max" : 10, + "y_min" : 0, + "x_max" : 100, + "x_min" : 0, + "y_tick_frequency" : 1, + "x_tick_frequency" : 10, + "axes_color" : WHITE, + "num_graph_anchor_points": 3000, #this is the number of points that graph manim + "graph_origin" : ORIGIN+3*DOWN+4*LEFT, + "x_labeled_nums": list(range(0,101))[::10], + "y_labeled_nums": list(range(0,11)), + "x_axis_label":"$x$", + "y_axis_label":"$f(x)$", + "x_axis_width": 10, + "y_axis_height": 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) + sqr1 = Square(side_length = 15).move_to(np.array([1,0.5,0])) + sqr2 = Square(side_length = 15).move_to(np.array([-4,-3,0])) + + textdef = TextMobject("") + text20 = TextMobject("f(x) is not defined at x=50").move_to(np.array([1,0.3,0])).scale(0.2) + text21 = TexMobject(r"\text {f(x) is not defined in interval }",r" (-\infty ,\quad 1]").move_to(np.array([-4,-3.2,0])).scale(0.18) + text22 = TextMobject("1").move_to(np.array([-3.9,-3.05,0])).scale(0.2) + text1 = TexMobject(r"\text {Let }" ,r"f\left( x \right) =\begin{cases} \sqrt { x-1 } ,x\in \quad (1,\infty )-50 \end{cases}") + text2 = TextMobject("Graph of f(x) is ") + text3 = TextMobject("Right hand neighbour of 50 will approximately be 50.000001").move_to(np.array([1,0.3,0])).scale(0.15) + text4 = TextMobject("Left hand neighbour of 50 will approximately be 49.999999").move_to(np.array([1,0.3,0])).scale(0.15) + text5 = TexMobject(r"\text {Hence R.H.L }", r"=\lim _{ x\rightarrow { 50 }^{ + } }{ \sqrt { 50.000001 - 1 } } \approx 7.000000071").move_to(np.array([1,0.3,0])).scale(0.13) + text6 = TexMobject(r"\text{Hence L.H.L }", r" = \lim _{ x\rightarrow { 50 }^{ - } }{ \sqrt { 49.999999-1 } }\approx 6.999999929").move_to(np.array([1,0.3,0])).scale(0.13) + text7 = TextMobject("7.000000071").move_to(np.array([1.9,0.25,0])).scale(0.1) + text8 = TextMobject("6.999999929").move_to(np.array([0.1,0.25,0])).scale(0.1) + text9 = TexMobject(r"6.999999929\quad \approx \quad 7.000000071 \quad \approx 7").move_to(np.array([1,0.25,0])).scale(0.2) + text10 = TexMobject(r"\text{Because LHL }" ,r"\approx" ,r"\text{ RHL, Limit exists at x=50 and equals 7").move_to(np.array([1,0.25,0])).scale(0.13) + text11 = TextMobject("There is no Left hand neighbour of x=1").move_to(np.array([-4,-3.2,0])).scale(0.22) + text12 = TexMobject(r"\therefore\quad \lim _{ x\rightarrow 0 }{ f(x) } \quad =\quad \lim _{ x\rightarrow { 0 }^{ + } }{ f(x) } ").move_to(np.array([-4,-3.2,0])).scale(0.25) + text13 = TexMobject(r"\text {R.H.L =}",r" \lim _{ x\rightarrow { 0 }^{ + } }{ \sqrt { 1.000000000001-1 } } \quad \approx 0").move_to(np.array([-4,-3.2,0])).scale(0.13) + text14 = TexMobject(r"\therefore \quad \lim _{ x\rightarrow 0 }{ f(x)\quad =\quad 0 }").move_to(np.array([-4,-3.2,0])).scale(0.13) + self.camera_frame.save_state() + self.play(ShowCreation(text1)) + self.wait(3) + self.play(ReplacementTransform(text1, text2)) + self.wait() + self.play(ReplacementTransform(text2, textdef)) + self.setup_axes() + self.setup() + graph_1 = self.get_graph(lambda x : (x-1)**(1/2),color = PINK, x_min = 1, x_max = 49.9) + graph_2 = self.get_graph(lambda x : (x-1)**(1/2),color = PINK, x_min = 50.1, x_max = 100) + graph_3 = self.get_graph(lambda x : (x-1)**(1/2),color = PINK, x_min = 1.05, x_max = 1.001) + dot1 = SmallDot(color = PURPLE_A) + cir = Circle(radius = 0.01, color = GREEN_SCREEN).move_to(np.array([1,0.5,0])) + grp1 = VGroup(graph_1, graph_2, cir) + grp2 = VGroup(text7, text8) + self.play(ShowCreation(grp1)) + self.wait(2) + self.play(self.camera_frame.set_width,2.25,self.camera_frame.move_to,sqr1,run_time = 2) + self.wait(1) + self.play(ShowCreation(text20)) + self.wait(2) + self.play(ReplacementTransform(text20, text3)) + self.wait(3) + self.play(ReplacementTransform(text3, text5)) + self.wait(3) + self.play(ReplacementTransform(text5, text7), ShowCreation(text4)) + self.wait(4) + self.play(ReplacementTransform(text4, text6)) + self.wait(3) + self.play(ReplacementTransform(text6, text8)) + self.wait(1.5) + self.play(ReplacementTransform(grp2, text9)) + self.wait(1.5) + self.play(ReplacementTransform(text9, text10)) + self.wait(3) + self.play(self.camera_frame.set_width,2.25,self.camera_frame.move_to,sqr2,run_time = 2) + self.play(ShowCreation(text21), ShowCreation(text22)) + self.play(MoveAlongPath(dot1, graph_3), run_time = 3) + self.wait(3) + self.play(ReplacementTransform(text21, text11)) + self.wait(3) + self.play(ReplacementTransform(text11, text12)) + self.wait(3) + self.play(ReplacementTransform(text12, text13)) + self.wait(2) + self.play(ReplacementTransform(text13, text14)) + self.wait(3) + self.play(ReplacementTransform(text14, textdef)) + self.wait(2) -- cgit From 966038e00b0ae44e699422dcc579491bdc741277 Mon Sep 17 00:00:00 2001 From: stayaryan Date: Fri, 10 Jul 2020 14:49:23 +0530 Subject: Create limitdef.py --- .../calculus/intro-to-calculus/limit/limitdef.py | 73 ++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 FSF-2020/calculus/intro-to-calculus/limit/limitdef.py (limited to 'FSF-2020') diff --git a/FSF-2020/calculus/intro-to-calculus/limit/limitdef.py b/FSF-2020/calculus/intro-to-calculus/limit/limitdef.py new file mode 100644 index 0000000..15f2845 --- /dev/null +++ b/FSF-2020/calculus/intro-to-calculus/limit/limitdef.py @@ -0,0 +1,73 @@ +from manimlib.imports import * +class limitdef(GraphScene, Scene): + CONFIG = { + "y_max" : 5, + "y_min" : 0, + "x_max" : 5, + "x_min" : -5, + "y_tick_frequency" : 1, + "x_tick_frequency" : 1, + "axes_color" : WHITE, + "num_graph_anchor_points": 3000, #this is the number of points that graph manim + "graph_origin" : ORIGIN+2*DOWN, + "x_labeled_nums": None,#list(range(-1,2)), + "y_labeled_nums": None,#list(range(0,2)), + "x_axis_label":"$x$", + "y_axis_label":"$f(x)$", + "x_axis_width": 10, + "y_axis_height": 5, + } + def construct(self): + Ldot = MediumDot(self.graph_origin+2.1*UP).set_color(GREEN_SCREEN) + adot = MediumDot(self.graph_origin+3*RIGHT).set_color(PINK) + epline1 = DashedVMobject(Line(self.graph_origin+1*LEFT+2.5*UP, self.graph_origin+4*RIGHT+2.5*UP)) + epline2 = DashedVMobject(Line(self.graph_origin+1*LEFT+1.7*UP, self.graph_origin+4*RIGHT+1.7*UP)) + epline3 = DashedVMobject(Line(self.graph_origin+3.5*RIGHT+0.5*DOWN, self.graph_origin+3.5*RIGHT+2.5*UP)) + epline4 = DashedVMobject(Line(self.graph_origin+2.5*RIGHT+0.5*DOWN, self.graph_origin+2.5*RIGHT+2.5*UP)) + Lline = Line(self.graph_origin+2.1*UP, self.graph_origin+3*RIGHT+2.1*UP).set_color(GREEN_SCREEN) + aline = Line(self.graph_origin+3*RIGHT, self.graph_origin+3*RIGHT+2.1*UP).set_color(PINK) + vertical_rectangle = Rectangle(width = 1, height = 0.8, color = PINK, fill_opacity = 0.5, fill_color = LIGHT_PINK).move_to(self.graph_origin+3*RIGHT+2.1*UP) + horizontal_rectangle = Rectangle(width = 1, height = 0.8, color = GREEN_SCREEN, fill_opacity = 0.5, fill_color = GREEN).move_to(self.graph_origin+3*RIGHT+2.1*UP) + vec1 = Line(self.graph_origin+2.5*UP, self.graph_origin+2.1*UP) + vec2 = Line(self.graph_origin+2.1*UP, self.graph_origin+1.7*UP) + vec3 = Line(self.graph_origin+2.5*RIGHT, self.graph_origin+3*RIGHT) + vec4 = Line(self.graph_origin+3*RIGHT, self.graph_origin+3.5*RIGHT) + brace1 = Brace(vec1, LEFT) + brace2 = Brace(vec2, LEFT) + brace3 = Brace(vec3, DOWN) + brace4 = Brace(vec4, DOWN) + br1text = brace1.get_text(r"$\epsilon$").next_to(brace1, LEFT) + br2text = brace2.get_text(r"$\epsilon$").next_to(brace2, LEFT) + br3text = brace3.get_text(r"$\delta$").next_to(brace3, DOWN) + br4text = brace4.get_text(r"$\delta$").next_to(brace4, DOWN) + epgrp = VGroup(epline1, epline2, Ldot, adot, Lline, aline, epline4, epline3) + recgrp = VGroup(vertical_rectangle, horizontal_rectangle) + epbrgrp = VGroup(brace1, brace2, br1text, br2text) + delbrgrp = VGroup(brace3, brace4, br3text, br4text) + self.setup_axes() + graph_1 = self.get_graph(lambda x :0.1*(x+1)**2 +0.5, x_min = -5, x_max = 5) + graph_2 = self.get_graph(lambda x : 0.1*(x+1)**2 +0.5, x_min = 2.5, x_max = 3.5, color = YELLOW_A) + graph_2.shift(2.5*LEFT) + self.play(ShowCreation(graph_1)) + self.wait(2) + self.play(ShowCreation(epgrp), ShowCreation(horizontal_rectangle), ShowCreation(vertical_rectangle)) + self.wait(2) + self.play(ShowCreation(epbrgrp)) + self.play(ShowCreation(delbrgrp)) + self.wait(2) + self.play(FadeOut(recgrp)) + self.wait(2) + for i in range(0,1): + self.play(ApplyMethod(graph_2.shift, 2.5*RIGHT)) + self.wait(1) + self.play(ApplyMethod(graph_2.shift, 1.7*DOWN)) + self.play(ApplyMethod(graph_2.shift, 1.7*UP)) + self.wait(1) + self.play(ApplyMethod(graph_2.shift, 2.5*LEFT)) + self.play(ApplyMethod(graph_2.shift, 2.5*RIGHT)) + self.wait(1) + self.play(ApplyMethod(graph_2.shift, 1.7*DOWN)) + self.play(ApplyMethod(graph_2.shift, 1.7*UP)) + self.wait(1) + self.play(ApplyMethod(graph_2.shift, 2.5*LEFT)) + self.wait() -- cgit From f9e839936ae4a585be0abe56251099f067dbc94d Mon Sep 17 00:00:00 2001 From: stayaryan Date: Fri, 10 Jul 2020 14:51:05 +0530 Subject: Create Test1.py --- FSF-2020/calculus/intro-to-calculus/limit/Test1.py | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 FSF-2020/calculus/intro-to-calculus/limit/Test1.py (limited to 'FSF-2020') diff --git a/FSF-2020/calculus/intro-to-calculus/limit/Test1.py b/FSF-2020/calculus/intro-to-calculus/limit/Test1.py new file mode 100644 index 0000000..bd7d2a6 --- /dev/null +++ b/FSF-2020/calculus/intro-to-calculus/limit/Test1.py @@ -0,0 +1,34 @@ +from manimlib.imports import * +class Test1(GraphScene): + CONFIG = { + "y_max" : 5, + "y_min" : -5, + "x_max" : 5, + "x_min" : -5, + "y_tick_frequency" : 1, + "x_tick_frequency" : 1, + "axes_color" : BLUE, + "num_graph_anchor_points": 3000, #this is the number of points that graph manim + "graph_origin" : ORIGIN, + "x_labeled_nums": list(range(-5,6)), + "y_labeled_nums": list(range(-5,6)), + "x_axis_label":"$x$", + "y_axis_label":"${ f }_{ 1 }(x)$" + } + def construct(self): + self.setup_axes() + cir1 = Circle(radius = 0.1, color = BLUE) + graph_1 = self.get_graph(lambda x : x+2, + color = GREEN, + x_min = -5, # Domain 1 + x_max = +1.9 + ) + graph_2 =self.get_graph(lambda x : x+2, + color = GREEN, + x_min = 2.1, # Domain 2 + x_max = 5 + ) + cir1.move_to(np.array([1,2,0])) + self.play(ShowCreation(graph_1)) + self.play(ShowCreation(cir1)) + self.play(ShowCreation(graph_2)) -- cgit From 30fa06ae941c06392da473d3b1841d4e09639b66 Mon Sep 17 00:00:00 2001 From: stayaryan Date: Fri, 10 Jul 2020 14:52:07 +0530 Subject: Create Test2.py --- FSF-2020/calculus/intro-to-calculus/limit/Test2.py | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 FSF-2020/calculus/intro-to-calculus/limit/Test2.py (limited to 'FSF-2020') diff --git a/FSF-2020/calculus/intro-to-calculus/limit/Test2.py b/FSF-2020/calculus/intro-to-calculus/limit/Test2.py new file mode 100644 index 0000000..0efb565 --- /dev/null +++ b/FSF-2020/calculus/intro-to-calculus/limit/Test2.py @@ -0,0 +1,26 @@ +from manimlib.imports import * +class Test2(GraphScene): + CONFIG = { + "y_max" : 5, + "y_min" : -5, + "x_max" : 5, + "x_min" : -5, + "y_tick_frequency" : 1, + "x_tick_frequency" : 1, + "axes_color" : BLUE, + "num_graph_anchor_points": 3000, #this is the number of points that graph manim + "graph_origin" : ORIGIN, + "x_labeled_nums": list(range(-5,6)), + "y_labeled_nums": list(range(-5,6)), + "x_axis_label":"$x$", + "y_axis_label":"${ f }_{ 1 }(x)$" + } + def construct(self): + self.setup_axes() + graph_1 = self.get_graph(lambda x : x+2, + color = GREEN, + x_min = -5, # Domain 1 + x_max = +5 + ) + self.play(ShowCreation(graph_1)) + self.wait() -- cgit From 3a4fa385b4659c87b7c28f03fc4e38e063e88038 Mon Sep 17 00:00:00 2001 From: stayaryan Date: Fri, 10 Jul 2020 14:54:20 +0530 Subject: Create derivative2.py --- .../introderivative/derivative2.py | 78 ++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 FSF-2020/calculus/intro-to-calculus/introderivative/derivative2.py (limited to 'FSF-2020') diff --git a/FSF-2020/calculus/intro-to-calculus/introderivative/derivative2.py b/FSF-2020/calculus/intro-to-calculus/introderivative/derivative2.py new file mode 100644 index 0000000..d6aab15 --- /dev/null +++ b/FSF-2020/calculus/intro-to-calculus/introderivative/derivative2.py @@ -0,0 +1,78 @@ +from manimlib.imports import * +class derivative2(GraphScene, MovingCameraScene): + def setup(self): + GraphScene.setup(self) + MovingCameraScene.setup(self) + CONFIG = { + "y_max" : 100, + "y_min" : 0, + "x_max" : 10, + "x_min" : 0, + "y_tick_frequency" : 100, + "x_tick_frequency" : 10, + "axes_color" : WHITE, + "num_graph_anchor_points": 3000, #this is the number of points that graph manim + "graph_origin" : ORIGIN, + "x_labeled_nums": None,#list(range(0,11)), + "y_labeled_nums": None,#list(range(0,101))[::10], + "x_axis_label":"$x$", + "y_axis_label":"$f(x)$", + "x_axis_width": 5, + "y_axis_height": 5, + "start_x" : 2, + "start_dx" : 6, + "df_color" : YELLOW, + "dx_color" : GREEN, + "secant_line_color" : MAROON_B, + "zoomed_camera_frame_starting_position": ORIGIN+2*DOWN+6*LEFT, + } + def construct(self): + self.setup() + self.camera_frame.save_state() + self.graph_origin = ORIGIN+2*DOWN+6*LEFT + self.setup_axes() + graph23 = self.get_graph(lambda x : x**2+7, color = GREEN_SCREEN, x_min = 0, x_max = 10) + graph24 = self.get_graph(lambda x : x**2+7, color = GREEN_SCREEN, x_min = 8, x_max = 2.01) + line_1 = DashedVMobject(Line(np.array([-5,-2,0]), np.array([-5,-1.42,0]))) + textdef = TextMobject("") + text1 = TexMobject("{ x }_{ 0 }").move_to(np.array([-5,-2.2,0])) + text2 = TextMobject("The line becomes tangential to the curve").move_to(self.graph_origin+RIGHT+0.5*UP).scale(0.01) + text3 = TexMobject(r"\frac { df }{ dx } =\frac { f({ x }_{ 0 }+h)-f({ x }_{ 0 }) }{ h-0 }").move_to(2*RIGHT) + text4 = TexMobject(r"\frac { df }{ dx } =\lim _{ h\rightarrow 0 }{ \frac { f({ x }_{ 0 }+h)-f({ x }_{ 0 }) }{ h } }").move_to(2*RIGHT) + squareobj = Square(side_length = 15).move_to(self.graph_origin+RIGHT+0.53*UP) + ss_group = self.get_secant_slope_group( + self.start_x, graph23, + dx = self.start_dx, + dx_label = "h", + df_label = "df", + df_line_color = self.df_color, + dx_line_color = self.dx_color, + secant_line_color = self.secant_line_color, + dot_df_top = True, + dot_dx_start = True, + dot_df_top_label = "Q", + dot_dx_start_label = "P", + secant_line_length = 8 + ) + self.play(ShowCreation(graph23)) + self.wait() + self.play(ShowCreation(ss_group.secant_line)) + self.add(text1) + self.play(ShowCreation(line_1)) + self.wait(3) + self.play(ShowCreation(ss_group.dx_line)) + self.play(ShowCreation(ss_group.dx_label)) + self.play(ShowCreation(ss_group.df_line)) + self.play(Write(ss_group.df_label)) + self.play(ShowCreation(ss_group.dot_df_top), ShowCreation(ss_group.dot_dx_start)) + self.play(ShowCreation(ss_group.dot_df_top_label), ShowCreation(ss_group.dot_dx_start_label)) + self.wait() + self.play(ShowCreation(text3)) + self.wait(2) + self.play(ReplacementTransform(text3, text4)) + self.animate_secant_slope_group_change(ss_group, target_dx = 0.01, run_time = 5) + self.wait(2) + self.play(self.camera_frame.set_width,0.2,self.camera_frame.move_to,squareobj,run_time = 2) + self.wait() + self.play(ShowCreation(text2)) + self.wait(3) -- cgit From 74f3a10aa7e74b7f32a5b0e38875efafd2b2614c Mon Sep 17 00:00:00 2001 From: stayaryan Date: Fri, 10 Jul 2020 14:55:29 +0530 Subject: Create derivative3.py --- .../introderivative/derivative3.py | 57 ++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 FSF-2020/calculus/intro-to-calculus/introderivative/derivative3.py (limited to 'FSF-2020') diff --git a/FSF-2020/calculus/intro-to-calculus/introderivative/derivative3.py b/FSF-2020/calculus/intro-to-calculus/introderivative/derivative3.py new file mode 100644 index 0000000..ebbacb1 --- /dev/null +++ b/FSF-2020/calculus/intro-to-calculus/introderivative/derivative3.py @@ -0,0 +1,57 @@ +from manimlib.imports import * +class derivative3(GraphScene, Scene): + def setup(self): + Scene.setup(self) + #ZoomedScene.setup(self) + CONFIG = { + "y_max" : 8, + "y_min" : 0, + "x_max" : 11, + "x_min" : 0, + "y_tick_frequency" : 1, + "x_tick_frequency" : 1, + "axes_color" : WHITE, + "num_graph_anchor_points": 3000, #this is the number of points that graph manim + "graph_origin" : ORIGIN+3*DOWN+6.5*LEFT, + "x_labeled_nums": list(range(0,12))[::1], + "y_labeled_nums": list(range(0,9))[::1], + "x_axis_label":"$t$", + "y_axis_label":"$s$", + "x_axis_width": 5, + "y_axis_height": 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() + graph_1 = self.get_graph(lambda x : -(x-2)**2+4, color = GOLD_A, x_min = 0, x_max = 1.5) + graph_2 = self.get_graph(lambda x : 1*x+2.25, color = GOLD_A, x_min = 1.5, x_max = 5) + graph_3 = self.get_graph(lambda x : 7.25, color = GOLD_A, x_min = 5, x_max = 8) + graph_4 = self.get_graph(lambda x : -3.625*x + 36.25, color = GOLD_A, x_min = 8, x_max = 10) + + self.y_max = 5 + self.x_max = 10 + self.x_min = 0 + self.y_min = -5 + self.x_labeled_nums = list(range(0,11)) + self.y_labeled_nums = list(range(-5,6))[::1] + self.x_axis_label = r"$t$" + self.y_axis_label = r"$v$" + self.y_tick_frequency = 1 + self.x_tick_frequency = 1 + self.graph_origin = ORIGIN+1*RIGHT + self.setup_axes() + graph_5 = self.get_graph(lambda x : 2*(x-2)+4, color = GREEN_SCREEN, x_min = 0, x_max = 1.5) + graph_6 = self.get_graph(lambda x : 3, color = GREEN_SCREEN, x_min = 1.5, x_max = 5) + graph_7 = self.get_graph(lambda x : 0, color = GREEN_SCREEN, x_min = 5, x_max = 8) + graph_8 = self.get_graph(lambda x : -3.625, color = GREEN_SCREEN, x_min = 8, x_max = 10) + line1 = DashedVMobject(Line(self.graph_origin+2.5*RIGHT, self.graph_origin+2.5*RIGHT+1.5*UP)) + line2 = DashedVMobject(Line(self.graph_origin+4*RIGHT, self.graph_origin+4*RIGHT+1.835*DOWN)) + self.play(ShowCreation(graph_1), ShowCreation(graph_5), run_time = 3) + self.play(ShowCreation(graph_2), ShowCreation(graph_6), run_time = 3) + self.add(line1) + self.play(ShowCreation(graph_3), ShowCreation(graph_7), run_time = 3) + self.add(line2) + self.play(ShowCreation(graph_4), ShowCreation(graph_8), run_time = 3) + self.wait(3) -- cgit From 37081388c65c7bdf96231e3dc67e226d8e70b02f Mon Sep 17 00:00:00 2001 From: stayaryan Date: Fri, 10 Jul 2020 14:56:32 +0530 Subject: Create rierect2.py --- .../intro-to-calculus/riemannintegrals/rierect2.py | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 FSF-2020/calculus/intro-to-calculus/riemannintegrals/rierect2.py (limited to 'FSF-2020') diff --git a/FSF-2020/calculus/intro-to-calculus/riemannintegrals/rierect2.py b/FSF-2020/calculus/intro-to-calculus/riemannintegrals/rierect2.py new file mode 100644 index 0000000..e300250 --- /dev/null +++ b/FSF-2020/calculus/intro-to-calculus/riemannintegrals/rierect2.py @@ -0,0 +1,31 @@ +from manimlib.imports import * +class rierect2(GraphScene): + CONFIG = { + "y_max" : 6, + "y_min" : 0, + "x_max" : 4, + "x_min" : 0, + "y_tick_frequency" : 1, + "x_tick_frequency" : 1, + "axes_color" : WHITE, + "num_graph_anchor_points": 3000, #this is the number of points that graph manim + "graph_origin" : ORIGIN+2*DOWN+4*LEFT, + "x_labeled_nums": None,#list(range(-1,2)), + "y_labeled_nums": None,#list(range(0,2)), + "x_axis_label":"$x$", + "y_axis_label":"$f(x)$", + "x_axis_width": 10, + "y_axis_height": 5, + } + def construct(self): + self.setup_axes() + graph1 = self.get_graph(lambda x : (0.1*(1.5*x+1)**2 +0.5), x_min = 0, x_max = 4) + minlim = self.get_vertical_line_to_graph(1,graph1,DashedLine, color = PINK) + maxlim = self.get_vertical_line_to_graph(3,graph1,DashedLine,color = PINK) + x1 = TexMobject(r"{x}_{1}").next_to(minlim, DOWN) + x2 = TexMobject(r"{x}_{2}").next_to(maxlim, DOWN) + rie1 = self.get_riemann_rectangles(graph1, x_min = 1, x_max = 3, dx = 0.1, input_sample_type = "left", fill_opacity = 1, start_color = YELLOW, end_color = YELLOW) + #rie2 = self.get_riemann_rectangles(graph1, x_min = 1, x_max = 3, dx = 0.01, input_sample_type = "right", fill_opacity = 0.5, start_color = PINK, end_color = LIGHT_PINK) + group = VGroup(graph1, minlim, maxlim, x1, x2, rie1) + self.play(ShowCreation(group)) + self.wait(1.5) -- cgit From 97eb5aaf0fc0f9f5d09c9d9bc6cc0a5fc753a280 Mon Sep 17 00:00:00 2001 From: stayaryan Date: Fri, 10 Jul 2020 14:57:34 +0530 Subject: Create rierect3.py --- .../intro-to-calculus/riemannintegrals/rierect3.py | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 FSF-2020/calculus/intro-to-calculus/riemannintegrals/rierect3.py (limited to 'FSF-2020') diff --git a/FSF-2020/calculus/intro-to-calculus/riemannintegrals/rierect3.py b/FSF-2020/calculus/intro-to-calculus/riemannintegrals/rierect3.py new file mode 100644 index 0000000..3542358 --- /dev/null +++ b/FSF-2020/calculus/intro-to-calculus/riemannintegrals/rierect3.py @@ -0,0 +1,31 @@ +from manimlib.imports import * +class rierect3(GraphScene): + CONFIG = { + "y_max" : 6, + "y_min" : 0, + "x_max" : 4, + "x_min" : 0, + "y_tick_frequency" : 1, + "x_tick_frequency" : 1, + "axes_color" : WHITE, + "num_graph_anchor_points": 3000, #this is the number of points that graph manim + "graph_origin" : ORIGIN+2*DOWN+4*LEFT, + "x_labeled_nums": None,#list(range(-1,2)), + "y_labeled_nums": None,#list(range(0,2)), + "x_axis_label":"$x$", + "y_axis_label":"$f(x)$", + "x_axis_width": 10, + "y_axis_height": 5, + } + def construct(self): + self.setup_axes() + graph1 = self.get_graph(lambda x : (0.1*(1.5*x+1)**2 +0.5), x_min = 0, x_max = 4) + minlim = self.get_vertical_line_to_graph(1,graph1,DashedLine, color = PINK) + maxlim = self.get_vertical_line_to_graph(3,graph1,DashedLine,color = PINK) + x1 = TexMobject(r"{x}_{1}").next_to(minlim, DOWN) + x2 = TexMobject(r"{x}_{2}").next_to(maxlim, DOWN) + rie1 = self.get_riemann_rectangles(graph1, x_min = 1, x_max = 3, dx = 0.01, input_sample_type = "left", fill_opacity = 1, start_color = YELLOW, end_color = YELLOW) + #rie2 = self.get_riemann_rectangles(graph1, x_min = 1, x_max = 3, dx = 0.01, input_sample_type = "right", fill_opacity = 0.5, start_color = PINK, end_color = LIGHT_PINK) + group = VGroup(graph1, minlim, maxlim, x1, x2, rie1) + self.play(ShowCreation(group)) + self.wait(1.5) -- cgit From 2348a32e0249074c1c3dd124553f64e6d8165c65 Mon Sep 17 00:00:00 2001 From: stayaryan Date: Fri, 10 Jul 2020 14:58:54 +0530 Subject: Create RiemannRectanglesAnimation.py --- .../riemannintegrals/RiemannRectanglesAnimation.py | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 FSF-2020/calculus/intro-to-calculus/riemannintegrals/RiemannRectanglesAnimation.py (limited to 'FSF-2020') diff --git a/FSF-2020/calculus/intro-to-calculus/riemannintegrals/RiemannRectanglesAnimation.py b/FSF-2020/calculus/intro-to-calculus/riemannintegrals/RiemannRectanglesAnimation.py new file mode 100644 index 0000000..a278c9d --- /dev/null +++ b/FSF-2020/calculus/intro-to-calculus/riemannintegrals/RiemannRectanglesAnimation.py @@ -0,0 +1,64 @@ +from manimlib.imports import * +class RiemannRectanglesAnimation(GraphScene): + CONFIG = { + "y_max": 5, + "x_max": 6, + "x_min": 0, + "y_min": 0, + "x_axis_width": 5, + "y_axis_height": 5, + "init_dx":0.5, + "graph_origin": ORIGIN+2*DOWN+6*LEFT, + } + def construct(self): + self.setup_axes() + def func(x): + return 0.1*(x)*(x-3)*(x-7)+3 + + graph1=self.get_graph(func,x_min=0,x_max=6) + kwargs = { + "x_min" : 1.5, + "x_max" : 5.5, + "fill_opacity" : 0.75, + "stroke_width" : 0.25, + "input_sample_type": "right", + } + flat_rectangles1 = self.get_riemann_rectangles(self.get_graph(lambda x : 0),dx=self.init_dx,start_color=invert_color(PURPLE),end_color=invert_color(ORANGE),**kwargs) + riemann_rectangles_list1 = self.get_riemann_rectangles_list(graph1,8,max_dx=self.init_dx,power_base=2,start_color=PURPLE,end_color=ORANGE,**kwargs) + self.add(graph1) + self.graph_origin = ORIGIN+2*DOWN+1*RIGHT + self.setup_axes() + graph2=self.get_graph(func,x_min=0,x_max=6) + kwargs = { + "x_min" : 1.5, + "x_max" : 5.5, + "fill_opacity" : 0.75, + "stroke_width" : 0.25, + "input_sample_type": "left", + } + flat_rectangles2 = self.get_riemann_rectangles(self.get_graph(lambda x : 0),dx=self.init_dx,start_color=invert_color(PURPLE),end_color=invert_color(ORANGE),**kwargs) + riemann_rectangles_list2 = self.get_riemann_rectangles_list(graph2,8,max_dx=self.init_dx,power_base=2,start_color=PURPLE,end_color=ORANGE,**kwargs) + self.add(graph2) + text1 = TextMobject("Left Riemann sum").move_to(np.array([-3,-2.5,0])) + text2 = TextMobject("Right Riemann sum").move_to(np.array([4,-2.5,0])) + grp1 = VGroup(text1, text2) + text3 = TexMobject(r"n \rightarrow \infty").move_to(np.array([0, -3, 0])) + text4 = TextMobject("Left and Right Riemann sums are equal").move_to(np.array([0, -3, 0])) + text5 = TextMobject("Hence function is Riemann integrable and value of integral equals area covered").move_to(np.array([0, -3, 0])).scale(0.6) + grp2 = VGroup(text1, text2, text3) + # Show Riemann rectangles + self.play(ReplacementTransform(flat_rectangles1,riemann_rectangles_list1[0]), ReplacementTransform(flat_rectangles2, riemann_rectangles_list2[0])) + self.wait() + self.play(ShowCreation(grp1)) + for r in range(1,len(riemann_rectangles_list1)-5): + self.transform_between_riemann_rects(riemann_rectangles_list1[r-1],riemann_rectangles_list1[r],replace_mobject_with_target_in_scene = True,) + self.transform_between_riemann_rects(riemann_rectangles_list2[r-1],riemann_rectangles_list2[r],replace_mobject_with_target_in_scene = True,) + self.play(ShowCreation(text3)) + for r in range(len(riemann_rectangles_list1)-5,len(riemann_rectangles_list1)): + self.transform_between_riemann_rects(riemann_rectangles_list1[r-1],riemann_rectangles_list1[r],replace_mobject_with_target_in_scene = True,) + self.transform_between_riemann_rects(riemann_rectangles_list2[r-1],riemann_rectangles_list2[r],replace_mobject_with_target_in_scene = True,) + self.wait(2) + self.play(ReplacementTransform(grp2, text4)) + self.wait(2) + self.play(ReplacementTransform(text4, text5)) + self.wait(4) -- cgit From a11ebb2cf4ab09b187d98851b01f0a305ab48dbf Mon Sep 17 00:00:00 2001 From: stayaryan Date: Fri, 10 Jul 2020 14:59:54 +0530 Subject: Create mimi.py --- .../intro-to-calculus/riemannintegrals/mimi.py | 53 ++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 FSF-2020/calculus/intro-to-calculus/riemannintegrals/mimi.py (limited to 'FSF-2020') diff --git a/FSF-2020/calculus/intro-to-calculus/riemannintegrals/mimi.py b/FSF-2020/calculus/intro-to-calculus/riemannintegrals/mimi.py new file mode 100644 index 0000000..2471c87 --- /dev/null +++ b/FSF-2020/calculus/intro-to-calculus/riemannintegrals/mimi.py @@ -0,0 +1,53 @@ +class mimi(GraphScene): + CONFIG = { + "y_max": 5, + "x_max": 6, + "x_min": 0, + "y_min": 0, + "x_axis_width": 5, + "y_axis_height": 5, + "init_dx":0.5, + "graph_origin": ORIGIN+2*DOWN+6*LEFT, + } + def construct(self): + self.setup_axes() + def func(x): + return 0.1*(x)*(x-3)*(x-7)+3 + + graph=self.get_graph(func,x_min=0,x_max=6) + kwargs = { + "x_min" : 1.5, + "x_max" : 5.5, + "fill_opacity" : 0.5, + "stroke_width" : 0.25, + } + flat_rectangles = self.get_riemann_rectangles(self.get_graph(lambda x : 0),dx=self.init_dx,**kwargs) + riemann_rectangles_list = self.get_riemann_rectangles_list(graph,8,max_dx=self.init_dx,power_base=2,start_color=PURPLE,end_color=ORANGE,**kwargs, input_sample_type = "right") + riemann_rectangles_list1 = self.get_riemann_rectangles_list(graph,8,max_dx=self.init_dx,power_base=2,start_color=PURPLE,end_color=ORANGE,**kwargs, input_sample_type = "left") + self.add(graph) + self.play(ReplacementTransform(flat_rectangles,riemann_rectangles_list[0]), ReplacementTransform(flat_rectangles,riemann_rectangles_list1[0])) + #self.play(ReplacementTransform(flat_rectangles,riemann_rectangles_list1[0])) + self.wait(2) + kwargs = { + "x_min" : 3, + "x_max" : 3.5, + "fill_opacity" : 0.5, + "stroke_width" : 0.25, + } + riemann_rectangles_list2 = self.get_riemann_rectangles_list(graph,8,max_dx=self.init_dx,power_base=2,start_color=PURPLE,end_color=ORANGE,**kwargs, input_sample_type = "right") + riemann_rectangles_list3 = self.get_riemann_rectangles_list(graph,8,max_dx=self.init_dx,power_base=2,start_color=PURPLE,end_color=ORANGE,**kwargs, input_sample_type = "left") + #self.play(FadeOut(riemann_rectangles_list[0]), FadeOut(riemann_rectangles_list1[0])) + self.play(ReplacementTransform(flat_rectangles,riemann_rectangles_list2[0]), ReplacementTransform(flat_rectangles,riemann_rectangles_list3[0]), FadeOut(riemann_rectangles_list[0]), FadeOut(riemann_rectangles_list1[0])) + minlim = self.get_vertical_line_to_graph(3,graph,DashedLine) + maxlim = self.get_vertical_line_to_graph(3.5,graph,DashedLine) + line2 = Line(self.graph_origin+2.5*RIGHT, self.graph_origin+2.9*RIGHT) + brace1 = Brace(minlim, LEFT) + brace2 = Brace(line2, DOWN) + brace3 = Brace(maxlim, RIGHT) + br1text = brace1.get_text(r"${M}_{i}$").next_to(brace1, LEFT) + br2text = brace2.get_text(r"$\Delta x$").next_to(brace2, DOWN) + br3text = brace3.get_text(r"${m}_{i}$").next_to(brace3, RIGHT) + text1 = TexMobject(r"\Delta x=(b-a)/n").shift(2*RIGHT) + grp3 = VGroup(br1text, br2text, br3text, brace1, brace2, brace3, text1) + self.play(ShowCreation(grp3)) + self.wait(5) -- cgit From 9ad1f8f31e09dfd40db413aefa90a6589f4fd50b Mon Sep 17 00:00:00 2001 From: stayaryan Date: Fri, 10 Jul 2020 15:33:02 +0530 Subject: Create README.md --- .../intro-to-calculus/riemannintegrals/README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 FSF-2020/calculus/intro-to-calculus/riemannintegrals/README.md (limited to 'FSF-2020') diff --git a/FSF-2020/calculus/intro-to-calculus/riemannintegrals/README.md b/FSF-2020/calculus/intro-to-calculus/riemannintegrals/README.md new file mode 100644 index 0000000..a9ad0bb --- /dev/null +++ b/FSF-2020/calculus/intro-to-calculus/riemannintegrals/README.md @@ -0,0 +1,18 @@ +rierect1.gif +![rierect1](https://user-images.githubusercontent.com/61246381/87141790-3ad90800-c2c1-11ea-86e4-af05cb93fa2d.gif) + + +rierect2.gif +![rierect2](https://user-images.githubusercontent.com/61246381/87141870-5ba15d80-c2c1-11ea-9307-40acc2884d77.gif) + + +rierect3.gif +![rierect3](https://user-images.githubusercontent.com/61246381/87141949-6e1b9700-c2c1-11ea-9433-4f6be752aa55.gif) + + +RiemannRectanglesAnimation. +![RiemannRectanglesAnimation](https://user-images.githubusercontent.com/61246381/87142531-4a0c8580-c2c2-11ea-8f5e-9e854eae6eec.gif) + + +mimi.gif +![mimi](https://user-images.githubusercontent.com/61246381/87142127-b3d85f80-c2c1-11ea-864e-627e41d87ea2.gif) -- cgit