I spent a couple of minutes googleing and found various command that would plot complex functions:
f = sqrt(x) + 1 / x
complex_plot(sqrt, (-5,5), (-5, 5))
This gives the following plot:
This was however not what my student was asking. They wanted to know how to plot a given set of points in the complex plain (referred to as the Argand plane). A quick google to check if there was anything in Sage pre built for this brought me to this published sheet by +Jason Grout.
I tweaked it slightly so that it was in line with the commands my students have learnt so far and also to include axes legends and put the following in to a function:
def complex_point_plot(pts):
"""
A function that returns a plot of a list of complex points.
Arguments: pts (a list of complex numbers)
Outputs: A list plot of the imaginary numbers
"""
return list_plot([(real(i), imag(i)) for i in pts], axes_labels = ['Re($z$)', 'Im($z$)'], size=30)
This function simply returns a plot as required. Here is a small test with the output:
complex_point_plot([3*I, e^(I*pi), e^(I*3*pi/4), 4-4*I])
Here is some code that will plot the unit circle using the $z=e^{i\theta}$ notation for complex numbers (and the Sage srange command):
pts = [e^(I*(theta)) for theta in srange(0, 2*pi, .1)]
complex_point_plot(pts)
Here is the output:
I published all this in a worksheet on our server so it's now immediately available to all our students. I'm really enjoying teaching +Sage Mathematical Software System to our students.
A Sage cell with the above code (that you can run in your browser) can be found here: http://goo.gl/jipzxV
EDIT: Since posting this +Punarbasu Purkayastha pointed out on G+ that list_plot can handle complex points right out of the box :) So the above can just be obtained by typing:
pts = [e^(I*(theta)) for theta in srange(0, 2*pi, .1)]
list_plot(pts, axes_labels=['Re($z$)','Im($z$)'], size=30)
Learn something new everyday...
No comments:
Post a Comment