Borrar filtros
Borrar filtros

I really want to draw the precession of mercury

2 visualizaciones (últimos 30 días)
Asir Tushar
Asir Tushar el 10 de Nov. de 2017
Comentada: Meindert Norg el 9 de En. de 2018
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 comentario
Meindert Norg
Meindert Norg el 9 de En. de 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)

Iniciar sesión para comentar.

Respuesta aceptada

Guillaume
Guillaume el 10 de Nov. de 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)

Más respuestas (1)

M
M el 10 de Nov. de 2017
Editada: M el 10 de Nov. de 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 comentario
Asir Tushar
Asir Tushar el 10 de Nov. de 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.

Iniciar sesión para comentar.

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by