#Graphing

#Standard Coordinates

# Maple can construct many kinds of graphs, a feature that you can use to
# visualize mathematical objects and processes. The command

 plot( sin(3*x), x = -Pi..Pi );

# produces a plot containing the curve

#                          y = sin(3 x) 
                          
# for x in the interval from -Pi to Pi. No space is allowed between the
# double-dots in a plot command. Scales on the x-axis and y-axis are
# chosen in the maple engine.  To change this behavior:

 plot( sin(3*x), x = -Pi..Pi, scaling = constrained );

# Sometimes it is useful to restrict the range over which y varies.  We
# get a misleading graph from

 plot( tan(x), x = -5..5 );

# It does not accurately represent the vertical asymptotes of y = tan(x).
# Better results are obtained with

 plot( tan(x), x = -5..5, y = -5..5 );

# We can plot several curves at once.  To plot y = sin(x) and y = sin(3
# x) together we code
 
 plot( { sin(x), sin(3*x) }, x = -Pi..Pi ); 
 # The curve equations are inside set-delimiters of curly braces

 plot(1+x^2,x=0.1 .. 0.8); 
 # Decimal points can conflict with double-dot range parsing 
 # [compare x=.1...8]

# Now the first argument of plot is a set of expressions to be graphed.
# Sets are enclosed in curly braces and individual items are separated by
# commas.

# We could also use the display command found in the plots package:

 with(plots):
 plot1 := plot( x^2, x = 0..4 ): # Don't display plot data, use colon
 plot2 := plot( 3*x^2 - 2, x = 0..4 ):
 display( [ plot1, plot2 ] );
 
#Parametric Equations
# A curve in the plane can be described as the graph of a function, as in
# the graph of 
#                           1     /     2\
#                       y = - sqrt\4 - x /
#                           2             
# for x in the interval from -1 to 1. It can be given parametrically as
#  
#               (x(t), y(t)) = (2 cos(t), sin(t))
#
# for t in the interval from 0 to Pi. Often we interpret such a curve as
# the path traced by a moving particle at time t . Use the plot command
# to draw a curve from this parametric description:

 plot( [2*cos(t), sin(t), t = 0..Pi] ); 
   # unconstrained, distorted graphic
 plot( [2*cos(t), sin(t), t = 0..Pi], scaling = constrained);  
   # constrained is not distorted

#Polar Coordinates

# Polar plots are a special kind of parametric plot.  The polar
# coordinates ( r, theta ) of points on a curve can be given as a
# function of some parameter t. In many cases the parameter is just the
# angle theta. Consider the ellipse defined in standard coordinates by
#
#                         x^2  + 4 y^2  = 4
#
# To find an equation relating the polar coordinates r and theta of a
# typical point on this ellipse, we make the substitution x = r cos(t)
# and y = r sin(t), where t = theta.

 subs( x = r*cos(t), y = r*sin(t), x^2 + 4*y^2 = 4);
 simplify( % );
 solve( %, r );

# We find that the ellipse is the collection of points whose polar
# coordinates ( r, theta ) satisfy
#
#                      2           4        
#                     r  = -----------------,
#                                          2
#                          4 - 3 cos(theta) 
#
# and the following commands draw the right half of the ellipse:

 r := 2/sqrt( 4 - 3*cos(t)^2 ):
 plot( [ r, t, t = -Pi/2..Pi/2 ], coords = polar );
 
# Here are some more of examples of polar plots that you can try:

 plot( [ 1, t, t = 0..2*Pi], coords=polar ):
 plot( [t, t, t = 0..2*Pi], coords=polar ):
 plot( [ sin(4*t), t, t = 0..2*Pi], coords=polar ): 
   # a more realistic picture is obtained with scaling = constrained.

#Plotting Data

# Maple can plot data consisting of pairs of x and y values.  For
# example,

 data := [ [0, 0.53], [1, 1.14], [2, 1.84], [3, 4.12] ];

# defines data as a sequence of five points, ( x, y ) = (0, 0.53), etc.
# The result is a double list: something enclosed in square brackets,
# with comma-separatd elements in square brackets. Lists are used for
# collections of objects where the order matters.

 data[1]; data[2]; data[3]; data[4]; 
   # Individual items are accessed this way
 data[3][2]; 
   # To access the second coordinate of the third data point

# To plot the points in a double-list we use commands like

 plot( data, style = point, symbol = circle, color = black);
 plot( data, style = line, view = [0..4, 0..5] );
 plot( data, style = line, title = "Experiment 1" ):

# Here the double quote is used to specify a plot title string.  See
# ?plot[options] for more information, e.g., about symbols and line
# styles available. You could also try ?readdata and ?stats to find out
# how to read a file of data points into a Maple session.