6 votos

Ajuste de una función exponencial a los datos

Tengo un conjunto de datos ruidosos (la línea gris en el gráfico de abajo) que corresponde aproximadamente a $y=m(1-2^{-x/k})$ donde m y k son constantes desconocidas.

¿Cómo puedo determinar el valor más adecuado de m y k ?

enter image description here

Puedo obtener un valor aproximado de k al adivinar m y luego hacer una regresión lineal sobre $-\log_2(1-y/m)$ ... con esto estimo m \=0,96 y k \=1000 (véanse las líneas punteadas rojas y azules de arriba), pero ¿hay una forma más sistemática?

Gracias de antemano.

5voto

Andrew Puntos 140

¿Por qué no hacer mínimos cuadrados no lineales a través de Levenberg-Marquardt en lugar de juguetear con las linealizaciones? Existe la lsqnonlin() función disponible en MATLAB a través de la caja de herramientas de optimización. Tendrá que calcular unos buenos valores de partida para $m$ y $k$ Aunque esa LM puede pulir una respuesta (esperemos) adecuada.

0 votos

Gracias por esto, no me había encontrado con lsqnonlin() antes... Veré si puedo hacer que funcione.

1voto

Libor Puntos 662

Hice esto artículo tutorial sobre los métodos de mínimos cuadrados lineales y no lineales.

1voto

Count Iblis Puntos 2083

Otro método es realizar una transformada de Laplace sobre los datos para transformar la función en una función racional. En general, se puede aplicar un ajuste polinómico y luego utilizar el método de aproximación de Padé para escribirlo como una función racional de la forma deseada, pero en este caso no necesitamos hacerlo, como veremos a continuación.

Como las transformadas de Laplace implican una integral de cero a infinito, tenemos que imponer un corte. En este caso, esto requiere multiplicar los datos por una exponencial $\exp(-\lambda x)$ donde usted elige $\lambda$ de tal manera que en $x = 8000$ la función está cerca de cero mientras que todavía tiene un rango justo para $x$ donde la función no es pequeña. Por ejemplo, tomando $\lambda = \frac{1}{1500}$ debería dar un buen resultado. Un corte en $x = 8000$ puede entonces imponerse con un error insignificante.

Por lo tanto, queremos hacer un ajuste utilizando una función de la forma:

$$f(x) = m\left[\exp(-\lambda_1 x) - \exp(-\lambda_2 x)\right]$$

La transformada de Laplace de esto es:

$$\hat{f}(s) = m\frac{\lambda_2 - \lambda_1}{(s+\lambda_1)(s+\lambda_2)}$$

Esto significa que hacer un ajuste cuadrático a $\frac{1}{\hat{f}(s)}$ dará lugar a los parámetros $m$ , $\lambda_1$ y $\lambda_2$ .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X