Matlab generating parametric curves

Click For Summary

Discussion Overview

The discussion revolves around generating a specific parametric curve using MATLAB. Participants are exploring the correct implementation of the parametric equations and addressing issues related to the generated graph's appearance compared to the expected output.

Discussion Character

  • Technical explanation
  • Debate/contested
  • Mathematical reasoning

Main Points Raised

  • One participant presents a set of parametric equations for graphing in MATLAB and expresses confusion over the discrepancy between the expected and actual graph outputs.
  • Another participant suggests that instead of plotting x and y separately as functions of t, they should be plotted as y versus x directly.
  • Several participants point out potential issues with the original parametric equations, proposing modifications to achieve the desired graph.
  • One participant mentions the importance of using the 'axis square' command in MATLAB for equal scaling on both axes.
  • Another participant shares equivalent Mathematica code that produces the expected plot, highlighting differences in the parametric equations used.
  • A later reply asks about changing the color of plots in Mathematica, indicating a shift in focus to another software tool.

Areas of Agreement / Disagreement

Participants do not reach a consensus on the correct form of the parametric equations, as multiple suggestions are presented. There is ongoing uncertainty regarding the proper implementation in MATLAB versus Mathematica.

Contextual Notes

Participants express varying levels of familiarity with MATLAB and Mathematica, and there are mentions of different step sizes for the parameter t, which may affect the graph's resolution.

Who May Find This Useful

Individuals interested in graphing parametric equations using MATLAB or Mathematica, particularly those encountering similar issues with curve generation.

roam
Messages
1,265
Reaction score
12
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:
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.
 
Physics news on Phys.org
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)
 
Well, the curve I'm trying to produce is supposed to look like this:

http://img42.imageshack.us/img42/6738/81320578.jpg

But when I even use this code:

Code:
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:

http://img192.imageshack.us/img192/258/34220467.jpg

I can't see the problem. :confused:
 
Last edited by a moderator:
roam said:
Well, the curve I'm trying to produce is supposed to look like this:

http://img42.imageshack.us/img42/6738/81320578.jpg

But when I even use this code:

Code:
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:

http://img192.imageshack.us/img192/258/34220467.jpg

I can't see the problem. :confused:

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.
 
Last edited by a moderator:
roam said:
I can't see the problem. :confused:

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

Code:
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


http://img704.imageshack.us/img704/9525/35090886.jpg

On the other hand, the modified parametric equations

Code:
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:

http://img63.imageshack.us/img63/5083/26807336.jpg
 
Last edited by a moderator:
Okay thanks A LOT guys. :)
 
By the way, when you are ploting this in Mathematica, what is the code for changing the color of the plot?
 

Similar threads

  • · Replies 8 ·
Replies
8
Views
3K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 5 ·
Replies
5
Views
4K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 9 ·
Replies
9
Views
4K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 1 ·
Replies
1
Views
1K
  • · Replies 5 ·
Replies
5
Views
4K