Linear Algebra with Sage

<Graphics>


Made by SKKU Linear Algebra Lab (2011)



Declare a variable and parametric equations. (변수 선언과 매개 변수 방정식 생성)

var('t')

x(t)=2*cos(t)+3

y(t)=sin(t)+2


Make a graph. (그래프 생성, parametric plot)

G1=parametric_plot((x,y),(t, 0, 2*pi),rgbcolor='blue', aspect_ratio=1); G1



주어진 그래프의 점들이 선형변환에 의하여 어떤 점으로 가는지를 확인하자.


To verify the effect of linear transformation, we will extract a point

(선형변환을 보이기 위해 pts(x,y)함수를 정의하여 그래프에서 기준이 되는 점 100개를 선택한다.)

   Define a new command pts(x,y)

     - Input: two parametric functions(x, y)

     - Output: the set of 100 point

def pts(x,y):

    v=[ ]

    for i in range(100):

     a=x((i*pi)/50)

     b=y((i*pi)/50)

     v.append((a,b))

    return v


Define a discrete range with points. (100개의 점 추출)

v=pts(x,y)


Make a graph of points. (점 들로 그래프를 생성)

G2=point(v, pointsize=30,rgbcolor='black')


Show two graph simultaneously (원래 타원과 그 위의 100개의 선택된 점들)

show(G1+G2)



Check the effect of a rotation matrix


Define a rotation matrix. (회전 변환 행렬 생성)

T1=matrix([[1/2, -sqrt(3)/2],[sqrt(3)/2,1/2]]); T1

             # matrix([[cos pi/3, -sin pi/3],[sin pi/3,cos pi/3]])

[         1/2 -1/2*sqrt(3)]

[ 1/2*sqrt(3)          1/2]


Rotate points one by one. (모든 점을 하나씩 변환)

vt=[]

for i in range(100):

          a=v[i][0]

          b=v[i][1]

          v1=matrix(2,1,[a,b])

          v11=T1*v1

          c=v11[0,0]

          d=v11[1,0]

          vt.append((c,d))


Graph all points rotated. (점에 rotation 행렬을 곱한 이미지 점들의 그래프)

G3=point(vt, pointsize=30,rgbcolor='green')


Show G1, G2, G3  (타원, 100개 점, 이미지 점들의 그래프를 동시에 보여준다.)

show(G1+G2+G3)



Check the effect of reflection matrix


Define a reflection matrix. (대칭 행렬 생성)

T2=matrix([[1,0],[0,-1]]); T2

[ 1  0]

[ 0 -1]


Reflect points one by one. (각점에 reflection 행렬을 곱한다.)

vt2=[]

for i in range(100):

          a=v[i][0]

          b=v[i][1]

          v1=matrix(2,1,[a,b])

          v11=T2*v1

          c=v11[0,0]

          d=v11[1,0]

          vt2.append((c,d))


Graph all points reflected.  (점에 reflection 행렬을 곱한 이미지 점들의 그래프)

G4=point(vt2, pointsize=30,rgbcolor='blue')


Show  G2, G3, G4 

    (100개 점에 rotation reflection 행렬을 곱한 이미지들을 동시에 보여준다.)

show(G4+G2+G3, aspect_ratio=1)