# Matlab generating parametric curves

1. Jan 14, 2010

### roam

I want to graph the following parametric curve using matlab:

x = 31cos(t)-7cos(31/7)t
y = 31sin(t)-7sin(31/7)t

0 ≤ t ≤ 14π

This is the code I used:

Code (Text):
syms t
t=[0:1:19*pi]
x=31*cos(t)-7*cos(31/7)*t;
y=31*sin(t)-7*sin(31/7)*t;
plot(t,y,t,x)
But the graph which Matlab generated is very different from what it's supposed to look like. Is there a problem with my codes? How do we graph this parametric curve (it's a complex curve)? Thanks.

2. Jan 15, 2010

### MATLABdude

When you use a (2D) parametric equation, you don't express x or y in terms of each other, you do it in terms of a third variable (as you've done). However, at the end of the day, you should still have a set of X-Y coordinates.

Instead of plotting x as a function of t, and then plotting y as a function of t (as you're doing), just plot y as a function of x:
>> plot(x, y)

3. Jan 15, 2010

### roam

Well, the curve I'm trying to produce is supposed to look like this:

But when I even use this code:

Code (Text):
syms t
t=[0:1:19*pi]
x=31*cos(t)-7*cos(31/7)*t;
y=31*sin(t)-7*sin(31/7)*t;
plot(x, y)
I get this graph:

I can't see the problem.

4. Jan 15, 2010

### MATLABdude

Are you sure of your equations? I Googled for parametric spirograph equation and got the following webpage:
http://linuxgazette.net/133/luana.html

You may want to try again with:
x=31*cos(t) - 7*cos((31/7)*t);
y=31*sin(t) - 7*sin((31/7)*t);

I don't know if you know about the MATLAB axis command, but you can use it (or rather 'axis square') to have equal scaling on both axes:
http://www.mathworks.com/access/helpdesk/help/techdoc/ref/axis.html

EDIT: You may also wish to use a smaller step size for t, say 0.1 or 0.01 instead of 1, as you currently have it.

5. Jan 15, 2010

### shoehorn

As MatlabDude has already pointed out, the problem lies with the parametric equations you're using. For example, the following equivalent Mathematica code

Code (Text):
x[t_] := 31 Cos[t] - 7 Cos[31/7] t;
y[t_] := 31 Sin[t] - 7 Sin[31/7] t;
ParametricPlot[{x[t], y[t]}, {t, 0, 19 \[Pi]}]

gives the parametric plot

On the other hand, the modified parametric equations

Code (Text):
x[t_] := 31 Cos[t] - 7 Cos[31 t/7];
y[t_] := 31 Sin[t] - 7 Sin[31 t/7];
ParametricPlot[{x[t], y[t]}, {t, 0, 19 \[Pi]}]

give you the desired plot:

6. Jan 15, 2010

### roam

Okay thanks A LOT guys. :)

7. Jan 15, 2010

### roam

By the way, when you are ploting this in Mathematica, what is the code for changing the color of the plot?