I really want to draw the precession of mercury

1 view (last 30 days)
clc;clear all;
a=10;
b=5;
lambda=.5;
v1=1/20;
v2=3;
t=0:.1:40;
x(t)=a.^2+b.^2 +a*cos(2*pi*v1*t)*cos(2*pi*v2*t)-lambda*b*sin(2*pi*v1*t)*sin(2*pi*v2*t);
y(t)=a.^2+b.^2 +a*sin(2*pi*v1*t)*cos(2*pi*v2*t)-lambda.*b*cos(2*pi*v1*t)*sin(2*pi*v2*t);
plot(x(t),y(t))
This is my program. but it's not running cause there is a dimension mismatch. can anybody tell me what did i do wrong?
  1 Comment
Meindert Norg
Meindert Norg on 9 Jan 2018
In case you have not figured it out in the mean time:
  • Remove the element-wise ".^2"
a^2+b^2
  • add element wise multiplication for the vectors where 't' is used:
a*cos(2*pi*v1*t).*cos(2*pi*v2*t)
  • fix the way you plot it:
plot(x,y)
Here is the result:
clc;clear all;
a=10;
b=5;
lambda=.5;
v1=1/20;
v2=3;
t=0:.1:40;
x=a^2+b^2 + a*cos(2*pi*v1*t).*cos(2*pi*v2*t)-
lambda*b*sin(2*pi*v1*t).*sin(2*pi*v2*t);
y=a^2+b^2 + a*sin(2*pi*v1*t).*cos(2*pi*v2*t)-
lambda.*b*cos(2*pi*v1*t).*sin(2*pi*v2*t);
plot(x,y)

Sign in to comment.

Accepted Answer

Guillaume
Guillaume on 10 Nov 2017
As the error message says
x(t)
is only valid if t is a real positive integer.
The simplest way to solve your problem is to get rid of the indexing of x and y which is completely meaningless
x = a^2 + b^2 + a*cos(2*pi*v1*t) .* cos(2*pi*v2*t) - ...
y = a^2 + b^2 + ...
plot(x, y)

More Answers (1)

M
M on 10 Nov 2017
Edited: M on 10 Nov 2017
First :
a.^2
the dot is useless as a is a scalar
but I think you should add a dot between the cos multiplication :
a*cos(2*pi*v1*t).*cos(2*pi*v2*t)
otherwise you will get an error.
Then, if you start at t=0, you will get an error as you're trying to acces
x(t)=x(0)
but Matlab indices should be positive integers.
  1 Comment
Asir Tushar
Asir Tushar on 10 Nov 2017
x(t)=a^2+b^2 +a*cos(2*pi*v1*t).*cos(2*pi*v2*t)-lambda*b*sin(2*pi*v1*t).*sin(2*pi*v2*t);
y(t)=a^2+b^2 +a*sin(2*pi*v1*t).*cos(2*pi*v2*t)-lambda*b*cos(2*pi*v1*t).*sin(2*pi*v2*t);
i corrected the code like you said. still this message is showing for these two lines "Subscript indices must either be real positive integers or logicals.

Sign in to comment.

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!