Necesito una función que pueda evaluar en valores arbitrarios de x. Quiero controlar la forma de esa función mediante dos puntos finales y dos direcciones. Un polinomio cúbico simple se ajusta a ese requisito, pero es significativamente más "rígido" que una curva de Bezier cúbica en 2D.
Una curva de Bezier cúbica en 2D es una curva paramétrica descrita por dos polinomios cúbicos: $$x(t) = X_0*(1-t)^3 + X_1*3t(1-t)^2 + X_2*3t^2(1-t) + X_3*t^3$$ $$y(t) = Y_0*(1-t)^3 + Y_1*3t(1-t)^2 + Y_2*3t^2(1-t) + Y_3*t^3$$
Si $X_0 \le X_1 \le X_2 \le X_3$ (y no $X_0 = X_1 = X_2$ o $X_1 = X_2 = X_3$) entonces la curva es una función $y(x)$.
Sin embargo, la fórmula simbólica para $y(x)$ es grande y difícil de usar debido a que $t(x)$ es una solución a una ecuación cúbica.
Quiero encontrar una función con una representación simple de modo que su gráfico sea similar al de la curva de Bezier cúbica en 2D. La función debe estar principalmente parametrizada por dos puntos finales ($X_0$, $Y_0$, $X_3$, $Y_3$) y dos "direcciones" ($X_1 - X_0$, $Y_1 - Y_0$, $X_3 - X_2$, $Y_3 - Y_2$). Está bien tener algún parámetro adicional si es necesario.
Algunas propiedades de Bezier que me gustan:
- "Monotonía" - No introduce tantos mínimos locales adicionales como las aproximaciones de Fourier o polinomios de alto orden
- El rango de valores de Y entre los puntos finales se puede acotar fácilmente: $min(Y_i) \le min(y(x)) \le max(y(x)) \le max(Y_i)$
- Las derivadas infinitas son posibles en los puntos finales
Caso de uso: Quiero usar una función parametrizada $f(x)$ para aproximar algunas regiones de otras funciones ($tanh$, $exp(x)$, $log(x)$, $max(0, exp(x))$, $1/x$, $max(0, x)$, etc) con una transformación continua entre ellas. Esto es necesario para representar funciones de activación de redes neuronales entrenables.