Processing math: 100%
Ask Your Question
1

Plotting the effects of a linear transformation on a grid

asked 11 years ago

eod gravatar image

updated 11 years ago

I am a student taking a first undergraduate course in linear algebra, and I would like to play around with plots of transformations of the type T:R2R2. I already know a bit of python, so I'm not looking for anyone to write a program for me, but I would really appreciate some tips/general outline of how to do things.

1) First I want to make a grid that I can plot, and then transform by multiplying it with a matrix. Where's the best way to start? Should I use parametric_plot, or maybe it can be done with just a list of vector([x,y])'s?

2) Second I want to run the grid through a linear transformation. If I could just plot vectors and offset them (not having them start at the origin), I would only only have to iterate over a list of vectors to get the transformed vectors, but I'm not sure if this is a smart way to do it.

Basically, is there a straight forward way to do this? It doesn't seem like it should be very difficult, if someone could give a rough outline of how to do this it would be greatly appreciated.

Thanks.

Preview: (hide)

1 Answer

Sort by » oldest newest most voted
2

answered 11 years ago

tmonteil gravatar image

updated 11 years ago

I would advise to work with a list of vectors and make loops as you suggested, this is a smart way. You can write a function grid(v1, v2) (plus fancy parameters) and apply it to grid(M*v1, M*v2) for some matrix M.

About Sage, i would start by:

sage: M = matrix(QQ, [[1,1],[1,0]])
sage: V = VectorSpace(QQ, 2)
sage: v1, v2 = V.basis()

So that my vectors live in a safe place (you can of course replace QQ with another field if needed, typically if you want to draw rotations using sinus and cosinus). Then, after defining a grid() function that returns a Graphics() object built as a sum of lines(), i would write:

sage: grid(v1, v2, color='blue') + grid(M*v1, M*v2, color='red')

To get something like that picture:

grids

Do not hesitate to ask for details about the grid() function if needed.

Preview: (hide)
link

Comments

I am new to sage, Can you share details about how can i implement grid function ?.

sairahul gravatar imagesairahul ( 11 years ago )

You can try something like:

def grid(v1,v2,endpoints=[-5,5,-5,5], color='blue'):
    G = Graphics()
    for i in range(endpoints[0], endpoints[1]):
        for j in range(endpoints[2], endpoints[3]):
            G += line([i*v1 + j*v2, (i+1)*v1 + j*v2], color=color, aspect_ratio=1)
            G += line([i*v1 + j*v2, i*v1 + (j+1)*v2], color=color, aspect_ratio=1)
    return G

and then use as:

grid(vector([0,1]),vector([1,0]))
tmonteil gravatar imagetmonteil ( 10 years ago )

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

Stats

Asked: 11 years ago

Seen: 2,992 times

Last updated: Nov 03 '13