gitrmora / OsciladorParametrico

0 stars 1 forks source link

Pruebas con la ecuación diferencial #5

Open gitrmora opened 7 years ago

gitrmora commented 7 years ago

Hola que tal. Subi los archivos moretest.ipynb y TaylorDiff2.jl donde implemento la ecuación diferencial y obtengo algunos resultados. ¿Ustedes obtuvierón lo mismo? .

H-Cote commented 7 years ago

Hola Creo que hay un problema con los métodos, pues no se obtienen los mismos resultados. Ya que los espacios fase que se obtienen en moretest.ipynb y en proy.ipynb son distintos utilizando los mismos valores para t0,tf,alfa y beta. Sin embargo, ambos coinciden en el caso de beta=0

gitrmora commented 7 years ago

Y tú método ¿como funciona?

H-Cote commented 7 years ago

El mio no funciona, he estado usando el archivo que subió Rubén para tratar de obtener la ymin para hacer la gráfica de la página 377.

gitrmora commented 7 years ago

¿Has conseguido algo?. ¿Podrías también utilizar mi código?.

H-Cote commented 7 years ago

Aún no, el problema que tengo es guardar los puntos donde x=0, ya que hay puntos muy próximos pero no son exactamente cero. Si, estaré viendo también si puedo obtener la y minima con el tuyo.

gitrmora commented 7 years ago

No entiendo que es lo que haces. En mi caso tengo que dar los valores de x_0 y y_0. ¿Como doy con y_min?

H-Cote commented 7 years ago

y_min se supone es cuando x=0. En proy.ipynb al usar el integrador (t2, sol2) = integradorT2(ec1, t0, tf, x̄, 10000, 1e-50); devuelve t2 = [tiempos] y sol2 = [x1,y1; x2, y2;....]. Del conjunto de x1,x2,x3.....etc trato de hallar aquellos que sean más cercanos a cero, pues a cada uno de estos valores les corresponderá un valor de y, el cual será una y_min.

Teniendo ese valor, creo una matriz: solucion=zeros(n,n) donde n son sus dimensiones

Agregamos los siguientes ciclos para cada uno de los valores de alfa y beta

for i=1:n for j=1:n α=α1[i] β=β1[j]

    #=Los valores de α y β irán cambiando por lo que en cada paso se debe
    calcular la solución=#
    (t2, sol2) = integradorT2(ec1, t0, tf, x̄, 100, 1e-50);
    y2 = map(y -> y[2], sol2)
   #=En esta parte va el método que obtiene y_min=#
end     

Para cada alfa y beta se obtiene una y min, y estos valores son los que ponemos en la matriz:

    solucion[i:i,j:j] =#y_min 

end

end

Luego la matriz solucion[i:i,j:j] se introduce en el método para graficar en 3D

gitrmora commented 7 years ago

El problema con lo que haces es que no necesariamente alguna componente de sol2 = [x1....] va a ser cero, más bien nosotros tenemos que asegurarnos de que eso suceda.

H-Cote commented 7 years ago

si, de hecho, tengo una duda ahi, si logramos asegurar que x=0, según yo, lo sería en más de un punto, por lo que tendríamos más de una y_minpara cada par de valores de alfa y beta

gitrmora commented 7 years ago

Tienes razón. En mis gráficas obtengo una solución periódica, así que existen un número infinito de puntos que satisfacen esa condición.

gitrmora commented 7 years ago

A menos que obtengamos el mínimo de todas esas opciones, pero serían muchos problemas y sólo lo lograriamos si tomamos un tiempo finito, ademas eso no nos asegura que encontremos el mínimo.

H-Cote commented 7 years ago

Eso cierto. Quizás el algoritmo del libro (que tampoco entiendo muy bien) considere, además de que x=0, una condición adicional para obtener y_min

gitrmora commented 7 years ago

Subi un archivo llamado articulo con parte de la traducción por si ayuda en algo.

H-Cote commented 7 years ago

ok, muchas gracias. Mientras trataré de seguir el algoritmo del libro.

