• Jueves 2 de Mayo de 2024, 08:59

Autor Tema:  Optimización bucle for  (Leído 1235 veces)

rodrikas

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Optimización bucle for
« en: Jueves 5 de Noviembre de 2009, 18:53 »
0
Hola,

Necesito resolver una ecuación implicita (ecuación de dispersión) de forma sucesiva para muchos valores (aproximadamente 100.000 veces).
El script funciona bien, lo que ocurre es que a partir de un determinado número de resoluciones (aproximadamente 1000-2000), se empieza a raletizar.
El resultado es que tengo que dividir el archivo en varios pequeños y la resolución de todos los casos me puede llevar más de una semana.
Supongo que esto es debido al bucle for que tengo en el script, aunque no estoy del todo seguro. A continuación dejo el script. Estaría agradecido si alguien
le pudiese echar un vistazo y corregirlo para su optimización. Muchas gracias por todo!

Hm0=data(1:100000,5);    %dato
Tp=data(1:100000,9);   %dato
Te=0.9*Tp;              %dato

fidw=fopen('wave_power','wt');
n=length(Te);
for i=1:n
syms L
d=52;                  
pi=3.1416;
L=solve(L-(9.81*Te(i)^2/(2*pi))*tanh((2*pi/L)*d));
L=double(L);
L=abs(L);
vector_L(i)=L;      
k=2*pi/L;
c=L/Te(i);
n=0.5*(1+(2*k*d/sinh(2*k*d)));
cg=n*c;
J=((1/16)*1025*9.81*Hm0(i)^2*cg)*0.001;  %kW/m
fprintf(fidw,'%03.1fn',J);
end
fclose(fidw);