Matlab - generacion matriz

 
Vista:

generacion matriz

Publicado por Agustin (4 intervenciones) el 22/11/2016 16:03:38
Hola. tengo quencion para generar una poder utilizar lsode("yprima",xo,t) para resolver un sistema de ecuaciones diferenciales.
La funcion que debo desarrollar es para el "problema de los 3 cuerpos restringidos de euler".
Hasta el momento tengo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function [yp]=yprimas(y,t)
 
% y(1)= x1
% y(2)= x1´
% y(3)= x2
% y(4)= x2´
y=[2 3 4 5]
mu=1/82.45;
nu=1-mu;
yp=y;
h=201
 
 
% distancias del satélite a la tierra y a la luna,
d1=((y(1)+mu)^2+y(3)^2)^1.5;
d2=((y(1)-nu)^2+y(3)^2)^1.5;
 
%ecuaciones
yp(1)=y(2);
yp(2)=2*y(4)+y(1)-nu*(y(1)+mu)/d1-mu*(y(1)-mu)/d2;
yp(3)=y(4);
yp(4)=-2*y(2)+y(3)-nu*(y(3)+mu)/d1-mu*(y(3)-mu)/d2;

Ahora, lo que tengo que hacer es generar un loop para que con las ecuaciones yp me genere una matriz con iteraciones de 4 columnas pero con 201 filas (cantidad de tramos en que se divide mi intervalo).

como genero los for/while para las iteraciones correspondientes
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Royeth
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

generacion matriz

Publicado por Royeth (1818 intervenciones) el 22/11/2016 16:15:14
Utiliza dos for anidado

1
2
3
4
5
6
matriz=[];
for i=1:201 %puedes reemplzar el 201 por h
for j=1:4
matriz(i,j)=rand; %aquí donde va rand colocas la operación que vas a realizar 
end
end


saludos
https://www.facebook.com/royethmatlab/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

generacion matriz

Publicado por Agustin (4 intervenciones) el 22/11/2016 18:43:35
Muchas gracias. tengo solo una duda.
Donde pones que debo colocar la funcion que debo realizar es solo la llamada a la otra funcion? O como funcionaria? no tengo que aclrar ningun temas indices/subindices?
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Royeth
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

generacion matriz

Publicado por Royeth (1818 intervenciones) el 22/11/2016 18:57:59
sí pero eso depende de cómo definas la función , si tienes 4 funciones entonces el índice i es el que te indica cuál función vas a usar

mira un ejemplo :

1
2
3
a={@(x) x+2,@(x) x+1};
 
a{1}(2)    %aquí uso la primera función y le asigno un valor de 2 a la x
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

generacion matriz

Publicado por Agustin (4 intervenciones) el 22/11/2016 19:04:21
No termino de entender la verdad,(estoy lejos de ser un experto talvez sea por eso ) pero no veo como ir llamando las diferentes ecuaciones.
Sería algo asi??

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function [yp]=yprimas(y,t)
 
% y(1)= x1
% y(2)= x1´
% y(3)= x2
% y(4)= x2´
y=[2 3 4 5]
mu=1/82.45;
nu=1-mu;
yp=y;
h=201
 
 
% distancias del satélite a la tierra y a la luna,
d1=((y(1)+mu)^2+y(3)^2)^1.5;
d2=((y(1)-nu)^2+y(3)^2)^1.5;
 
%ecuaciones
yp(1)=y(2);
yp(2)=2*y(4)+y(1)-nu*(y(1)+mu)/d1-mu*(y(1)-mu)/d2;
yp(3)=y(4);
yp(4)=-2*y(2)+y(3)-nu*(y(3)+mu)/d1-mu*(y(3)-mu)/d2;
 
T=zeros(h,4)
 
for i=1:201
  for j=1:4
    T(i,j)=yp(i)----aqui es que no se como llamar las 4 "yp( )" que tengo mas arriba
  end
end
end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Royeth
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

generacion matriz

Publicado por Royeth (1818 intervenciones) el 22/11/2016 19:15:47
sería yp(j) pero no logro ver la relación de tus funciones con respecto a tus intervalos que va de 1 a 201 , lo ideal sería evaluar las funciones en cada intervalo y para eso se usan las funciones handles , puedes buscar su funcionamiento en la página de matlab
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

generacion matriz

Publicado por Agustin (4 intervenciones) el 22/11/2016 19:22:23
el intervalo en realidad va de 1 a 201 porque son la cantidad de particiones que le hago. el intervalo es de 0 a 2 y debo partirlo en segmentos de 0.01. Por eso puse directo el 201 para no meterme con otra formula.
No se bien que es la funcion handles y no me lo han explicado en el curso que estoy haciendo de metodos numericos, por eso me resulta extraño que fuese necesaria.
Le agradezco muchisimo de todas maneras por su tiempo.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar