High School Modules > Precalculus by Gregory A. Moore
Polar Graphs - Roses, Rings, Bracelets, & Hearts
An exploration of the usual and some unusual polar graphs.
[Directions : Execute the Code Resource section first. Although there will be no output immediately, these definitions are used later in this worksheet.]
0. Code
| > | restart; with(plots): |
Warning, the name changecoords has been redefined
| > | fade := proc( a1,a2,a3,k,n) local c; c := COLOR(RGB, a1*k/n, a2*k/n, a3*k/n); return c; end: |
| > | PolarFadePlot := proc( f) local n; n := 10; display( [seq( polarplot( k*f(x)/n, theta = 0..2*Pi, scaling = constrained, filled = true, color = fade(.9,.6,.7,k,n)), k = 1..n )] ); end proc: |
| > |
1. Cardioids & Limacons
Limacons
are a family of polar graphs which are defined by the polar equations of the form:
Although there appear to be four different forms, they can all be expressed in the form :
where C = 0,
,
, or
. Thus they all represent similar graphs - with differing amounts of right angle rotation.
Comparing a & b
The relationship between the constants
a
and
b
determines the shape of the graph. In particular, there are three cases :
I. |a| = |b|
II. |a| > |b|, and
III |a| < |b|.
Each of these cases creates a distinctive version of the limacon.
Case I .
When |a| = |b|, the graph passes through the origin. This shape is known as a Cardioid - "heart" shaped curves . Note the reference circles of radius 1 and 2.
| > | display( polarplot( {1,2}, theta = 0..2*Pi, scaling = constrained, color = blue, linestyle = 2), polarplot( 1+sin(theta), theta = 0..2*Pi, scaling = constrained, color = red, thickness = 3)); |
| > | `This is a rough indication only`; PolarFadePlot( 3 + 3*sin(theta)); |
Case II .
When |a| > |b|, the graph maintains some distance between it and the origin, resulting in a rounder, puffier plot.
| > | display( polarplot( {1,3,5}, theta = 0..2*Pi, scaling = constrained, color = blue, linestyle = 2), polarplot( 3+2*sin(theta), theta = 0..2*Pi, scaling = constrained, color = gold, thickness = 3)); |
Case III .
When |a| < |b|, the graph not only passes through the origin, but also part of it folds inside itself.
| > | display( polarplot( {2,3,8}, theta = 0..2*Pi, scaling = constrained, color = blue, linestyle = 2), polarplot( 3+5*sin(theta), theta = 0..2*Pi, scaling = constrained, color = green, thickness = 3)); |
Lets see all of these varieties in one glance. The green curve is the cardioid (case I : |a| = |b|) . The red curves are flatter (case II : |a| > |b|) , and the blue curves bend inside of themselves (case III : |a| < |b|) .
| > |
| > | display( polarplot( 8 + 8*cos(theta) , theta = 0..2*Pi, scaling = constrained, color = green, thickness = 3), polarplot({8 + a*cos(theta) $ a = 9..15}, theta = 0..2*Pi, color = blue), polarplot({ 8 + a*cos(theta) $ a = 1..7}, theta = 0..2*Pi, color = red)); |
Here's the same phenomenon shown as an animation. Here, we see the polar graph of
changing as
increases continuously from 0 to 8
| > | for i from 1 to 30 do a := i/30 * 8; p[i]:=polarplot(5+a*cos(theta), numpoints=500); end do: display(seq(p[i],i=1..30), insequence=true, scaling=constrained); |
Comparing the Four Different Versions
Although there appear to be four different forms - with
sine, cosine, -sine, and -cosine
- actually they can all be expressed in the form :
, where C = 0,
,
, or
. Thus they all represent similar graphs - with differing amounts of right angle rotation.
Lets take a look at all four at once!
Can you decide which graph belongs to which? Think about what values of theta make the sine and cosine maxima!
| > | polarplot({ 8 + 7*sin(theta), 8 + 7*cos(theta), 8 - 7*sin(theta), 8 -7*cos(theta)}, theta = 0..2*Pi, scaling = constrained, thickness = 2, color = [red, blue, gold, green]); |
Here is another variation. This "band of gold" was created by making the angle multiplier an irrational number.
| > | polarplot( 10 + sin(2*Pi*theta), theta = 0..20*Pi, color = coral, scaling = constrained); |
2. The Rose Garden
We're going to look at polar functions of the form :
and
- which are sometimes called multi-petaled roses.
Even & Odd Numbered Petals
The first distinction to be made is between when n is an even or odd number. When n is an odd number, the resulting rose has exactly n petals
| > | polarplot( [9, 9*sin(3* theta)], theta = 0..2*Pi, scaling = constrained, linestyle = [2,1], thickness = [1,3], color =[navy, red]); |
| > | polarplot( [20, 20*sin(5* theta)], theta = 0..2*Pi, scaling = constrained, linestyle = [2,1], thickness = [1,3], color =[navy, red]); |
However, when n is even, the rose has 2n petals.
| > | polarplot( [5, 5*sin(2*theta)], theta = 0..2*Pi, scaling = constrained, linestyle = [2,1], thickness = [1,3], color =[navy, magenta]); |
| > | polarplot( [5, 5*cos(4*theta)], theta = 0..2*Pi, scaling = constrained, linestyle = [2,1], thickness = [1,3], color =[navy, magenta]); |
| > | polarplot( [5, 5*sin(6*theta)], theta = 0..2*Pi, scaling = constrained, linestyle = [2,1], thickness = [1,3], color =[navy, magenta]); |
You might be wondering, how does the transition between n petals and 2n petals happen? Does it jump or evolve "smoothly"? An animation is a good way to find out. Here we look at
as
increases continuously from 0 to 4. As you watch, can you identify the moments when
is an integer?
| > | for i from 0 to 60 do a := i/60 * 4; p[i]:=polarplot(cos(a*theta)); end do: display(seq(p[i],i=0..60), insequence=true); |
You may notice another distinction. The even flowers have all of their petals next to each other, but the odd flowers have gaps between the pedals large enough to put twice as many petals. Try creating some other roses on your own with different numbers of petals to verify that the even/odd relationship holds. If you were to perform the "She loves me, she loves me not" procedure on once of these petals, would you prefer that n be even or odd?
What about a single-petaled rose? Do you recognize the inner shape of the "single petaled rose"?
| > | polarplot( [9, 9*sin(theta)], theta = 0..2*Pi, scaling = constrained, linestyle = [2,1], thickness = [1,3], color =[navy, red]); |
Sine & Cosine Powered Roses
Although r = sin(x) and r = cos(x) will create n-petaled roses inscribed in the unit circle, what is the difference between them? The graph with the sine appears tangent to the positive x axis, while the cosine version has a petal centered at the positive x axis.
| > | polarplot( {sin(3*theta), cos(3*theta)}, theta = 0..2*Pi, scaling = constrained); |
Here is an illustration of the same idea with even more petals.
| > | polarplot({sin(6*theta),cos(6*theta)}, theta = 0..2*Pi, scaling = constrained); |
Cosine flowers have a pedal on the x-axis. Sine flowers have a gap at the x-axis.
Amplitude
In the formula above, how does the number a, which is the amplitude in effect the graph? Here we let a =1,2,3...,12 and see how the resulting graphs look. Each different color is a different graph. You can see that they are inscribed in circles of radius 1,2,3,...,12.
| > | polarplot( {a*cos(6*theta) $ a = 1..12}, theta = 0..2*Pi, scaling = constrained); |
| > | polarplot( {a*cos(11*theta) $ a = 1..12}, theta = 0..2*Pi, scaling = constrained); |
Can you explain why this graph looks like a flower too, although its not in the same form as the functions above?
| > | polarplot( sin(theta)^2 - cos(theta)^2, theta = 0..2*Pi,scaling = constrained, color = gold); |
3. Valentine Curves
Valentine curves
- there is really no such name but it seemed reasonable when considering cruves which are a hybrid of rings, hearts(cardioids), and flowers(roses).
| > | polarplot( 4 + cos(6*theta) , theta = 0..2*Pi, scaling = constrained); |
| > | polarplot( 4 + 3*sin(7*theta), theta = 0..2*Pi, scaling = constrained); |
This one wraps in on itself
| > | polarplot( 3 + 7*sin(3*theta), theta = 0..2*Pi, scaling = constrained); |
Here are whole families of similar curves
| > | polarplot( { 6 + a*cos(6*theta) $ a = 1..11}, theta = 0..2*Pi, scaling = constrained); |
| > | polarplot( {12 + a*sin(7*theta) $ a = 1..12}, theta = 0..2*Pi, scaling = constrained); |
4. Familiar Shapes Disguised in Polar Clothes
Many familiar shapes that you came to love in your algebra class - such as lines, circles, parabolas, and ellipses - can be expressed in polar form. In polar coordinates, the simplest function for r is r = constant, which makes a circle centered at the origin. Lets look at the graphs of r = 1, r = 2, ... , r = 20.
This draws concentric circles of radius r = 1, 2, 3, ... , 20
| > | polarplot( {k $ k = 1..20}, theta = 0..2*Pi, scaling = constrained); |
We can also draw circles not centered at the origin.
| > | polarplot( cos(theta), theta = 0..2*Pi, scaling = constrained); |
| > | polarplot( cos(theta - Pi/4), theta = 0..2*Pi, scaling = constrained); |
notice that these pass through the origin
We can also draw ellipses and parabolas....
| > | polarplot( 1/(8 - 7*cos(theta)), theta = 0..2*Pi, scaling = constrained); |
| > | polarplot( 1/(1 - cos(theta)), theta = 0..2*Pi); |
| > | polarplot( 1/(3 + 2*sin(theta)), theta = 0..2*Pi, scaling = constrained); |
...even horizontal and vertical lines
| > | polarplot( 2*csc(theta), theta = -2*Pi..2*Pi); |
| > | polarplot(2*sec(theta), theta = -2*Pi..2*Pi); |
5. Spiraling Out of Control
A basic spiral is of the form
.
| > | polarplot(theta,theta = 0..4*Pi, scaling = constrained); |
| > | polarplot(theta, theta = 0..40*Pi, scaling = constrained); |
A larger range of values for theta gives more chance for the graph to wrap around.
Even more interesting graphs can be created using the product of theta and a trigonometric function. As theta increases there is a sort of spiraling effect.
| > | polarplot( theta*sin(theta), theta = 0..3*Pi, scaling = constrained); |
| > | polarplot( theta*sin(theta), theta = 0..25*Pi, scaling = constrained, numpoints = 500); |
As we increase the range of values for theta, we get even more of the same.
Here is another variation.
| > | polarplot( 2*cos(theta) + sqrt( abs( 4*cos(theta)^2 -3)), theta = 0..2*Pi, scaling = constrained, numpoints = 1000); |
6. How to Build a Better Rose
The so-called 'roses' above, really bore more of a resemblance to daisies. Here is something that looks a little more rose-like.
| > | polarplot( theta + 2*sin(2*Pi*theta), theta = 0..12*Pi,color = red, thickness = 2 ); |
Here are some other beautiful botanicals.
| > | polarplot( theta + 3*sin(4*theta) - 5*cos(4*theta), theta = 0..12*Pi,color = violet, thickness = 2 ); |
| > | polarplot( theta + 2*sin(2*Pi*theta) + 4*cos(2*Pi*theta), theta = 0..12*Pi,color = green, thickness = 2 , numpoints = 1000); |
| > | polarplot( sin(theta) + 2*cos(2*theta), theta = 0..2*Pi,scaling = constrained ); |
| > | polarplot( sin(theta) + 2*cos(2*theta) + 3*sin(3*theta) + 4*cos(4*theta), theta = 0..2*Pi,scaling = constrained, thickness = 2, color = green); |
| > | polarplot( 4*sin(theta) + 3*cos(2*theta) + 2*sin(3*theta) + 1*cos(4*theta), theta = 0..2*Pi,scaling = constrained, thickness = 3, color = coral); |
Maybe more chrysanthanum-like.
| > | polarplot( cos(.95*theta), theta = 0..40*Pi,scaling = constrained, color = brown); |
| > | polarplot( cos(.2*theta) - sin(.5*theta), theta = 0..40*Pi,scaling = constrained, color = gold); |
| > | polarplot( sin(theta)^5 - cos(theta)^6, theta = 0..2*Pi,scaling = constrained, color = gold); |
| > | polarplot( sin(theta)^3 - cos(theta)^9, theta = 0..2*Pi,scaling = constrained, color = gold); |
| > | polarplot( sin(theta)^3 - cos(2*theta)^3, theta = 0..12*Pi,scaling = constrained, color = gold); |
© 2002 Waterloo Maple Inc