## Graphing Polar Equations in Matlab

Consider the point `P` in the Cartesian plane pictured in Figure 1.

We've drawn a segment from the point `P` to the origin and marked its length as `r`. In addition, we've marked the angle made with the horizontal axis as `theta`.

In the Cartesian coordinate system, the coordinates of the point `P` are `(x,y)`. In polar coordinates, we mark the point `P` with the coordinates `(r,theta)`. The `r` represents the radial distance from the origin and the `theta` represents the angle made with the horizontal axis (counterclockwise being the positive direction).

A simple trigonometric definition describes the relation between Cartesian and polar coordinates.

$\begin{eqnarray} x&=& r \cos\theta\\ y&=& r \sin\theta \end{eqnarray}$

### Matlab's POLAR Command

Consider the polar equation

$r=\cos 2\theta,$

called the *four-leaf rose.* We can use Matlab's **polar** command to plot the graph of this equation on `[0,2 pi]`. First, use Matlab's **linspace** to generate 100 equally spaced points on the interval `[0,2pi]`, then generate the corresponding `r`-values. Semicolons are used to suppress the output.

>> theta=linspace(0,2*pi); >> r=cos(2*theta);

Now use Matlab's **polar** command.

>> polar(theta,r)

This will produce the image shown in Figure 2.

### Changing to Cartesian Coordinates

We can use Matlab's **plot** command if we change to Cartesian coordinates. This is a simple matter. We simply use the equations of transformation:

$\begin{eqnarray} x&=& r \cos\theta\\ y&=& r \sin\theta \end{eqnarray}$

So, first get the polar coordinates again.

>> theta=linspace(0,2*pi); >> r=cos(2*theta);

Next, transform these into Cartesian coordinates.

>> x=r.*cos(theta); >> y=r.*sin(theta);

Now we can use the **plot** command.

>> plot(x,y)

This will produce the image shown in Figure 3.

In Figure 3, you'll note a bit of distortion. The graph seems to be "stretched" a bit in the horizontal direction. You can understand the source of this "strech" by examining the tick marks on each axis. Note that 0.5 units on the `x`-axis is a slight bit longer that 0.5 units on the `y`-axis. We can "equalize" with Matlab's **axis equal** command.

>> axis equal

This produces the image shown in Figure 4.

Of course, we can also provide axis labels and a title.

>> xlabel('x-axis') >> ylabel('y-axis') >> title('The plot of r = cos(2\theta)')

This produces the plot in Figure 5.

Note that Matlab understands a subset of TeX commands. Hence, the command **title('The plot of r = cos(2\theta)')** typesets a `theta` in the title.

#### Script Files are More Efficient

Of course, a script file is a much more efficient way to work. Open a new file in the editor, then enter the following code.

theta=linspace(0,2*pi); r=cos(2*theta); x=r.*cos(theta); y=r.*sin(theta); plot(x,y) axis equal xlabel('x-axis') ylabel('y-axis') title('The plot of r = cos(2\theta)')

Save the file as **script1.m** and execute by pressing F5 in the editor.

### Comet Plots

By using Matlab's **comet** command, we can get a sense of how the plot progresses. Try the following adjustment to the script file posed above.

theta=linspace(0,2*pi,2000); r=cos(2*theta); x=r.*cos(theta); y=r.*sin(theta); comet(x,y) plot(x,y) axis equal xlabel('x-axis') ylabel('y-axis') title('The plot of r = cos(2\theta)')

Some comments:

- The
**linspace**command is used to generate 2000 equally spaced points. The goal is to slow down the animation. Adjust the 2000 upward if the animation is too fast, downward if the animation is too slow. - We added a
**comet(x,y)**command to animate the plot. In order to obtain a plot that will print, we added a**plot**command and some annotations. These will execute as soon as the comet animation is complete.

Save the file as **script2.m** and execute by pressing F5 in the editor.

### Matlab Files

Although the following file features advanced use of Matlab, we include it here for those interested in discovering how we generated the images for this activity. You can download the Matlab file at the following link. Download the file to a directory or folder on your system.

The file **mypolar.m** is designed to be run in "cell mode." Open the file **mypolar.m** in the Matlab editor, then enable cell mode from the **Cell Menu**. After that, use the entries on the **Cell Menu** or the icons on the toolbar to execute the code in the cells provided in the file. There are options for executing both single and multiple cells. After executing a cell, examine the contents of your folder and note that a PNG file was generated by executing the cell.

One final fun thing to do is to select Publish to HTML from the File menu and watch what happens. You might want to try a smaller number of points in the comet plot before you try this. The result is shown in mypolar.html.

### Exercises

The beauty of polar equations is the chance to see some really beautiful and exatic plots. Write a script similar script2.m in the Comet Plots section to plot the graph of the following polar equation, known as the "butterfly." It will be your duty to discover an appropriate interval for `theta`.

`r=e^{sin theta}-2cos(4theta)+sin^5((2theta-pi)/24)`

Include a printout of the image and the M-code that produced your image with your homework submission.