35 votos

¿La forma correcta de calcular el derivado numérico en tiempo discreto?

Dado un conjunto de mediciones discretas en el tiempo $x_t, t \in \{0,\Delta t, 2\Delta t,\ldots,T-\Delta t,T\}$ ¿cuál es la forma correcta de calcular el derivado discreto $\dot x_t$ . ¿Es más correcto tomar la diferencia con el valor anterior: $$\dot x_t = \frac{x_t-x_{t-1}}{\Delta t}$$ o con el siguiente valor en el tiempo: $$\dot x_t = \frac{x_{t+1}-x_t}{\Delta t}$$

Puede ser que ambos sean correctos en diferentes contextos, pero no estoy seguro de cuál es el apropiado cuando.

De la misma manera, ¿cómo debe ser computada la segunda derivada: $$\ddot x_t = \frac{\dot x_{t+1}-\dot x_t}{\Delta t}$$ o $$\ddot x_t = \frac{\dot x_t-\dot x_{t-1}}{\Delta t}$$

Para una función discreta bastante suave y pequeña $\Delta t$ ambos métodos son más o menos los mismos, pero ¿es uno más correcto que el otro?

31voto

Ron Gordon Puntos 96158

Una forma de calcular un derivado que tiene un error de segundo orden, en lugar de uno de primer orden, es utilizar una diferencia centrada:

$$\dot{x}_t = \frac{x_{t+1} - x_{t-1}}{2 \Delta t}$$

Por error de segundo orden, quiero decir que el error es $O(\Delta t)^2$ en lugar de $O(\Delta t)$ .

En los límites, use una diferencia hacia adelante o hacia atrás como usted proporcionó.

La segunda derivada está centrada naturalmente:

$$\ddot{x}_t = \frac{x_{t+1} - 2 x_t + x_{t-1}}{(\Delta t)^2}$$

16voto

Jan W. Puntos 121

Si buscas "aproximaciones de diferencias finitas" en cualquier libro de análisis numérico introductorio. Encontrará que hay varias de las llamadas fórmulas hacia adelante, hacia atrás y centradas tanto para la primera como para la segunda derivada. Las fórmulas que usted sugiere para las primeras derivadas son las aproximaciones hacia atrás y hacia adelante (respectivamente). Tienen orden 1, lo que significa que la diferencia entre el valor real de la derivada y sus aproximaciones, $$ \left|\dot{x}_t - \frac{x_{t+1} - x_t}{\Delta t}\right| = O(\Delta t). $$ Aquí, uso $\dot{x}_t$ para denotar el actual derivado de $x$ en $t$ . Todo esto asumiendo que hay una función suave subyacente $x(\cdot)$ de tal manera que $x_t = x(t)$ es decir, que sus datos son una muestra de un proceso sin problemas.

No se puede decir que sea "más correcto" usar la diferencia finita hacia adelante o hacia atrás; ambos tienen el orden 1. Esto significa que si se repite el muestreo con un $\Delta t$ que es la mitad de lo que es actualmente, el error anterior también se reduciría aproximadamente a la mitad.

Como mencionó otro cartel, es popular utilizar centrado diferencias finitas cuando es posible porque es una aproximación del orden 2: $$ \left|\dot{x}_t - \frac{x_{t+1} - x_{t-1}}{2\Delta t} \right| = O(\Delta t^2). $$ Esta vez, ¿debería tu $\Delta t$ se reduciría a la mitad, su error se dividiría por (aproximadamente) un factor de 4.

Elegir entre las fórmulas de aproximación no siempre es totalmente obvio. Claramente, el orden del término de error es importante, pero también podrían tenerse en cuenta otros factores. Por ejemplo, supongamos que los datos no se generan de antemano pero que hay un costo asociado a la generación de $x_{t+1}$ a partir de la generación previa de $x_s$ , $(s \leq t)$ . El esquema de retroceso entonces viene esencialmente gratis mientras que los esquemas de avance o centrado tienen un costo.

Las mismas consideraciones se aplican a las aproximaciones de los derivados de segundo orden.

Esas fórmulas se encuentran típicamente computando una función simple que interpola sus datos (un polinomio o un spline, por ejemplo), y luego diferenciando esa función simple. Las aproximaciones que mencionas provienen de la interpolación de polinomios.

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