Linear Transformations of (ℝ^2)

Initialization

Off[General::spell1]

$TextStyle={FontFamily->"Courier-Bold", FontSize -> 18};

TwoDLinearTransform[M_]:= 
TwoDLinearTransform[M, {{-2.2,2.2},{-2.2,2.2}}]

TwoDLinearTransform[M_,plotrange_]:=Module[{hpairs,vpairs,hlines,vlines,Mhlines,Mvlines,k,domain,range},hpairs=Table[{{0.`,k},{1.`,k}},{k,0,1,0.1`}];vpairs=Table[{{k,0.`},{k,1.`}},{k,0,1,0.1`}];hlines={RGBColor[0,0,1],Thickness[0.006`],Line/@hpairs};vlines={RGBColor[1,0,0],Thickness[0.006`],Line/@vpairs};domain=Show[Graphics[hlines],Graphics[vlines],AspectRatio->Automatic,PlotRange->plotrange,Axes->True,Ticks->{Range[Ceiling[plotrange[[1,1]]],Floor[plotrange[[1,2]]]],Range[Ceiling[plotrange[[2,1]]],Floor[plotrange[[2,2]]]]},DisplayFunction->Identity];Mhlines={RGBColor[0,0,1],Thickness[0.006`],Line/@({M.#1[[1]],M.#1[[2]]}&)/@hpairs};Mvlines={RGBColor[1,0,0],Thickness[0.006`],Line/@({M.#1[[1]],M.#1[[2]]}&)/@vpairs};range=Show[Graphics[Mhlines],Graphics[Mvlines],AspectRatio->Automatic,PlotRange->plotrange,Axes->True,Ticks->{Range[Ceiling[plotrange[[1,1]]],Floor[plotrange[[1,2]]]],Range[Ceiling[plotrange[[2,1]]],Floor[plotrange[[2,2]]]]},DisplayFunction->Identity];Show[GraphicsRow[{domain,range}],DisplayFunction->$DisplayFunction,ImageSize->{640,480}]]

Rotation by 45°

A = (1/2){{Sqrt[2],-Sqrt[2]},{Sqrt[2],Sqrt[2]}};
MatrixForm[A]

TwoDLinearTransform[A]

Manipulate[TwoDLinearTransform[MatrixPower[A,k]],{{k,1},0,8,1,Appearance -> "Labeled"}]

Reflection in the (Subscript[x, 2])-axis

A = {{-1,0},{0,1}};
MatrixForm[A]

TwoDLinearTransform[A]

Manipulate[TwoDLinearTransform[MatrixPower[A,k]],{{k,1},0,2,1,Appearance -> "Labeled"}]

Reflection in the line (Subscript[x, 2])=-(Subscript[x, 1])

A = {{0,-1},{-1,0}};
MatrixForm[A]

TwoDLinearTransform[A]

Manipulate[TwoDLinearTransform[MatrixPower[A,k]],{{k,1},0,2,1,Appearance -> "Labeled"}]

A Contraction

A = {{0.9,0},{0,0.9}};
MatrixForm[A]

TwoDLinearTransform[A]

Manipulate[TwoDLinearTransform[MatrixPower[A,k]],{{k,1},0,7,1,Appearance -> "Labeled"}]

A Dilation

A = {{1.1,0},{0,1.1}};
MatrixForm[A]

TwoDLinearTransform[A]

Manipulate[TwoDLinearTransform[MatrixPower[A,k]],{{k,1},0,7,1,Appearance -> "Labeled"}]

A Vertical Expansion

A = {{1,0},{0,2}};
MatrixForm[A]

TwoDLinearTransform[A]

Manipulate[TwoDLinearTransform[MatrixPower[A,k],{{0,8.5},{0,8.5}}],{{k,1},0,3,1,Appearance -> "Labeled"}]

A Shear

A = {{1,0},{0.1,1}};
MatrixForm[A]

TwoDLinearTransform[A]

Manipulate[TwoDLinearTransform[MatrixPower[A,k]],{{k,1},0,10,1,Appearance -> "Labeled"}]

Perpendicular Projection onto the Diagonal (Subscript[x, 2])=(Subscript[x, 1])

A = {{1/2,1/2},{1/2,1/2}};
MatrixForm[A]

TwoDLinearTransform[A]

Manipulate[TwoDLinearTransform[MatrixPower[A,k]],{{k,1},0,3,1,Appearance -> "Labeled"}]