Primero, por favor, tened en cuenta que soy programador, no matemático, y que tengo una buena formación matemática.
He utilizado la optimización en Java para ajustar algunas observaciones a una función trigonométrica, he probado los siguientes optimizadores: BOBYQA, CMA-ES, Powell, y Simplex para optimizar la función como función escalar, y también Levenberg-Marquardt y Gauss-Newton para optimizarla como función vectorial, obtuve buenos resultados para
$z = a.\sin(x)+b.\cos(y)$
pero para una relación no lineal como: $y = \cos(a.x)$ o $z = \sin(a.x) + \cos(b.x)$ los resultados son muy insatisfactorios y tengo que elegir una estimación inicial muy cercana a los valores correctos de $a$ y $b$ Y ciertamente esto no es práctico, ejemplo:
$y=6.4\cdot e^{5.5x}$
da
$(6.39 \text{ and } 5.5)$ si la conjetura inicial se establece en $(7,7)$
y da
$(2.07 \text{ and }5.5)$ para la estimación inicial de $(8,8)$
y, ciertamente, esta es una suposición muy mala. Así que supongo que necesito cualquiera de las dos opciones:
- Encontrar un método para seleccionar una muy buena suposición inicial
- Encontrar un método para mejorar el optimizador de manera que pueda obtener un buen resultado aunque la conjetura inicial no sea buena.
Gracias