From 9c93f9fd57d3d12355e5fb854603e421965a08c1 Mon Sep 17 00:00:00 2001 From: Archit Sangal Date: Tue, 7 Jul 2020 18:47:41 +0530 Subject: semi-final 4FSS --- .../The-Four-Fundamental-Subspaces/Axb.py | 77 --------- .../The-Four-Fundamental-Subspaces/CSasImage.py | 168 ------------------- .../file10_NOT_in_lecture_note_Column_Space.py | 30 ++++ .../The-Four-Fundamental-Subspaces/file1_Axb.py | 77 +++++++++ .../file1_Column_Space.gif | Bin 1182328 -> 0 bytes .../file1_Column_Space.py | 30 ---- .../file2_CSasImage.py | 169 +++++++++++++++++++ .../file2_Row_Space.py | 145 ---------------- .../file3_solution.py | 77 +++++++++ .../file4_null_space.py | 91 ++++++++++ .../file5_Row_Space_part_1.py | 68 ++++++++ .../file6_Row_Space_part_2.py | 145 ++++++++++++++++ .../file7_Row_space_Orthogonal_Complements.py | 150 +++++++++++++++++ .../file8_Left_Null_Space.py | 26 +++ .../file9_left_null_space.py | 186 +++++++++++++++++++++ .../The-Four-Fundamental-Subspaces/null_space.py | 91 ---------- .../The-Four-Fundamental-Subspaces/row_space.py | 150 ----------------- .../The-Four-Fundamental-Subspaces/solution.py | 75 --------- 18 files changed, 1019 insertions(+), 736 deletions(-) delete mode 100755 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/Axb.py delete mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/CSasImage.py create mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file10_NOT_in_lecture_note_Column_Space.py create mode 100755 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file1_Axb.py delete mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file1_Column_Space.gif delete mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file1_Column_Space.py create mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file2_CSasImage.py delete mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file2_Row_Space.py create mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file3_solution.py create mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file4_null_space.py create mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file5_Row_Space_part_1.py create mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file6_Row_Space_part_2.py create mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file7_Row_space_Orthogonal_Complements.py create mode 100755 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file8_Left_Null_Space.py create mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file9_left_null_space.py delete mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/null_space.py delete mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/row_space.py delete mode 100644 FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/solution.py diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/Axb.py b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/Axb.py deleted file mode 100755 index 95d1021..0000000 --- a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/Axb.py +++ /dev/null @@ -1,77 +0,0 @@ -from manimlib.imports import * - -class Axb(Scene): - - def construct(self): - - text0 = TextMobject("Linear System Of Equations") - text1 = TextMobject(r"$x_{1}+x_{2}+x_{3} =b_{1}$") - text2 = TextMobject(r"$x_{1}+2x_{2}+x_{3} =b_{2}$") - text3 = TextMobject(r"$x_{1}+x_{2}+3x_{3} =b_{3}$") - text0.move_to(UP*2+LEFT*2) - text0.set_color(DARK_BLUE) - text1.move_to(UP) - text2.move_to(ORIGIN) - text3.move_to(DOWN) - - text0.scale(0.75) - text1.scale(0.75) - text2.scale(0.75) - text3.scale(0.75) - self.play(Write(text0)) - self.play(Write(text1)) - self.play(Write(text2)) - self.play(Write(text3)) - self.play(ApplyMethod(text0.move_to,3*UP+LEFT*2), ApplyMethod(text1.move_to,2.5*UP), ApplyMethod(text2.move_to,2*UP), ApplyMethod(text3.move_to,1.5*UP)) - - A = TextMobject(r"$\left( \begin{array}{c c c} 1 & 1 & 1 \\ 1 & 2 & 1 \\ 1 & 1 & 3 \end{array}\right) \left[ \begin{array} {c} x_{1} \\ x_{2} \\ x_{3} \end{array}\right] =$", r"$\left[ \begin{array}{c} x_{1}+x_{2}+x_{3} \\ x_{1}+2x_{2}+x_{3} \\ x_{1}+x_{2}+3x_{3} \end{array}\right]$") - A.scale(0.75) - self.play(FadeIn(A)) - - textA = TextMobject("A") - textx = TextMobject("x") - textb = TextMobject("Ax") - - textA.move_to(DOWN+3*LEFT) - textx.move_to(1.1*DOWN+0.5*LEFT) - textb.move_to(DOWN-2*LEFT) - - self.play(Write(textA), Write(textx), Write(textb)) - - circle1 = Circle(radius = 0.24) - circle2 = Circle(radius = 0.24) - square = Square(side_length = 0.6) - - circle1.move_to(UP*0.5+LEFT*3.05) - circle2.move_to(UP*0.4+LEFT*0.5) - square.move_to(UP*0.4+RIGHT*1.3) - - self.play(FadeIn(circle1), FadeIn(circle2),FadeIn(square)) - - self.play(ApplyMethod(circle1.move_to,UP*0.5+LEFT*2.45), ApplyMethod(circle2.move_to,LEFT*0.5), ApplyMethod(square.move_to,UP*0.4+RIGHT*2.2)) - self.play(ApplyMethod(circle1.move_to,UP*0.5+LEFT*1.85), ApplyMethod(circle2.move_to,DOWN*0.5+LEFT*0.5), ApplyMethod(square.move_to,UP*0.4+RIGHT*3.1)) - - self.play(ApplyMethod(circle1.move_to,LEFT*3.05), ApplyMethod(circle2.move_to,UP*0.4+LEFT*0.5), ApplyMethod(square.move_to,RIGHT*1.3)) - self.play(ApplyMethod(circle1.move_to,LEFT*2.45), ApplyMethod(circle2.move_to,LEFT*0.5), ApplyMethod(square.move_to,RIGHT*2.2)) - self.play(ApplyMethod(circle1.move_to,LEFT*1.85), ApplyMethod(circle2.move_to,DOWN*0.5+LEFT*0.5), ApplyMethod(square.move_to,RIGHT*3.1)) - - self.play(ApplyMethod(circle1.move_to,0.4*DOWN+LEFT*3.05), ApplyMethod(circle2.move_to,UP*0.4+LEFT*0.5), ApplyMethod(square.move_to,0.4*DOWN+RIGHT*1.3)) - self.play(ApplyMethod(circle1.move_to,0.4*DOWN+LEFT*2.45), ApplyMethod(circle2.move_to,LEFT*0.5), ApplyMethod(square.move_to,0.4*DOWN+RIGHT*2.2)) - self.play(ApplyMethod(circle1.move_to,0.4*DOWN+LEFT*1.85), ApplyMethod(circle2.move_to,DOWN*0.5+LEFT*0.5), ApplyMethod(square.move_to,0.4*DOWN+RIGHT*3.1)) - - self.play(FadeOut(circle1), FadeOut(circle2), FadeOut(square)) - self.play(FadeOut(A[0]), ApplyMethod(A[1].move_to,2*LEFT),ApplyMethod(textb.move_to,DOWN+1.7*LEFT), FadeOut(textx), FadeOut(textA)) - b = TextMobject(r"$=\left[ \begin{array}{c} b_{1} \\ b_{2} \\ b_{3} \end{array}\right]$") - b.move_to(RIGHT) - textB = TextMobject("b") - textB.move_to(1.2*DOWN+1.1*RIGHT) - self.play(FadeIn(b),FadeIn(textB)) - - self.wait() - - self.play(FadeOut(text0), FadeOut(text1), FadeOut(text2), FadeOut(text3)) - - axb = TextMobject("Ax = b") - self.play(FadeIn(axb), FadeOut(textb), FadeOut(textB), FadeOut(b), FadeOut(A[1])) - - self.wait() \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/CSasImage.py b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/CSasImage.py deleted file mode 100644 index fbb3291..0000000 --- a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/CSasImage.py +++ /dev/null @@ -1,168 +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) - -class solution(LinearTransformationScene): - def construct(self): - - self.setup() - self.wait() - - o = TextMobject(r"Consider the vector space $R^2$") - o.move_to(2*DOWN) - o.scale(0.75) - o.add_background_rectangle() - self.play(Write(o)) - self.wait() - self.play(FadeOut(o)) - - A = TextMobject(r"Let $A$(= ",r"$\left[\begin{array}{c c} 1 & -1 \\ 1 & -1 \end{array}\right]$",r")denote the matrix the of this linear transformation.") - A.move_to(2*DOWN) - A.scale(0.75) - A.add_background_rectangle() - self.play(Write(A)) - matrix = [[1,-1],[1,-1]] - self.apply_matrix(matrix) - self.wait() - self.play(FadeOut(A)) - - o = TextMobject(r"This is the transformed vector space") - o.move_to(2*DOWN) - o.scale(0.75) - o.add_background_rectangle() - self.play(Write(o)) - self.wait() - self.play(FadeOut(o)) - - texti = TextMobject(r"$\left[\begin{array}{c}1\\1\end{array}\right]$") - textj = TextMobject(r"$\left[\begin{array}{c}-1\\-1\end{array}\right]$") - texti.set_color(GREEN) - textj.set_color(RED) - texti.scale(0.7) - textj.scale(0.7) - texti.move_to(1.35*RIGHT+0.5*UP) - textj.move_to(-(1.5*RIGHT+0.5*UP)) - - text1 = TextMobject("[") - text2 = TextMobject(r"$\begin{array}{c} 1 \\ 1 \end{array}$") - text3 = TextMobject(r"$\begin{array}{c} -1 \\ -1 \end{array}$") - text4 = TextMobject("]") - - text2.set_color(GREEN) - text3.set_color(RED) - - text1.scale(2) - text4.scale(2) - text2.scale(0.7) - text3.scale(0.7) - - text1.move_to(2.5*UP+6*LEFT) - text2.move_to(2.5*UP+5.75*LEFT) - text3.move_to(2.5*UP+5.25*LEFT) - text4.move_to(2.5*UP+5*LEFT) - - self.play(Write(texti), Write(textj)) - self.wait() - self.play(FadeIn(text1), Transform(texti,text2), Transform(textj,text3), FadeIn(text4)) - self.wait() - - o = TextMobject(r"Now, you can observe the Image of Linear Transformation") - o1 = TextMobject(r"and Column Space(i.e. span of columns of matrix $A$) are same") - o.move_to(2.5*DOWN) - o1.move_to(3*DOWN) - o.scale(0.75) - o1.scale(0.75) - o.add_background_rectangle() - o1.add_background_rectangle() - self.play(Write(o)) - self.play(Write(o1)) - self.wait() - self.play(FadeOut(o),FadeOut(o1)) - -class solution2nd(LinearTransformationScene): - def construct(self): - - self.setup() - self.wait() - - arrow1 = Arrow(start = ORIGIN,end = 2*DOWN+RIGHT) - arrow2 = Arrow(start = ORIGIN,end = UP+LEFT) - arrow3 = Arrow(start = ORIGIN,end = 3*UP+4*RIGHT) - arrow1.set_color(YELLOW) - arrow2.set_color(YELLOW) - arrow3.set_color(YELLOW) - arrow1.scale(1.3) - arrow2.scale(1.5) - arrow3.scale(1.1) - - self.play(ShowCreation(arrow1), ShowCreation(arrow2), ShowCreation(arrow3)) - - self.add_transformable_mobject(arrow1) - self.add_transformable_mobject(arrow2) - self.add_transformable_mobject(arrow3) - o = TextMobject(r"Consider any vector in the original vector space $R^2$") - o.move_to(2.5*DOWN) - o.scale(0.75) - o.add_background_rectangle() - self.play(Write(o)) - self.wait() - self.play(FadeOut(o)) - - A = TextMobject(r"Matrix the of this linear transformation is $A$(= ",r"$\left[\begin{array}{c c} 1 & -1 \\ 1 & -1 \end{array}\right]$",r") again.") - A.move_to(2*DOWN) - A.scale(0.75) - A.add_background_rectangle() - self.play(Write(A)) - matrix = [[1,-1],[1,-1]] - self.apply_matrix(matrix) - self.wait() - self.play(FadeOut(A)) - - o = TextMobject(r"This is the transformed vector space") - o.move_to(2*DOWN) - o.scale(0.75) - o.add_background_rectangle() - self.play(Write(o)) - self.wait() - self.play(FadeOut(o)) - - o = TextMobject(r"Each and every vector of original vector space $R^2$ will transform") - o1 = TextMobject(r"to this new vector space which is spanned by $\mathbf{CS}(A)$") - o.move_to(2.5*DOWN) - o1.move_to(3*DOWN) - o.scale(0.75) - o1.scale(0.75) - o.add_background_rectangle() - o1.add_background_rectangle() - self.play(Write(o)) - self.play(Write(o1)) - self.wait() - self.play(FadeOut(o)) - self.play(FadeOut(o1)) \ No newline at end of file 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 new file mode 100644 index 0000000..afe4f9a --- /dev/null +++ b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file10_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 diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file1_Axb.py b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file1_Axb.py new file mode 100755 index 0000000..95d1021 --- /dev/null +++ b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file1_Axb.py @@ -0,0 +1,77 @@ +from manimlib.imports import * + +class Axb(Scene): + + def construct(self): + + text0 = TextMobject("Linear System Of Equations") + text1 = TextMobject(r"$x_{1}+x_{2}+x_{3} =b_{1}$") + text2 = TextMobject(r"$x_{1}+2x_{2}+x_{3} =b_{2}$") + text3 = TextMobject(r"$x_{1}+x_{2}+3x_{3} =b_{3}$") + text0.move_to(UP*2+LEFT*2) + text0.set_color(DARK_BLUE) + text1.move_to(UP) + text2.move_to(ORIGIN) + text3.move_to(DOWN) + + text0.scale(0.75) + text1.scale(0.75) + text2.scale(0.75) + text3.scale(0.75) + self.play(Write(text0)) + self.play(Write(text1)) + self.play(Write(text2)) + self.play(Write(text3)) + self.play(ApplyMethod(text0.move_to,3*UP+LEFT*2), ApplyMethod(text1.move_to,2.5*UP), ApplyMethod(text2.move_to,2*UP), ApplyMethod(text3.move_to,1.5*UP)) + + A = TextMobject(r"$\left( \begin{array}{c c c} 1 & 1 & 1 \\ 1 & 2 & 1 \\ 1 & 1 & 3 \end{array}\right) \left[ \begin{array} {c} x_{1} \\ x_{2} \\ x_{3} \end{array}\right] =$", r"$\left[ \begin{array}{c} x_{1}+x_{2}+x_{3} \\ x_{1}+2x_{2}+x_{3} \\ x_{1}+x_{2}+3x_{3} \end{array}\right]$") + A.scale(0.75) + self.play(FadeIn(A)) + + textA = TextMobject("A") + textx = TextMobject("x") + textb = TextMobject("Ax") + + textA.move_to(DOWN+3*LEFT) + textx.move_to(1.1*DOWN+0.5*LEFT) + textb.move_to(DOWN-2*LEFT) + + self.play(Write(textA), Write(textx), Write(textb)) + + circle1 = Circle(radius = 0.24) + circle2 = Circle(radius = 0.24) + square = Square(side_length = 0.6) + + circle1.move_to(UP*0.5+LEFT*3.05) + circle2.move_to(UP*0.4+LEFT*0.5) + square.move_to(UP*0.4+RIGHT*1.3) + + self.play(FadeIn(circle1), FadeIn(circle2),FadeIn(square)) + + self.play(ApplyMethod(circle1.move_to,UP*0.5+LEFT*2.45), ApplyMethod(circle2.move_to,LEFT*0.5), ApplyMethod(square.move_to,UP*0.4+RIGHT*2.2)) + self.play(ApplyMethod(circle1.move_to,UP*0.5+LEFT*1.85), ApplyMethod(circle2.move_to,DOWN*0.5+LEFT*0.5), ApplyMethod(square.move_to,UP*0.4+RIGHT*3.1)) + + self.play(ApplyMethod(circle1.move_to,LEFT*3.05), ApplyMethod(circle2.move_to,UP*0.4+LEFT*0.5), ApplyMethod(square.move_to,RIGHT*1.3)) + self.play(ApplyMethod(circle1.move_to,LEFT*2.45), ApplyMethod(circle2.move_to,LEFT*0.5), ApplyMethod(square.move_to,RIGHT*2.2)) + self.play(ApplyMethod(circle1.move_to,LEFT*1.85), ApplyMethod(circle2.move_to,DOWN*0.5+LEFT*0.5), ApplyMethod(square.move_to,RIGHT*3.1)) + + self.play(ApplyMethod(circle1.move_to,0.4*DOWN+LEFT*3.05), ApplyMethod(circle2.move_to,UP*0.4+LEFT*0.5), ApplyMethod(square.move_to,0.4*DOWN+RIGHT*1.3)) + self.play(ApplyMethod(circle1.move_to,0.4*DOWN+LEFT*2.45), ApplyMethod(circle2.move_to,LEFT*0.5), ApplyMethod(square.move_to,0.4*DOWN+RIGHT*2.2)) + self.play(ApplyMethod(circle1.move_to,0.4*DOWN+LEFT*1.85), ApplyMethod(circle2.move_to,DOWN*0.5+LEFT*0.5), ApplyMethod(square.move_to,0.4*DOWN+RIGHT*3.1)) + + self.play(FadeOut(circle1), FadeOut(circle2), FadeOut(square)) + self.play(FadeOut(A[0]), ApplyMethod(A[1].move_to,2*LEFT),ApplyMethod(textb.move_to,DOWN+1.7*LEFT), FadeOut(textx), FadeOut(textA)) + b = TextMobject(r"$=\left[ \begin{array}{c} b_{1} \\ b_{2} \\ b_{3} \end{array}\right]$") + b.move_to(RIGHT) + textB = TextMobject("b") + textB.move_to(1.2*DOWN+1.1*RIGHT) + self.play(FadeIn(b),FadeIn(textB)) + + self.wait() + + self.play(FadeOut(text0), FadeOut(text1), FadeOut(text2), FadeOut(text3)) + + axb = TextMobject("Ax = b") + self.play(FadeIn(axb), FadeOut(textb), FadeOut(textB), FadeOut(b), FadeOut(A[1])) + + self.wait() \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file1_Column_Space.gif b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file1_Column_Space.gif deleted file mode 100644 index 7d8d2e1..0000000 Binary files a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file1_Column_Space.gif and /dev/null differ diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file1_Column_Space.py b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file1_Column_Space.py deleted file mode 100644 index afe4f9a..0000000 --- a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file1_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/file2_CSasImage.py b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file2_CSasImage.py new file mode 100644 index 0000000..70547cb --- /dev/null +++ b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file2_CSasImage.py @@ -0,0 +1,169 @@ +from manimlib.imports import * + +class Column_Space(Scene): + def construct(self): + + A = TextMobject(r"$A = $",r"$\left( \begin{array}{c c} 1 & 2 \\ 3 & 4 \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 \\ 3 \end{array} \right)$",r"$+x_{2}$",r"$ \left( \begin{array}{c} 2 \\ 4\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.scale(0.75) + + self.play(Write(CS_A),run_time = 2) + + arrow1 = Arrow(start = 1.25*UP,end = (0.25*DOWN+1.75*LEFT+0.25*DOWN+1.2*RIGHT)/2) + arrow3 = Arrow(start = 1.25*UP+0.75*RIGHT,end = (0.25*DOWN+2.9*RIGHT+0.25*DOWN)/2) + + arrow1.scale(1.5) + arrow3.scale(1.5) + + Defn = TextMobject("Linear Combination of Columns of Matrix") + Defn.move_to(3*DOWN) + + self.play(Write(Defn), ShowCreation(arrow1), ShowCreation(arrow3),run_time = 1) + self.wait(1) + +class solution(LinearTransformationScene): + def construct(self): + + self.setup() + self.wait() + + o = TextMobject(r"Consider the vector space $R^2$") + o.move_to(2*DOWN) + o.scale(0.75) + o.add_background_rectangle() + self.play(Write(o)) + self.wait() + self.play(FadeOut(o)) + + A = TextMobject(r"Let $A$ be ",r"$\left[\begin{array}{c c} 1 & -1 \\ 1 & -1 \end{array}\right]$",r". $A$ denotes the matrix the of this linear transformation.") + A.move_to(2*DOWN) + A.scale(0.75) + A.add_background_rectangle() + self.play(Write(A)) + matrix = [[1,-1],[1,-1]] + self.apply_matrix(matrix) + self.wait() + self.play(FadeOut(A)) + + o = TextMobject(r"This is the transformed vector space") + o.move_to(2*DOWN) + o.scale(0.75) + o.add_background_rectangle() + self.play(Write(o)) + self.wait() + self.play(FadeOut(o)) + + texti = TextMobject(r"$\left[\begin{array}{c}1\\1\end{array}\right]$") + textj = TextMobject(r"$\left[\begin{array}{c}-1\\-1\end{array}\right]$") + texti.set_color(GREEN) + textj.set_color(RED) + texti.scale(0.7) + textj.scale(0.7) + texti.move_to(1.35*RIGHT+0.5*UP) + textj.move_to(-(1.5*RIGHT+0.5*UP)) + + text1 = TextMobject("[") + text2 = TextMobject(r"$\begin{array}{c} 1 \\ 1 \end{array}$") + text3 = TextMobject(r"$\begin{array}{c} -1 \\ -1 \end{array}$") + text4 = TextMobject("]") + + text2.set_color(GREEN) + text3.set_color(RED) + + text1.scale(2) + text4.scale(2) + text2.scale(0.7) + text3.scale(0.7) + + text1.move_to(2.5*UP+6*LEFT) + text2.move_to(2.5*UP+5.75*LEFT) + text3.move_to(2.5*UP+5.25*LEFT) + text4.move_to(2.5*UP+5*LEFT) + + self.play(Write(texti), Write(textj)) + self.wait() + self.play(FadeIn(text1), Transform(texti,text2), Transform(textj,text3), FadeIn(text4)) + self.wait() + + o = TextMobject(r"Now, you can observe the Image of Linear Transformation") + o1 = TextMobject(r"and Column Space(i.e. span of columns of matrix $A$) are same") + o.move_to(2.5*DOWN) + o1.move_to(3*DOWN) + o.scale(0.75) + o1.scale(0.75) + o.add_background_rectangle() + o1.add_background_rectangle() + self.play(Write(o)) + self.play(Write(o1)) + self.wait() + self.play(FadeOut(o),FadeOut(o1)) + +class solution2nd(LinearTransformationScene): + def construct(self): + + self.setup() + self.wait() + + arrow1 = Arrow(start = ORIGIN,end = 2*DOWN+RIGHT) + arrow2 = Arrow(start = ORIGIN,end = UP+LEFT) + arrow3 = Arrow(start = ORIGIN,end = 3*UP+4*RIGHT) + arrow1.set_color(YELLOW) + arrow2.set_color(ORANGE) + arrow3.set_color(PURPLE) + arrow1.scale(1.3) + arrow2.scale(1.5) + arrow3.scale(1.1) + + self.play(ShowCreation(arrow1), ShowCreation(arrow2), ShowCreation(arrow3)) + + self.add_transformable_mobject(arrow1) + self.add_transformable_mobject(arrow2) + self.add_transformable_mobject(arrow3) + o = TextMobject(r"Consider any vector in the original vector space $R^2$") + o.move_to(2.5*DOWN) + o.scale(0.75) + o.add_background_rectangle() + self.play(Write(o)) + self.wait() + self.play(FadeOut(o)) + + A = TextMobject(r"Let the matrix the of this linear transformation be $A$ =",r"$\left[\begin{array}{c c} 1 & -1 \\ 1 & -1 \end{array}\right]$",r" again.") + A.move_to(2*DOWN) + A.scale(0.75) + A.add_background_rectangle() + self.play(Write(A)) + matrix = [[1,-1],[1,-1]] + self.apply_matrix(matrix) + self.wait() + self.play(FadeOut(A)) + + o = TextMobject(r"This is the transformed vector space") + o.move_to(2*DOWN) + o.scale(0.75) + o.add_background_rectangle() + self.play(Write(o)) + self.wait() + self.play(FadeOut(o)) + + o = TextMobject(r"Each and every vector of original vector space $R^2$ will transform") + o1 = TextMobject(r"to this new vector space which is spanned by $\mathbf{CS}(A)$") + o.move_to(2.5*DOWN) + o1.move_to(3*DOWN) + o.scale(0.75) + o1.scale(0.75) + o.add_background_rectangle() + o1.add_background_rectangle() + self.play(Write(o)) + self.play(Write(o1)) + self.wait() + self.play(FadeOut(o)) + self.play(FadeOut(o1)) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file2_Row_Space.py b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file2_Row_Space.py deleted file mode 100644 index b16a32a..0000000 --- a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file2_Row_Space.py +++ /dev/null @@ -1,145 +0,0 @@ -from manimlib.imports import * - -class Row_Space(Scene): - def construct(self): - - Heading = TextMobject("Row Space") - defn1 = TextMobject("Definition 1: Row Space of a matrix is the linear combination of the rows of that matrix.") - defn2 = TextMobject("Definition 2: It is a vector space generated by a linear combination of the columns of $A^{T}$.") - equivalent = TextMobject(r"Definition 1 $\equiv$ Definition 2") - - Heading.move_to(2*UP) - Heading.set_color(color = DARK_BLUE) - - defn1.move_to(UP) - defn1.scale(0.75) - - defn2.scale(0.75) - - equivalent.move_to(DOWN) - - self.play(Write(Heading)) - self.play(Write(defn1)) - self.play(Write(defn2)) - self.play(Write(equivalent)) - - self.wait(2) - self.play(FadeOut(Heading),FadeOut(defn1),FadeOut(defn2),ApplyMethod(equivalent.move_to,2*UP)) - - how = TextMobject("Let us see, How?") - how.move_to(UP) - self.play(Write(how)) - self.play(FadeOut(equivalent),FadeOut(how)) - - 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+3*LEFT) - A[1].set_color(color = DARK_BLUE) - A.scale(0.80) - - self.play(Write(A)) - - rows = TextMobject(r"Rows of A $\rightarrow$", - r"$\left( \begin{array}{c c c} 1 & 2 & 1 \end{array} \right)$,", - r"$ \left( \begin{array}{c c c} 1 & 3 & 1 \end{array} \right)$,", - r"$\left( \begin{array}{c c c} 2 & 1 & 4 \end{array} \right)$,", - r"$ \left( \begin{array}{c c c} 3 & 2 & 3 \end{array} \right)$") - rows.scale(0.75) - rows[1:5].set_color(DARK_BLUE) - self.play(Write(rows)) - - ac_defn1 = TextMobject("According to Definition 1 : ") - ac_defn1.move_to(DOWN) - - RS_A = TextMobject(r"Row Space of $A = x_{1}$", - r"$\left( \begin{array}{c c c} 1 & 2 & 1 \end{array} \right)$", - r"$+x_{2}$", - r"$ \left( \begin{array}{c c c} 1 & 3 & 1 \end{array} \right)$", - r"$ + x_{3}$", - r"$\left( \begin{array}{c c c} 2 & 1 & 4 \end{array} \right)$", - r"$+x_{4}$", - r"$ \left( \begin{array}{c c c} 3 & 2 & 3 \end{array} \right)$") - RS_A.move_to(DOWN+DOWN) - RS_A[6].move_to(2*DOWN+DOWN) - RS_A[7].move_to(2*DOWN+2*RIGHT+DOWN) - RS_A[1].set_color(color = DARK_BLUE) - RS_A[3].set_color(color = DARK_BLUE) - RS_A[5].set_color(color = DARK_BLUE) - RS_A[7].set_color(color = DARK_BLUE) - RS_A.scale(0.75) - - self.play(FadeOut(rows[0]),Transform(rows[1],RS_A[1]),Transform(rows[2],RS_A[3]),Transform(rows[3],RS_A[5]),Transform(rows[4],RS_A[7])) - self.play(FadeIn(ac_defn1), Write(RS_A)) - self.wait(1) - - self.play(FadeOut(rows[1]), FadeOut(rows[2]), FadeOut(rows[3]), FadeOut(rows[4]), FadeOut(RS_A), FadeOut(ac_defn1)) - - A_T = TextMobject(r"$A^{T} = $",r"$\left( \begin{array}{c c c c} 1 & 1 & 2 & 3 \\ 2 & 3 & 1 & 2 \\ 1 & 1 & 4 & 3 \end{array} \right)$") - A_T.move_to(2*UP+3*RIGHT) - A_T[1].set_color(color = DARK_BLUE) - A_T.scale(0.80) - - self.play(Write(A_T)) - - change1 = TextMobject(r"Rows of $A\equiv$ Columns of $A^{T}$") - change2 = TextMobject(r"Columns of $A\equiv$ Rows of $A^{T}$") - change2.move_to(DOWN) - - change3 = TextMobject(r"Row Space of $A$ = Linear Combination of",r"Rows","of",r"A") - change3.move_to(2*DOWN) - change3[1].set_color(DARK_BLUE) - change3[3].set_color(DARK_BLUE) - - self.play(Write(change1)) - self.play(Write(change2)) - self.play(Write(change3)) - - columns = TextMobject("Columns") - columns.scale(0.6) - columns.set_color(DARK_BLUE) - columns.move_to(2*DOWN+4.1*RIGHT) - - a = TextMobject(r"$A^{T}$") - a.set_color(DARK_BLUE) - a.move_to(1.95*DOWN+5.6*RIGHT) - - self.wait(0.5) - - self.play(Transform(change3[1],columns), Transform(change3[3],a)) - - equal = TextMobject(r"= Column Space($A^{T}$)") - equal.move_to(3*DOWN+0.5*RIGHT) - - self.play(Write(equal)) - - self.play(FadeOut(A_T), FadeOut(change1), FadeOut(change2), FadeOut(change3), FadeOut(A), FadeOut(equal)) - - ac_defn1.move_to(3*UP) - RS_A.move_to(1.5*UP) - RS_A[6].move_to(UP) - RS_A[7].move_to(UP+1.5*RIGHT) - - self.play(Write(RS_A),FadeIn(ac_defn1)) - - CS_AT = TextMobject(r"Row Space of $A = x_{1}$", - r"$\left( \begin{array}{c} 1 \\ 2 \\ 1 \end{array} \right)$", - r"$+x_{2}$", - r"$ \left( \begin{array}{c} 1 \\ 3 \\ 1 \end{array} \right)$", - r"$ + x_{3}$", - r"$\left( \begin{array}{c} 2 \\ 1 \\ 4 \end{array} \right)$", - r"$+x_{4}$", - r"$ \left( \begin{array}{c} 3 \\ 2 \\ 3 \end{array} \right)$") - CS_AT.move_to(1.5*DOWN) - CS_AT[1].set_color(color = DARK_BLUE) - CS_AT[3].set_color(color = DARK_BLUE) - CS_AT[5].set_color(color = DARK_BLUE) - CS_AT[7].set_color(color = DARK_BLUE) - CS_AT.scale(0.75) - - ac_defn2 = TextMobject("According to Definition 2 : ") - equivalent = TextMobject(r"Hence, Definition 1 $\equiv$ Definition 2") - equivalent.move_to(3*DOWN) - - self.play(Write(CS_AT),FadeIn(ac_defn2)) - self.play(Write(equivalent)) - - self.wait() diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file3_solution.py b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file3_solution.py new file mode 100644 index 0000000..eb310f3 --- /dev/null +++ b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file3_solution.py @@ -0,0 +1,77 @@ +from manimlib.imports import * +class solution(LinearTransformationScene): + def construct(self): + + self.setup() + self.wait() + + o = TextMobject(r"This is the original vector space $R^2$ (before Linear Transformation)") + o.move_to(3*DOWN) + o.scale(0.75) + o.add_background_rectangle() + self.play(Write(o)) + self.wait() + self.play(FadeOut(o)) + + A = TextMobject(r"Consider the matrix the of this linear transformation $A$ = $\left[\begin{array}{c c} 1 & -1 \\ 1 & -1 \end{array}\right]$") + A.move_to(3*DOWN) + A.scale(0.75) + A.add_background_rectangle() + self.play(Write(A)) + matrix = [[1,-1],[1,-1]] + self.apply_matrix(matrix) + self.wait() + self.play(FadeOut(A)) + + o = TextMobject(r"This is the transformed vector space") + o.move_to(3*DOWN) + o.scale(0.75) + o.add_background_rectangle() + self.play(Write(o)) + self.wait() + self.play(FadeOut(o)) + + arrow2 = Arrow(start = ORIGIN, end = 2*DOWN+2*LEFT) + arrow2.set_color(PURPLE) + arrow2.scale(1.2) + self.play(ShowCreation(arrow2)) + self.wait() + + o1 = TextMobject("If the ","vector b"," lies in the transformed vector space") + o2 = TextMobject("(the line) then the solution exist") + o1.move_to(2.5*DOWN+2*RIGHT) + o1[1].set_color(PURPLE) + o2.move_to(3*DOWN+2.5*RIGHT) + o1.scale(0.75) + o2.scale(0.75) + o1.add_background_rectangle() + o2.add_background_rectangle() + self.play(Write(o1)) + self.play(Write(o2)) + self.wait() + self.play(FadeOut(o1), FadeOut(o2)) + + self.play(FadeOut(arrow2)) + + arrow1 = Arrow(start = ORIGIN, end = 2*UP+RIGHT) + arrow1.set_color(ORANGE) + arrow1.scale(1.3) + self.play(ShowCreation(arrow1)) + self.wait() + + o1 = TextMobject("If the ","vector b"," does lies in the transformed") + o2 = TextMobject("vector space then the does not solution exist") + o1.move_to(2.5*DOWN+2*RIGHT) + o1[1].set_color(ORANGE) + o2.move_to(3*DOWN+2.5*RIGHT) + o1.scale(0.75) + o2.scale(0.75) + o1.add_background_rectangle() + o2.add_background_rectangle() + self.play(Write(o1)) + self.play(Write(o2)) + self.wait() + self.play(FadeOut(o1), FadeOut(o2)) + + self.play(FadeOut(arrow1)) + \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file4_null_space.py b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file4_null_space.py new file mode 100644 index 0000000..3c52677 --- /dev/null +++ b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file4_null_space.py @@ -0,0 +1,91 @@ +from manimlib.imports import * +class null_space(LinearTransformationScene): + def construct(self): + + self.setup() + self.wait() + + o = TextMobject(r"This is the original vector space $R^2$(before Linear Transformation)") + o.move_to(3*DOWN) + o.scale(0.75) + o.add_background_rectangle() + self.play(Write(o)) + self.wait() + self.play(FadeOut(o)) + + o1 = TextMobject("Consider a set of vectors which are linear") + o2 = TextMobject(r"span of a particular vector $\left(\begin{array}{c} 1 \\ 1 \end{array}\right)$") + o1.move_to(2*DOWN+3*RIGHT) + o2.move_to(2.75*DOWN+3*RIGHT) + o1.scale(0.7) + o2.scale(0.7) + o1.add_background_rectangle() + o2.add_background_rectangle() + self.play(Write(o1)) + self.play(Write(o2)) + + arrow = Arrow(start = ORIGIN, end = UP+RIGHT) + arrow1 = Arrow(start = ORIGIN, end = 2*(UP+RIGHT)) + arrow2 = Arrow(start = ORIGIN, end = 3*(UP+RIGHT)) + arrow3 = Arrow(start = ORIGIN, end = 4*(UP+RIGHT)) + arrow4 = Arrow(start = ORIGIN, end = DOWN+LEFT) + arrow5 = Arrow(start = ORIGIN, end = 2*(DOWN+LEFT)) + arrow6 = Arrow(start = ORIGIN, end = 3*(DOWN+LEFT)) + arrow7 = Arrow(start = ORIGIN, end = 4*(DOWN+LEFT)) + + arrow.scale(1.5) + arrow1.scale(1.2) + arrow2.scale(1.15) + arrow3.scale(1.1) + arrow4.scale(1.5) + arrow5.scale(1.2) + arrow6.scale(1.15) + arrow7.scale(1.1) + + self.play(ShowCreation(arrow), + ShowCreation(arrow1), + ShowCreation(arrow2), + ShowCreation(arrow3), + ShowCreation(arrow4), + ShowCreation(arrow5), + ShowCreation(arrow6), + ShowCreation(arrow7), + ) + + self.wait(2) + self.play(FadeOut(o1), FadeOut(o2)) + + self.add_transformable_mobject(arrow) + self.add_transformable_mobject(arrow1) + self.add_transformable_mobject(arrow2) + self.add_transformable_mobject(arrow3) + self.add_transformable_mobject(arrow4) + self.add_transformable_mobject(arrow5) + self.add_transformable_mobject(arrow6) + self.add_transformable_mobject(arrow7) + + o1 = TextMobject("Notice, entire set of vectors which belongs to the vector") + o2 = TextMobject(r"subspace(Linear Span of $\left(\begin{array}{c} 1 \\ 1 \end{array}\right)$) transforms to zero") + o1.move_to(2*DOWN+2.5*RIGHT) + o2.move_to(2.75*DOWN+2.5*RIGHT) + o1.scale(0.7) + o2.scale(0.7) + o1.add_background_rectangle() + o2.add_background_rectangle() + self.play(Write(o1)) + self.play(Write(o2)) + self.wait() + + matrix = [[1,-1],[1,-1]] + self.apply_matrix(matrix) + self.wait() + + self.play(FadeOut(o1), FadeOut(o2)) + + o = TextMobject(r"Hence, the vector space formed by linear span of $\left(\begin{array}{c} 1 \\ 1 \end{array}\right)$ is the null space of $A$") + o.move_to(3*DOWN) + o.scale(0.75) + o.add_background_rectangle() + self.play(Write(o)) + self.wait(2) + self.play(FadeOut(o), FadeOut(arrow), FadeOut(arrow1), FadeOut(arrow2), FadeOut(arrow3), FadeOut(arrow4), FadeOut(arrow5), FadeOut(arrow6), FadeOut(arrow7)) diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file5_Row_Space_part_1.py b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file5_Row_Space_part_1.py new file mode 100644 index 0000000..5259eb4 --- /dev/null +++ b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file5_Row_Space_part_1.py @@ -0,0 +1,68 @@ +from manimlib.imports import * +class LS(Scene): + def construct(self): + text1 = TextMobject(r"Consider a matrix $A =$") + text2 = TextMobject(r"[") + text3 = TextMobject(r"$\begin{array}{c c} 1 & -2\end{array}$") + text4 = TextMobject(r"$\begin{array}{c c} 1 & -1\end{array}$") + text5 = TextMobject(r"]") + + text2.scale(2) + text5.scale(2) + + text1.set_color(DARK_BLUE) + text2.set_color(DARK_BLUE) + text3.set_color(PURPLE) + text4.set_color(YELLOW) + text5.set_color(DARK_BLUE) + + text1.move_to(3.5*LEFT+3*UP+2*RIGHT) + text2.move_to(0.75*LEFT+3*UP+2*RIGHT) + text3.move_to(3.25*UP+2*RIGHT) + text4.move_to(2.75*UP+2*RIGHT) + text5.move_to(0.75*RIGHT+3*UP+2*RIGHT) + + self.play(FadeIn(text1), FadeIn(text2), FadeIn(text3), FadeIn(text4), FadeIn(text5)) + self.wait() + + ttext1 = TextMobject(r"$A^T =$") + ttext2 = TextMobject(r"[") + ttext3 = TextMobject(r"$\begin{array}{c} 1 \\ -2\end{array}$") + ttext4 = TextMobject(r"$\begin{array}{c} 1 \\ -1\end{array}$") + ttext5 = TextMobject(r"]") + + ttext2.scale(2) + ttext5.scale(2) + + ttext1.set_color(DARK_BLUE) + ttext2.set_color(DARK_BLUE) + ttext3.set_color(PURPLE) + ttext4.set_color(YELLOW) + ttext5.set_color(DARK_BLUE) + + ttext1.move_to(2*LEFT+1.5*UP+2*RIGHT) + ttext2.move_to(1*LEFT+1.5*UP+2*RIGHT) + ttext3.move_to(0.5*LEFT+1.5*UP+2*RIGHT) + ttext4.move_to(0.5*RIGHT+1.5*UP+2*RIGHT) + ttext5.move_to(1*RIGHT+1.5*UP+2*RIGHT) + + self.play(FadeIn(ttext1), FadeIn(ttext2), FadeIn(ttext3), FadeIn(ttext4), FadeIn(ttext5)) + + rtext = TextMobject(r"Row Space of $A$ = Column Space of $A^T = a_1$",r"$\left[\begin{array}{c} 1 \\ -2\end{array}\right]$",r"$+a_2$",r"$\left[\begin{array}{c} 1 \\ -1\end{array}\right]$") + rtext[1].set_color(PURPLE) + rtext[3].set_color(YELLOW) + rtext.move_to(2*DOWN+1.5*LEFT) + rtext.scale(0.75) + + self.play(Write(rtext)) + self.wait() + + arrow1 = Arrow(start = 1.5*RIGHT+UP, end = 1.25*(DOWN+RIGHT)) + arrow2 = Arrow(start = 2.5*RIGHT+UP, end = 1.25*DOWN+3.25*RIGHT) + arrow1.scale(1.25) + arrow2.scale(1.25) + arrow1.set_color(PURPLE) + arrow2.set_color(YELLOW) + + self.play(ShowCreation(arrow1), ShowCreation(arrow2)) + self.wait(2) diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file6_Row_Space_part_2.py b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file6_Row_Space_part_2.py new file mode 100644 index 0000000..b16a32a --- /dev/null +++ b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file6_Row_Space_part_2.py @@ -0,0 +1,145 @@ +from manimlib.imports import * + +class Row_Space(Scene): + def construct(self): + + Heading = TextMobject("Row Space") + defn1 = TextMobject("Definition 1: Row Space of a matrix is the linear combination of the rows of that matrix.") + defn2 = TextMobject("Definition 2: It is a vector space generated by a linear combination of the columns of $A^{T}$.") + equivalent = TextMobject(r"Definition 1 $\equiv$ Definition 2") + + Heading.move_to(2*UP) + Heading.set_color(color = DARK_BLUE) + + defn1.move_to(UP) + defn1.scale(0.75) + + defn2.scale(0.75) + + equivalent.move_to(DOWN) + + self.play(Write(Heading)) + self.play(Write(defn1)) + self.play(Write(defn2)) + self.play(Write(equivalent)) + + self.wait(2) + self.play(FadeOut(Heading),FadeOut(defn1),FadeOut(defn2),ApplyMethod(equivalent.move_to,2*UP)) + + how = TextMobject("Let us see, How?") + how.move_to(UP) + self.play(Write(how)) + self.play(FadeOut(equivalent),FadeOut(how)) + + 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+3*LEFT) + A[1].set_color(color = DARK_BLUE) + A.scale(0.80) + + self.play(Write(A)) + + rows = TextMobject(r"Rows of A $\rightarrow$", + r"$\left( \begin{array}{c c c} 1 & 2 & 1 \end{array} \right)$,", + r"$ \left( \begin{array}{c c c} 1 & 3 & 1 \end{array} \right)$,", + r"$\left( \begin{array}{c c c} 2 & 1 & 4 \end{array} \right)$,", + r"$ \left( \begin{array}{c c c} 3 & 2 & 3 \end{array} \right)$") + rows.scale(0.75) + rows[1:5].set_color(DARK_BLUE) + self.play(Write(rows)) + + ac_defn1 = TextMobject("According to Definition 1 : ") + ac_defn1.move_to(DOWN) + + RS_A = TextMobject(r"Row Space of $A = x_{1}$", + r"$\left( \begin{array}{c c c} 1 & 2 & 1 \end{array} \right)$", + r"$+x_{2}$", + r"$ \left( \begin{array}{c c c} 1 & 3 & 1 \end{array} \right)$", + r"$ + x_{3}$", + r"$\left( \begin{array}{c c c} 2 & 1 & 4 \end{array} \right)$", + r"$+x_{4}$", + r"$ \left( \begin{array}{c c c} 3 & 2 & 3 \end{array} \right)$") + RS_A.move_to(DOWN+DOWN) + RS_A[6].move_to(2*DOWN+DOWN) + RS_A[7].move_to(2*DOWN+2*RIGHT+DOWN) + RS_A[1].set_color(color = DARK_BLUE) + RS_A[3].set_color(color = DARK_BLUE) + RS_A[5].set_color(color = DARK_BLUE) + RS_A[7].set_color(color = DARK_BLUE) + RS_A.scale(0.75) + + self.play(FadeOut(rows[0]),Transform(rows[1],RS_A[1]),Transform(rows[2],RS_A[3]),Transform(rows[3],RS_A[5]),Transform(rows[4],RS_A[7])) + self.play(FadeIn(ac_defn1), Write(RS_A)) + self.wait(1) + + self.play(FadeOut(rows[1]), FadeOut(rows[2]), FadeOut(rows[3]), FadeOut(rows[4]), FadeOut(RS_A), FadeOut(ac_defn1)) + + A_T = TextMobject(r"$A^{T} = $",r"$\left( \begin{array}{c c c c} 1 & 1 & 2 & 3 \\ 2 & 3 & 1 & 2 \\ 1 & 1 & 4 & 3 \end{array} \right)$") + A_T.move_to(2*UP+3*RIGHT) + A_T[1].set_color(color = DARK_BLUE) + A_T.scale(0.80) + + self.play(Write(A_T)) + + change1 = TextMobject(r"Rows of $A\equiv$ Columns of $A^{T}$") + change2 = TextMobject(r"Columns of $A\equiv$ Rows of $A^{T}$") + change2.move_to(DOWN) + + change3 = TextMobject(r"Row Space of $A$ = Linear Combination of",r"Rows","of",r"A") + change3.move_to(2*DOWN) + change3[1].set_color(DARK_BLUE) + change3[3].set_color(DARK_BLUE) + + self.play(Write(change1)) + self.play(Write(change2)) + self.play(Write(change3)) + + columns = TextMobject("Columns") + columns.scale(0.6) + columns.set_color(DARK_BLUE) + columns.move_to(2*DOWN+4.1*RIGHT) + + a = TextMobject(r"$A^{T}$") + a.set_color(DARK_BLUE) + a.move_to(1.95*DOWN+5.6*RIGHT) + + self.wait(0.5) + + self.play(Transform(change3[1],columns), Transform(change3[3],a)) + + equal = TextMobject(r"= Column Space($A^{T}$)") + equal.move_to(3*DOWN+0.5*RIGHT) + + self.play(Write(equal)) + + self.play(FadeOut(A_T), FadeOut(change1), FadeOut(change2), FadeOut(change3), FadeOut(A), FadeOut(equal)) + + ac_defn1.move_to(3*UP) + RS_A.move_to(1.5*UP) + RS_A[6].move_to(UP) + RS_A[7].move_to(UP+1.5*RIGHT) + + self.play(Write(RS_A),FadeIn(ac_defn1)) + + CS_AT = TextMobject(r"Row Space of $A = x_{1}$", + r"$\left( \begin{array}{c} 1 \\ 2 \\ 1 \end{array} \right)$", + r"$+x_{2}$", + r"$ \left( \begin{array}{c} 1 \\ 3 \\ 1 \end{array} \right)$", + r"$ + x_{3}$", + r"$\left( \begin{array}{c} 2 \\ 1 \\ 4 \end{array} \right)$", + r"$+x_{4}$", + r"$ \left( \begin{array}{c} 3 \\ 2 \\ 3 \end{array} \right)$") + CS_AT.move_to(1.5*DOWN) + CS_AT[1].set_color(color = DARK_BLUE) + CS_AT[3].set_color(color = DARK_BLUE) + CS_AT[5].set_color(color = DARK_BLUE) + CS_AT[7].set_color(color = DARK_BLUE) + CS_AT.scale(0.75) + + ac_defn2 = TextMobject("According to Definition 2 : ") + equivalent = TextMobject(r"Hence, Definition 1 $\equiv$ Definition 2") + equivalent.move_to(3*DOWN) + + self.play(Write(CS_AT),FadeIn(ac_defn2)) + self.play(Write(equivalent)) + + self.wait() diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file7_Row_space_Orthogonal_Complements.py b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file7_Row_space_Orthogonal_Complements.py new file mode 100644 index 0000000..c81d370 --- /dev/null +++ b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file7_Row_space_Orthogonal_Complements.py @@ -0,0 +1,150 @@ +from manimlib.imports import * +class row_space(LinearTransformationScene): + def construct(self): + + self.setup() + self.wait() + + o = TextMobject(r"This is the original vector space $R^2$(before Linear Transformation)") + o.move_to(DOWN) + o.scale(0.75) + o.add_background_rectangle() + self.play(Write(o)) + self.wait() + self.play(FadeOut(o)) + + o1 = TextMobject("Consider a set of vectors which are linear") + o2 = TextMobject(r"span of a $\left(\begin{array}{c} 1 \\ 1 \end{array}\right)$i.e. the null space.") + o1.move_to(2*DOWN+3*RIGHT) + o2.move_to(2.75*DOWN+3*RIGHT) + o1.scale(0.7) + o2.scale(0.7) + o1.add_background_rectangle() + o2.add_background_rectangle() + self.play(Write(o1)) + self.play(Write(o2)) + + arrow = Arrow(start = ORIGIN, end = UP+RIGHT) + arrow.set_color(YELLOW) + arrow1 = Arrow(start = ORIGIN, end = 2*(UP+RIGHT)) + arrow1.set_color(YELLOW) + arrow2 = Arrow(start = ORIGIN, end = 3*(UP+RIGHT)) + arrow2.set_color(YELLOW) + arrow3 = Arrow(start = ORIGIN, end = 4*(UP+RIGHT)) + arrow3.set_color(YELLOW) + arrow4 = Arrow(start = ORIGIN, end = DOWN+LEFT) + arrow4.set_color(YELLOW) + arrow5 = Arrow(start = ORIGIN, end = 2*(DOWN+LEFT)) + arrow5.set_color(YELLOW) + arrow6 = Arrow(start = ORIGIN, end = 3*(DOWN+LEFT)) + arrow6.set_color(YELLOW) + arrow7 = Arrow(start = ORIGIN, end = 4*(DOWN+LEFT)) + arrow7.set_color(YELLOW) + + arrow.scale(1.5) + arrow1.scale(1.2) + arrow2.scale(1.15) + arrow3.scale(1.1) + arrow4.scale(1.5) + arrow5.scale(1.2) + arrow6.scale(1.15) + arrow7.scale(1.1) + + self.play(ShowCreation(arrow), + ShowCreation(arrow1), + ShowCreation(arrow2), + ShowCreation(arrow3), + ShowCreation(arrow4), + ShowCreation(arrow5), + ShowCreation(arrow6), + ShowCreation(arrow7), + ) + + self.wait(2) + self.play(FadeOut(o1), FadeOut(o2)) + + o1 = TextMobject("Consider a set of vectors which are linear") + o2 = TextMobject(r"span of a $\left(\begin{array}{c} 1 \\ -1 \end{array}\right)$i.e. the row space.") + o1.move_to(2*DOWN+3*RIGHT) + o2.move_to(2.75*DOWN+3*RIGHT) + o1.scale(0.7) + o2.scale(0.7) + o1.add_background_rectangle() + o2.add_background_rectangle() + self.play(Write(o1)) + self.play(Write(o2)) + + rarrow = Arrow(start = ORIGIN, end = -UP+RIGHT) + rarrow.set_color(PURPLE) + rarrow1 = Arrow(start = ORIGIN, end = 2*(-UP+RIGHT)) + rarrow1.set_color(PURPLE) + rarrow2 = Arrow(start = ORIGIN, end = 3*(-UP+RIGHT)) + rarrow2.set_color(PURPLE) + rarrow3 = Arrow(start = ORIGIN, end = 4*(-UP+RIGHT)) + rarrow3.set_color(PURPLE) + rarrow4 = Arrow(start = ORIGIN, end = -DOWN+LEFT) + rarrow4.set_color(PURPLE) + rarrow5 = Arrow(start = ORIGIN, end = 2*(-DOWN+LEFT)) + rarrow5.set_color(PURPLE) + rarrow6 = Arrow(start = ORIGIN, end = 3*(-DOWN+LEFT)) + rarrow6.set_color(PURPLE) + rarrow7 = Arrow(start = ORIGIN, end = 4*(-DOWN+LEFT)) + rarrow7.set_color(PURPLE) + + rarrow.scale(1.5) + rarrow1.scale(1.2) + rarrow2.scale(1.15) + rarrow3.scale(1.1) + rarrow4.scale(1.5) + rarrow5.scale(1.2) + rarrow6.scale(1.15) + rarrow7.scale(1.1) + + self.play(ShowCreation(rarrow), + ShowCreation(rarrow1), + ShowCreation(rarrow2), + ShowCreation(rarrow3), + ShowCreation(rarrow4), + ShowCreation(rarrow5), + ShowCreation(rarrow6), + ShowCreation(rarrow7), + ) + + self.wait(2) + self.play(FadeOut(o1), FadeOut(o2)) + + self.add_transformable_mobject(arrow) + self.add_transformable_mobject(arrow1) + self.add_transformable_mobject(arrow2) + self.add_transformable_mobject(arrow3) + self.add_transformable_mobject(arrow4) + self.add_transformable_mobject(arrow5) + self.add_transformable_mobject(arrow6) + self.add_transformable_mobject(arrow7) + + self.add_transformable_mobject(rarrow) + self.add_transformable_mobject(rarrow1) + self.add_transformable_mobject(rarrow2) + self.add_transformable_mobject(rarrow3) + self.add_transformable_mobject(rarrow4) + self.add_transformable_mobject(rarrow5) + self.add_transformable_mobject(rarrow6) + self.add_transformable_mobject(rarrow7) + + o1 = TextMobject("Notice, entire set of vectors which belong to the null space of $A$ transforms to zero") + o2 = TextMobject(r"and entire set of vectors which belong to the row space of $A$ transforms to column space of $A$.") + o1.move_to(2.5*DOWN) + o2.move_to(3.5*DOWN) + o1.scale(0.7) + o2.scale(0.7) + o1.add_background_rectangle() + o2.add_background_rectangle() + self.play(Write(o1)) + self.play(Write(o2)) + self.wait() + + matrix = [[1,-1],[1,-1]] + self.apply_matrix(matrix) + self.wait(3) + + self.play(FadeOut(o1), FadeOut(o2)) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file8_Left_Null_Space.py b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file8_Left_Null_Space.py new file mode 100755 index 0000000..fd05e75 --- /dev/null +++ b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file8_Left_Null_Space.py @@ -0,0 +1,26 @@ +from manimlib.imports import * + +class Left_Null_Space(Scene): + def construct(self): + + A = TextMobject(r"Left Null Space of A") + A.move_to(3*UP) + defn = TextMobject(r"It is a vector space that consists of all the solution $x$ to the equation $A^{T}x=0$") + defn.move_to(2*UP) + defn.scale(0.75) + eqn1 = TextMobject(r"$A^{T}x=0 \cdots (i)$") + eqn1.move_to(UP) + self.play(Write(A), Write(defn), Write(eqn1),run_time=1) + statement = TextMobject(r"Taking transpose of eqn $(i)$") + eqn = TextMobject(r"$(A^{T}x)^{T}=0$") + eqn.move_to(DOWN) + eqn2 = TextMobject(r"$x^{T}(A^{T})^{T}=0$") + eqn2.move_to(DOWN) + eqn3 = TextMobject(r"$x^{T}A=0$") + eqn3.move_to(DOWN) + self.play(Write(statement),Write(eqn),run_time=1) + self.wait(0.5) + self.play(Transform(eqn,eqn2),run_time=1) + self.wait(0.5) + self.play(Transform(eqn,eqn3),run_time=1) + self.wait(0.5) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file9_left_null_space.py b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file9_left_null_space.py new file mode 100644 index 0000000..61285be --- /dev/null +++ b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/file9_left_null_space.py @@ -0,0 +1,186 @@ +from manimlib.imports import * +class row_space(LinearTransformationScene): + def construct(self): + + self.setup() + self.wait() + + o = TextMobject(r"This is the original vector space $R^2$(before Linear Transformation)") + o.move_to(DOWN) + o.scale(0.75) + o.add_background_rectangle() + self.play(Write(o)) + self.wait() + self.play(FadeOut(o)) + + o1 = TextMobject("Consider a set of vectors which are linear") + o2 = TextMobject(r"span of a $\left(\begin{array}{c} 1 \\ 1 \end{array}\right)$i.e. the null space.") + o1.move_to(2*DOWN+3*RIGHT) + o2.move_to(2.75*DOWN+3*RIGHT) + o1.scale(0.7) + o2.scale(0.7) + o1.add_background_rectangle() + o2.add_background_rectangle() + self.play(Write(o1)) + self.play(Write(o2)) + + arrow = Arrow(start = ORIGIN, end = UP+RIGHT) + arrow.set_color(YELLOW) + arrow1 = Arrow(start = ORIGIN, end = 2*(UP+RIGHT)) + arrow1.set_color(YELLOW) + arrow2 = Arrow(start = ORIGIN, end = 3*(UP+RIGHT)) + arrow2.set_color(YELLOW) + arrow3 = Arrow(start = ORIGIN, end = 4*(UP+RIGHT)) + arrow3.set_color(YELLOW) + arrow4 = Arrow(start = ORIGIN, end = DOWN+LEFT) + arrow4.set_color(YELLOW) + arrow5 = Arrow(start = ORIGIN, end = 2*(DOWN+LEFT)) + arrow5.set_color(YELLOW) + arrow6 = Arrow(start = ORIGIN, end = 3*(DOWN+LEFT)) + arrow6.set_color(YELLOW) + arrow7 = Arrow(start = ORIGIN, end = 4*(DOWN+LEFT)) + arrow7.set_color(YELLOW) + + arrow.scale(1.5) + arrow1.scale(1.2) + arrow2.scale(1.15) + arrow3.scale(1.1) + arrow4.scale(1.5) + arrow5.scale(1.2) + arrow6.scale(1.15) + arrow7.scale(1.1) + + self.play(ShowCreation(arrow), + ShowCreation(arrow1), + ShowCreation(arrow2), + ShowCreation(arrow3), + ShowCreation(arrow4), + ShowCreation(arrow5), + ShowCreation(arrow6), + ShowCreation(arrow7), + ) + + self.wait(2) + self.play(FadeOut(o1), FadeOut(o2)) + + o1 = TextMobject("Consider a set of vectors which are linear") + o2 = TextMobject(r"span of a vector $\left(\begin{array}{c} 1 \\ -1 \end{array}\right)$i.e. the row space.") + o1.move_to(2*DOWN+3*RIGHT) + o2.move_to(2.75*DOWN+3*RIGHT) + o1.scale(0.7) + o2.scale(0.7) + o1.add_background_rectangle() + o2.add_background_rectangle() + self.play(Write(o1)) + self.play(Write(o2)) + + rarrow = Arrow(start = ORIGIN, end = -UP+RIGHT) + rarrow.set_color(PURPLE) + rarrow1 = Arrow(start = ORIGIN, end = 2*(-UP+RIGHT)) + rarrow1.set_color(PURPLE) + rarrow2 = Arrow(start = ORIGIN, end = 3*(-UP+RIGHT)) + rarrow2.set_color(PURPLE) + rarrow3 = Arrow(start = ORIGIN, end = 4*(-UP+RIGHT)) + rarrow3.set_color(PURPLE) + rarrow4 = Arrow(start = ORIGIN, end = -DOWN+LEFT) + rarrow4.set_color(PURPLE) + rarrow5 = Arrow(start = ORIGIN, end = 2*(-DOWN+LEFT)) + rarrow5.set_color(PURPLE) + rarrow6 = Arrow(start = ORIGIN, end = 3*(-DOWN+LEFT)) + rarrow6.set_color(PURPLE) + rarrow7 = Arrow(start = ORIGIN, end = 4*(-DOWN+LEFT)) + rarrow7.set_color(PURPLE) + + rarrow.scale(1.5) + rarrow1.scale(1.2) + rarrow2.scale(1.15) + rarrow3.scale(1.1) + rarrow4.scale(1.5) + rarrow5.scale(1.2) + rarrow6.scale(1.15) + rarrow7.scale(1.1) + + self.play(ShowCreation(rarrow), + ShowCreation(rarrow1), + ShowCreation(rarrow2), + ShowCreation(rarrow3), + ShowCreation(rarrow4), + ShowCreation(rarrow5), + ShowCreation(rarrow6), + ShowCreation(rarrow7), + ) + + self.wait(2) + self.play(FadeOut(o1), FadeOut(o2)) + + self.add_transformable_mobject(arrow) + self.add_transformable_mobject(arrow1) + self.add_transformable_mobject(arrow2) + self.add_transformable_mobject(arrow3) + self.add_transformable_mobject(arrow4) + self.add_transformable_mobject(arrow5) + self.add_transformable_mobject(arrow6) + self.add_transformable_mobject(arrow7) + + self.add_transformable_mobject(rarrow) + self.add_transformable_mobject(rarrow1) + self.add_transformable_mobject(rarrow2) + self.add_transformable_mobject(rarrow3) + self.add_transformable_mobject(rarrow4) + self.add_transformable_mobject(rarrow5) + self.add_transformable_mobject(rarrow6) + self.add_transformable_mobject(rarrow7) + + matrix = [[1,-1],[1,-1]] + self.apply_matrix(matrix) + self.wait(3) + + o1 = TextMobject("Consider a set of vectors which are linear span of a vector") + o2 = TextMobject(r"$\left(\begin{array}{c} 1 \\ -1 \end{array}\right)$ which is orthogonal to column space i.e. Left Null Space") + o1.move_to(2*DOWN) + o2.move_to(2.75*DOWN) + o1.scale(0.7) + o2.scale(0.7) + o1.add_background_rectangle() + o2.add_background_rectangle() + self.play(Write(o1)) + self.play(Write(o2)) + + rarrow = Arrow(start = ORIGIN, end = -UP+RIGHT) + rarrow.set_color(YELLOW) + rarrow1 = Arrow(start = ORIGIN, end = 2*(-UP+RIGHT)) + rarrow1.set_color(YELLOW) + rarrow2 = Arrow(start = ORIGIN, end = 3*(-UP+RIGHT)) + rarrow2.set_color(YELLOW) + rarrow3 = Arrow(start = ORIGIN, end = 4*(-UP+RIGHT)) + rarrow3.set_color(YELLOW) + rarrow4 = Arrow(start = ORIGIN, end = -DOWN+LEFT) + rarrow4.set_color(YELLOW) + rarrow5 = Arrow(start = ORIGIN, end = 2*(-DOWN+LEFT)) + rarrow5.set_color(YELLOW) + rarrow6 = Arrow(start = ORIGIN, end = 3*(-DOWN+LEFT)) + rarrow6.set_color(YELLOW) + rarrow7 = Arrow(start = ORIGIN, end = 4*(-DOWN+LEFT)) + rarrow7.set_color(YELLOW) + + rarrow.scale(1.5) + rarrow1.scale(1.2) + rarrow2.scale(1.15) + rarrow3.scale(1.1) + rarrow4.scale(1.5) + rarrow5.scale(1.2) + rarrow6.scale(1.15) + rarrow7.scale(1.1) + + self.play(ShowCreation(rarrow), + ShowCreation(rarrow1), + ShowCreation(rarrow2), + ShowCreation(rarrow3), + ShowCreation(rarrow4), + ShowCreation(rarrow5), + ShowCreation(rarrow6), + ShowCreation(rarrow7), + ) + + self.wait(2) + self.play(FadeOut(o1), FadeOut(o2)) diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/null_space.py b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/null_space.py deleted file mode 100644 index c686710..0000000 --- a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/null_space.py +++ /dev/null @@ -1,91 +0,0 @@ -from manimlib.imports import * -class null_space(LinearTransformationScene): - def construct(self): - - self.setup() - self.wait() - - o = TextMobject(r"This is the original vector space $R^2$(before Linear Transformation)") - o.move_to(DOWN) - o.scale(0.75) - o.add_background_rectangle() - self.play(Write(o)) - self.wait() - self.play(FadeOut(o)) - - o1 = TextMobject("Consider a set of vectors which are linear") - o2 = TextMobject(r"span of a particular vector $\left(\begin{array}{c} 1 \\ 1 \end{array}\right)$") - o1.move_to(2*DOWN+3*RIGHT) - o2.move_to(2.75*DOWN+3*RIGHT) - o1.scale(0.7) - o2.scale(0.7) - o1.add_background_rectangle() - o2.add_background_rectangle() - self.play(Write(o1)) - self.play(Write(o2)) - - arrow = Arrow(start = ORIGIN, end = UP+RIGHT) - arrow1 = Arrow(start = ORIGIN, end = 2*(UP+RIGHT)) - arrow2 = Arrow(start = ORIGIN, end = 3*(UP+RIGHT)) - arrow3 = Arrow(start = ORIGIN, end = 4*(UP+RIGHT)) - arrow4 = Arrow(start = ORIGIN, end = DOWN+LEFT) - arrow5 = Arrow(start = ORIGIN, end = 2*(DOWN+LEFT)) - arrow6 = Arrow(start = ORIGIN, end = 3*(DOWN+LEFT)) - arrow7 = Arrow(start = ORIGIN, end = 4*(DOWN+LEFT)) - - arrow.scale(1.5) - arrow1.scale(1.2) - arrow2.scale(1.15) - arrow3.scale(1.1) - arrow4.scale(1.5) - arrow5.scale(1.2) - arrow6.scale(1.15) - arrow7.scale(1.1) - - self.play(ShowCreation(arrow), - ShowCreation(arrow1), - ShowCreation(arrow2), - ShowCreation(arrow3), - ShowCreation(arrow4), - ShowCreation(arrow5), - ShowCreation(arrow6), - ShowCreation(arrow7), - ) - - self.wait(2) - self.play(FadeOut(o1), FadeOut(o2)) - - self.add_transformable_mobject(arrow) - self.add_transformable_mobject(arrow1) - self.add_transformable_mobject(arrow2) - self.add_transformable_mobject(arrow3) - self.add_transformable_mobject(arrow4) - self.add_transformable_mobject(arrow5) - self.add_transformable_mobject(arrow6) - self.add_transformable_mobject(arrow7) - - o1 = TextMobject("Notice, entire set of vectors which belong to the vector") - o2 = TextMobject(r"subspace(Linear Span of $\left(\begin{array}{c} 1 \\ 1 \end{array}\right)$) transforms to zero") - o1.move_to(2*DOWN+2.5*RIGHT) - o2.move_to(2.75*DOWN+2.5*RIGHT) - o1.scale(0.7) - o2.scale(0.7) - o1.add_background_rectangle() - o2.add_background_rectangle() - self.play(Write(o1)) - self.play(Write(o2)) - self.wait() - - matrix = [[1,-1],[1,-1]] - self.apply_matrix(matrix) - self.wait() - - self.play(FadeOut(o1), FadeOut(o2)) - - o = TextMobject(r"Hence, the vector space formed by linear span of $\left(\begin{array}{c} 1 \\ 1 \end{array}\right)$ is the null space of $A$") - o.move_to(DOWN) - o.scale(0.75) - o.add_background_rectangle() - self.play(Write(o)) - self.wait(2) - self.play(FadeOut(o), FadeOut(arrow), FadeOut(arrow1), FadeOut(arrow2), FadeOut(arrow3), FadeOut(arrow4), FadeOut(arrow5), FadeOut(arrow6), FadeOut(arrow7)) diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/row_space.py b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/row_space.py deleted file mode 100644 index c81d370..0000000 --- a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/row_space.py +++ /dev/null @@ -1,150 +0,0 @@ -from manimlib.imports import * -class row_space(LinearTransformationScene): - def construct(self): - - self.setup() - self.wait() - - o = TextMobject(r"This is the original vector space $R^2$(before Linear Transformation)") - o.move_to(DOWN) - o.scale(0.75) - o.add_background_rectangle() - self.play(Write(o)) - self.wait() - self.play(FadeOut(o)) - - o1 = TextMobject("Consider a set of vectors which are linear") - o2 = TextMobject(r"span of a $\left(\begin{array}{c} 1 \\ 1 \end{array}\right)$i.e. the null space.") - o1.move_to(2*DOWN+3*RIGHT) - o2.move_to(2.75*DOWN+3*RIGHT) - o1.scale(0.7) - o2.scale(0.7) - o1.add_background_rectangle() - o2.add_background_rectangle() - self.play(Write(o1)) - self.play(Write(o2)) - - arrow = Arrow(start = ORIGIN, end = UP+RIGHT) - arrow.set_color(YELLOW) - arrow1 = Arrow(start = ORIGIN, end = 2*(UP+RIGHT)) - arrow1.set_color(YELLOW) - arrow2 = Arrow(start = ORIGIN, end = 3*(UP+RIGHT)) - arrow2.set_color(YELLOW) - arrow3 = Arrow(start = ORIGIN, end = 4*(UP+RIGHT)) - arrow3.set_color(YELLOW) - arrow4 = Arrow(start = ORIGIN, end = DOWN+LEFT) - arrow4.set_color(YELLOW) - arrow5 = Arrow(start = ORIGIN, end = 2*(DOWN+LEFT)) - arrow5.set_color(YELLOW) - arrow6 = Arrow(start = ORIGIN, end = 3*(DOWN+LEFT)) - arrow6.set_color(YELLOW) - arrow7 = Arrow(start = ORIGIN, end = 4*(DOWN+LEFT)) - arrow7.set_color(YELLOW) - - arrow.scale(1.5) - arrow1.scale(1.2) - arrow2.scale(1.15) - arrow3.scale(1.1) - arrow4.scale(1.5) - arrow5.scale(1.2) - arrow6.scale(1.15) - arrow7.scale(1.1) - - self.play(ShowCreation(arrow), - ShowCreation(arrow1), - ShowCreation(arrow2), - ShowCreation(arrow3), - ShowCreation(arrow4), - ShowCreation(arrow5), - ShowCreation(arrow6), - ShowCreation(arrow7), - ) - - self.wait(2) - self.play(FadeOut(o1), FadeOut(o2)) - - o1 = TextMobject("Consider a set of vectors which are linear") - o2 = TextMobject(r"span of a $\left(\begin{array}{c} 1 \\ -1 \end{array}\right)$i.e. the row space.") - o1.move_to(2*DOWN+3*RIGHT) - o2.move_to(2.75*DOWN+3*RIGHT) - o1.scale(0.7) - o2.scale(0.7) - o1.add_background_rectangle() - o2.add_background_rectangle() - self.play(Write(o1)) - self.play(Write(o2)) - - rarrow = Arrow(start = ORIGIN, end = -UP+RIGHT) - rarrow.set_color(PURPLE) - rarrow1 = Arrow(start = ORIGIN, end = 2*(-UP+RIGHT)) - rarrow1.set_color(PURPLE) - rarrow2 = Arrow(start = ORIGIN, end = 3*(-UP+RIGHT)) - rarrow2.set_color(PURPLE) - rarrow3 = Arrow(start = ORIGIN, end = 4*(-UP+RIGHT)) - rarrow3.set_color(PURPLE) - rarrow4 = Arrow(start = ORIGIN, end = -DOWN+LEFT) - rarrow4.set_color(PURPLE) - rarrow5 = Arrow(start = ORIGIN, end = 2*(-DOWN+LEFT)) - rarrow5.set_color(PURPLE) - rarrow6 = Arrow(start = ORIGIN, end = 3*(-DOWN+LEFT)) - rarrow6.set_color(PURPLE) - rarrow7 = Arrow(start = ORIGIN, end = 4*(-DOWN+LEFT)) - rarrow7.set_color(PURPLE) - - rarrow.scale(1.5) - rarrow1.scale(1.2) - rarrow2.scale(1.15) - rarrow3.scale(1.1) - rarrow4.scale(1.5) - rarrow5.scale(1.2) - rarrow6.scale(1.15) - rarrow7.scale(1.1) - - self.play(ShowCreation(rarrow), - ShowCreation(rarrow1), - ShowCreation(rarrow2), - ShowCreation(rarrow3), - ShowCreation(rarrow4), - ShowCreation(rarrow5), - ShowCreation(rarrow6), - ShowCreation(rarrow7), - ) - - self.wait(2) - self.play(FadeOut(o1), FadeOut(o2)) - - self.add_transformable_mobject(arrow) - self.add_transformable_mobject(arrow1) - self.add_transformable_mobject(arrow2) - self.add_transformable_mobject(arrow3) - self.add_transformable_mobject(arrow4) - self.add_transformable_mobject(arrow5) - self.add_transformable_mobject(arrow6) - self.add_transformable_mobject(arrow7) - - self.add_transformable_mobject(rarrow) - self.add_transformable_mobject(rarrow1) - self.add_transformable_mobject(rarrow2) - self.add_transformable_mobject(rarrow3) - self.add_transformable_mobject(rarrow4) - self.add_transformable_mobject(rarrow5) - self.add_transformable_mobject(rarrow6) - self.add_transformable_mobject(rarrow7) - - o1 = TextMobject("Notice, entire set of vectors which belong to the null space of $A$ transforms to zero") - o2 = TextMobject(r"and entire set of vectors which belong to the row space of $A$ transforms to column space of $A$.") - o1.move_to(2.5*DOWN) - o2.move_to(3.5*DOWN) - o1.scale(0.7) - o2.scale(0.7) - o1.add_background_rectangle() - o2.add_background_rectangle() - self.play(Write(o1)) - self.play(Write(o2)) - self.wait() - - matrix = [[1,-1],[1,-1]] - self.apply_matrix(matrix) - self.wait(3) - - self.play(FadeOut(o1), FadeOut(o2)) \ No newline at end of file diff --git a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/solution.py b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/solution.py deleted file mode 100644 index fb31881..0000000 --- a/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/solution.py +++ /dev/null @@ -1,75 +0,0 @@ -from manimlib.imports import * -class solution(LinearTransformationScene): - def construct(self): - - self.setup() - self.wait() - - o = TextMobject(r"This is the original $2D$ vector space(before Linear Transformation)") - o.move_to(DOWN) - o.scale(0.75) - o.add_background_rectangle() - self.play(Write(o)) - self.wait() - self.play(FadeOut(o)) - - A = TextMobject("Let $A$ denote the matrix the of this linear transformation.") - A.move_to(DOWN) - A.scale(0.75) - A.add_background_rectangle() - self.play(Write(A)) - matrix = [[1,-1],[1,-1]] - self.apply_matrix(matrix) - self.wait() - self.play(FadeOut(A)) - - o = TextMobject(r"This is the transformed vector space i.e. a line ($1D$)") - o.move_to(DOWN) - o.scale(0.75) - o.add_background_rectangle() - self.play(Write(o)) - self.wait() - self.play(FadeOut(o)) - - arrow2 = Arrow(start = ORIGIN, end = 2*DOWN+2*LEFT) - arrow2.set_color(DARK_BLUE) - arrow2.scale(1.2) - self.play(ShowCreation(arrow2)) - self.wait() - - o1 = TextMobject("If the vector lies in the transformed vector space") - o2 = TextMobject("(the line) then the solution exist") - o1.move_to(2*DOWN+2*RIGHT) - o2.move_to(2.5*DOWN+2*RIGHT) - o1.scale(0.75) - o2.scale(0.75) - o1.add_background_rectangle() - o2.add_background_rectangle() - self.play(Write(o1)) - self.play(Write(o2)) - self.wait() - self.play(FadeOut(o1), FadeOut(o2)) - - self.play(FadeOut(arrow2)) - - arrow1 = Arrow(start = ORIGIN, end = 2*UP+RIGHT) - arrow1.set_color(DARK_BLUE) - arrow1.scale(1.3) - self.play(ShowCreation(arrow1)) - self.wait() - - o1 = TextMobject("If the vector does lies in the transformed") - o2 = TextMobject("vector space then the does not solution exist") - o1.move_to(2*DOWN+2*RIGHT) - o2.move_to(2.5*DOWN+2*RIGHT) - o1.scale(0.75) - o2.scale(0.75) - o1.add_background_rectangle() - o2.add_background_rectangle() - self.play(Write(o1)) - self.play(Write(o2)) - self.wait() - self.play(FadeOut(o1), FadeOut(o2)) - - self.play(FadeOut(arrow1)) - \ No newline at end of file -- cgit