summaryrefslogtreecommitdiff
path: root/FSF-2020/linear-algebra
diff options
context:
space:
mode:
authorArchit Sangal2020-07-06 17:06:19 +0530
committerArchit Sangal2020-07-06 17:06:19 +0530
commit73582bd5f91d845437fb4a88b3a863e940d1de7e (patch)
tree62a3e383c92cb2ca30cec7d6baa503306445fc99 /FSF-2020/linear-algebra
parent1e4ac7ee9a243d6fe878e2d22c250bc9475b5dad (diff)
downloadFSF-mathematics-python-code-archive-73582bd5f91d845437fb4a88b3a863e940d1de7e.tar.gz
FSF-mathematics-python-code-archive-73582bd5f91d845437fb4a88b3a863e940d1de7e.tar.bz2
FSF-mathematics-python-code-archive-73582bd5f91d845437fb4a88b3a863e940d1de7e.zip
animation added in 4FSS
Diffstat (limited to 'FSF-2020/linear-algebra')
-rw-r--r--FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/CSasImage.py168
1 files changed, 168 insertions, 0 deletions
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
new file mode 100644
index 0000000..fbb3291
--- /dev/null
+++ b/FSF-2020/linear-algebra/linear-transformations/The-Four-Fundamental-Subspaces/CSasImage.py
@@ -0,0 +1,168 @@
+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