Siguiendo con la obtención de extremos en curvas de eclipsantes o pulsantes y viendo que algunos métodos existentes no me convencen me dediqué a pensar algoritmos que me den los instantes de extremos lo más exactos posibles.
La primera idea fue calcular las diferencias entre las medidas, pensando que en los extremos se obtienen valores cercanos al cero. Probé el algoritmo (de nuevo en quickbasic) con un eclipse de la estrella v394 Cam.
Al ser un eclipse "ruidoso" la gráfica es demasiado oscilante alrededor de cero (hay muchas subidas y bajadas de brillo hasta pasar por el mínimo real). Al comprobar los primeros resultados cambié a otra idea, calcular en cada intervalo una regresión lineal (aproximación en cada tramo de unos pocos puntos por una recta de mejor ajuste). Así en cada intervalo calculé la pendiente de la recta deduciendo que en el extremo la pendiente pasa por el valor cero justo en el extremo.
La curva anterior corresponde a las pendientes en intervalos de 8 y 10 puntos. En el extremo real la pendiente cruza en valor cero. Pero la señal sigue siendo ruidosa, así que apliqué el cálculo de la pendiente a una curva de v394cam ya filtrada por regresión lineal. De modo que las pendientes quedan más suaves al reducirse los saltos en la curva de la estrella.
Evidentemente existe una diferencia en el paso por el valor cero según el grado de filtrado que empleamos en el algoritmo. Y esto es claramente visible en la curva que vamos obteniendo según ampliamos la "fuerza" del filtrado.
Posteriormente cambié las pruebas por una RR Lyr que ofrecía una curva más "suave", era un máximo de CI Ari.
Aplicando las pendientes se obtiene las siguiente gráfica donde se representa la curva obtenida por media movil y la curva obtenida por regresión lineal.
Al aplicar el algoritmo de las pendientes se obtiene la siguiente gráfica
Las pendientes van oscilando menos cada vez que la señal de entrada se suaviza, pero eso hace que el paso por el cero se desplace en cada curva.
La idea para terminar el algoritmo del cálculo del instante de paso por el extremo es ajustar en torno al valor cero la curva por un polinomio de tercer grado y con el método de bisección o Newton obtener el instante exacto del paso de la curva polinómica por el cero. Yo creo que es más fiable ajustar un trozo de curva cuasi rectilínea a un polinomio, que no usar el ajuste de la curva original por un polinomio de segundo orden (curva parabólica) que como se ve en V394 Cam no sería fácil de ajustar y que añadiría mayor inexactitud en los cálculos.
Todos esos pasos añaden al valor final una inexactitud con cada aproximación que se realiza hasta alcanzar el polinomio que mejor se ajusta a la curva de pendientes. Así que mi próxima meta será realizar un filtrado de señal (curva de luz de estrella) lo más exacta posible que desestime lo mejor posible el "ruido" sin afectar al comportamiento fundamental de la curva observada.
Así los pasos serían:
1º filtrar la curva original para disminuir el posible "ruido" introducido por la cámara, cielo, etc...
2º aplicar el algoritmo para obtener las pendientes de la curva
3º aplicar una regresión para ajustar la curva de pendientes a un polinomio de tercer grado en torno al extremo
4º obtener sobre el polinomio el valor de x para el cual la pendiente toma el valor cero (raiz del polinomio)
2 comentarios:
Es muy interesante el procedimiento que utilizas para el filtrado de la curva.
Magnífica entrada.
A mi siempre me han interesado los cálculos matemáticos de las estrellas variables, pero reconozco que me hace falta (aunque leo todo lo que puedo) más conocimiento matemático para mejorar los algoritmos que escribí en su tiempo y que vuelvo a intentar de nuevo a ratos.
Publicar un comentario