Autor |
Mensaje |
Rulo86
Nivel 6
Edad: 37
Registrado: 16 Sep 2006
Mensajes: 258
Carrera: Electrónica y Informática
|
|
Se tiene un muestreo de aproximadamente 500 puntos, los mismos representan posición en función del tiempo. Se sabe que la función tiene que tener la forma A.sen(B.t + C) y se buscan los valores mas adecuados para las constantes A, B y C.
se podría generar un polinomio de taylor que aproxime a la función A.sen(B.t + C) y a partir de ahi calcular los coeficientes por cuadrados mínimos.
alguno conoce un método mejor para ajustar la función?
|
|
|
|
|
|
|
|
|
IgnacioB
Nivel 5
Registrado: 27 Ago 2007
Mensajes: 191
Carrera: Civil
|
|
Cursé numérico hace mucho, no te contesté porque estaba esperando a ver si alguno se acuerda mejor.
Estoy casi seguro de que vimos una forma de, dada una serie de puntos muestrales, ajustar coeficientes de una función con la forma que vos elijas. También minimizaba el error cuadrático pero sin necesidad de hacer taylor. Te quedaba un sistema de ecuaciones lineales, era sencillito.
El problema es que más allá de recordar que existe, no te puedo decir nada. Te sugiero que lo busques en el Burden, que tiene todo lo que dan en numérico.
|
|
|
|
_________________
|
|
|
|
|
Monty
Nivel 5
Edad: 37
Registrado: 24 Jul 2007
Mensajes: 168
Ubicación: cap fed
Carrera: Electrónica
|
|
intuitivamente me parece que sale facil como un problema de cuadrados minimos si usas la expresion compleja de seno:
2i.senx = eix - e-ix
|
|
|
|
|
|
|
|
|
Stoma
Nivel 8
Edad: 36
Registrado: 06 Jul 2006
Mensajes: 510
Carrera: Informática
|
|
Con ajuste. No lo vas a poder resolver a mano porque el ajuste hace producto interno entre puntos de la funcion real y la de ajuste, y con 500 puntos de muestra vas a estar toda una vida. Despues te queda un sistema de ecuaciones para resolver (que es simetrico, que suerte, en vez de hacer 1312328190382109 cuentas, solo tenes que hacer la mitad)
Busca ajuste numerico (cuadrados minimos) por algun lado (paja para buscar cuaderno de numerico en el kilombo que tengo...)
saludos
Nico
|
|
|
|
_________________
Si yo te digo carnaval...
|
|
|
|
|
Rulo86
Nivel 6
Edad: 37
Registrado: 16 Sep 2006
Mensajes: 258
Carrera: Electrónica y Informática
|
|
Stoma escribió:
|
No lo vas a poder resolver a mano porque el ajuste hace producto interno entre puntos de la funcion real y la de ajuste, y con 500 puntos de muestra vas a estar toda una vida.
|
Los 500 puntos los recibe un programa y el mismo es el que debe encontrar la mejor aproximacion. no se pretende hacerlo a mano.
En este momento se ajusta buscando donde estan tres raices para encontrar la frecuencia y la fase, y los puntos maximos y minimos para encontrar la amplitud.
La idea es mejorar este ajuste que es bastante malo ( si un punto de medicion es malo puede molestar mucho).
Para usar cuadrados minimos el problema es que hay que encontrar funciones que sean LI que van a ser la base para aproximar los puntos de muestreo.
Si mi funcion a aproximar fuera simplemente A.sen(t) simplemente la base queda formada por sen(t) y por cuadrados mínimos busco el coeficiente A.
Ahora como quiero aproximar A.sen(B.t + C), ¿¿que funciones LI usamos para aplicar cuadrados mínimos??, a lo sumo hay que hacer una aproximacion por polinomio de taylor y caemos en la propuesta que hice en el primer post.
|
|
|
|
|
|
|
|
|
Jorge Pérez
Nivel 6
Registrado: 02 May 2006
Mensajes: 210
|
|
No podés aplicar cuadrados mínimos directamente porque el conjunto de funciones parametrizado por Asen(Bt+C) no es un subespacio. Si primero ajustás la frecuencia B, obteniendo un valor estimado B*, entoces sí podés usar cuadrados mínimos porque
Asen(B*t+C)=Acos(C) sen(B*t)+Asen(C) cos(B*t)=c1 sen(B*t)+c2 cos(B*t), y {sen(B*t), cos(B*t)} es la base de funciones.
La frecuencia quizá la puedas estimar mediante transformada rápida de Fourier.
|
|
|
|
|
|
|
|
|
Monty
Nivel 5
Edad: 37
Registrado: 24 Jul 2007
Mensajes: 168
Ubicación: cap fed
Carrera: Electrónica
|
|
si pero con FFT podrias llegara a estimar fijando A y C, entonces podrias estimar B, pero eso no seria la solucion optima.
O sea vos queres minimizar la distancia cuadratica en ordenadas, o la distancia entre f y g dada por
d(f,g) = sumatoria (i=0, n (cant de puntos) ) (f- - gi)2
o sea el objetivo seria reexpresar la funcion:
Asen(Bt + C) como
Asen(Bt + C) = Af1(t) + Bf2(t) + Cf3(t)
si logras hallar tres funciones (no necesariamente continuas) que hagan ese trabajo ya esta, no??
|
|
|
|
|
|
|
|
|
Rulo86
Nivel 6
Edad: 37
Registrado: 16 Sep 2006
Mensajes: 258
Carrera: Electrónica y Informática
|
|
Monty escribió:
|
Asen(Bt + C) = Af1(t) + Bf2(t) + Cf3(t)
si logras hallar tres funciones (no necesariamente continuas) que hagan ese trabajo ya esta, no??
|
claro, mi base seria {f1, f2, f3}
|
|
|
|
|
|
|
|
|
Monty
Nivel 5
Edad: 37
Registrado: 24 Jul 2007
Mensajes: 168
Ubicación: cap fed
Carrera: Electrónica
|
|
bueno una manera de obtener esa base es mediante la transformada de fourier
intuitivamente estarias obteniendo la proyeccion de la funcion a aproximar en el espacio de las funciones trigonometricas
|
|
|
|
|
|
|
|
|
Jorge Pérez
Nivel 6
Registrado: 02 May 2006
Mensajes: 210
|
|
Monty escribió:
|
si pero con FFT podrias llegara a estimar fijando A y C, entonces podrias estimar B, pero eso no seria la solucion optima.
O sea vos queres minimizar la distancia cuadratica en ordenadas, o la distancia entre f y g dada por
d(f,g) = sumatoria (i=0, n (cant de puntos) ) (f- - gi)2
o sea el objetivo seria reexpresar la funcion:
Asen(Bt + C) como
Asen(Bt + C) = Af1(t) + Bf2(t) + Cf3(t)
si logras hallar tres funciones (no necesariamente continuas) que hagan ese trabajo ya esta, no??
|
El tema es que no podés expresar
Asen(Bt + C) = Af1(t) + Bf2(t) + Cf3(t)
con f1,f2,f3 independientes de A,B,C. Por eso decía que el conjunto de funciones {Asen(Bt + C)} no es subespacio. En este caso la mejor aproximación no se puede pensar como una proyección.
Si la función que muestreaste tiene una única frecuencia B, la fft tendría que tener un pico pronunciado en esa frecuencia y eso te permitiría identificarla. Luego ajustás por cuadrados mínimos A y C tomando como base sen(Bt) y cos(Bt). Por supuesto no sería óptima pero me parece mejor que usar aprox. de Taylor.
|
|
|
|
|
|
|
|
|
Monty
Nivel 5
Edad: 37
Registrado: 24 Jul 2007
Mensajes: 168
Ubicación: cap fed
Carrera: Electrónica
|
|
jorge, me parece que tenes toda la razon del mundo.
yo podria reexpresar Asen(bt+c) = Af1(t) + Bf2(t) + Cf3(t) pero seria B=B(A), C=C(A) p. ej.
En tal caso, si las B y C son lineales es facil obtener la proyeccion pero si son no lineales ya no se puede sacar facil por proyeccion.
yendo a lo practico:
Ruo86, si lo que hay que hallar son los A, B, C que verifican esto, lo podes encarar como un problema de analisis 2
dist = sumatoria(i=1, n) (Asen(Bti + C) - f(ti) )2
los (ti, fi) son datos y te queda armarte el hessiano de toda esa sumatoria...
ademas, lo podrias resolver con solver o whatsbest en excel para hallar los A, B, C.
igual, habia un truquito con la fft para resolver esta clase de problemas no??
|
|
|
|
|
|
|
|
|
|