gitrmora commented 7 years ago

Existe un gran problema. He revisado los 3 algoritmos ODE, el de Ruben y el mio. Ninguno tiene la misma solución. Revisen el archivo Proy...

H-Cote commented 7 years ago

Al escribir: t,x,y=integrador(f1,g1,x0,y0,t0,tf,ϵ,N) lo que te regresa es un arreglo ¿el orden de este es [t1,x1,y1,t2,x2,y2.....]?

gitrmora commented 7 years ago

¿Estan conectados?. Ya no puedo seguir conectado. Le voy a enviar a Luis lo que logramos o no logramos hacer. ¿Que les parece?

H-Cote commented 7 years ago

yo sigo conectado. Estoy de acuerdo, lo que he hecho hasta ahora no ha funcionado. Creo que nos haría falta analizar con Luis los pasos del algoritmo para poder avanzar.

gitrmora commented 7 years ago

No. Lo que te da t,x,y=integrador(f1,g1,x0,y0,t0,tf,ϵ,N) son 3 vectores. Pruebalos escribiendo en un comando ln[ ]:x. ¿Sabes algo de Ruben?

H-Cote commented 7 years ago

ok. No, no he sabido de él desde su último comentario.

gitrmora commented 7 years ago

Ya mande lo que pude. Si me necesitan para algo solo por via telefónica a partir de ahora.

ghost commented 7 years ago

Hola, disculpen no reportarme. Hoy tuve algunas entregas mas, los siento

ghost commented 7 years ago

voy viendo el comentario de Benet, creo que @gitrmora ya se retiro pero estas tu @H-Cote ?

ghost commented 7 years ago

Deberíamos decirle algo respecto a que no pudimos implementar el algoritmo?

H-Cote commented 7 years ago

Hola Veo difícil que podamos hacer algo aceptable con el tiempo que nos queda. Con lo del integrador tuvimos el problema de que los resultados de los integradores de proy.ipynb y moretest.ipynb devolvían resultados distintos, pero a su vez ambos coincidían para el caso de beta=0. Por otro lado, la obtención de y_min se tornó complicada.

ghost commented 7 years ago

ok, estoy haciendo algunas cosas de comparar mi integrador con ode78, comparando trayectorias y energias como dijo Luis. planeo hacer algunos cortes de poincare (la cosa estroboscopica que menciona Luis) no creo acabar a tiempo pero igual hare un PR desde mi repositorio

ghost commented 7 years ago

@H-Cote checa mi fork, estare subiendo las cosas en una rama llamada proyecto

H-Cote commented 7 years ago

ok, veré que puedo hacer con lo del mapeo también

ghost commented 7 years ago

descarga que te parece esto? crees que por aqui vaya? @H-Cote

H-Cote commented 7 years ago

¿es x vs x punto?

ghost commented 7 years ago

si, creo que puedo hacer esto para (a, b) = [0, 10]x[0, 10] y creo que ymin es el punto de estos que tenga y minima

H-Cote commented 7 years ago

si lo es, el punto es encontrarla. De acuerdo al libro, un primer paso para hallarla es definir deltas con los valores de x_k.

Para estas escribí lo siguiente:

`#delta x delta_x=[] x_fin=x2[end] for i=1:(length(x2)-1) delx=x_fin-x2[end-i] x_fin=x2[end-i] delta_x=push!(delta_x,delx) end

Cálculo de delta_x_max

delta_x_max=delta_x[1]

for i=1:(length(delta_x)-1) if delta_x_max<=delta_x[i] delta_x_max=delta_x[i] end end delta_x_max

Cálculo de delta_x_min

delta_x_min=delta_x[1]

for i=1:(length(delta_x)-1) if delta_x_min>=delta_x[i] delta_x_min=delta_x[i] end end delta_x_min`

ghost commented 7 years ago

No entiendo nada bien como aplicar el algoritmo.

ghost commented 7 years ago

Propongo que apelemos a la piedad de Luis y hablemos con el el lunes