Las fórmulas de diferencia finita estándar se pueden usar para calcular numéricamente una derivada con la expectativa de que tenga valores de función en puntos espaciados uniformemente, de modo que es una constante. ¿Qué sucede si tengo puntos desigualmente espaciados, de modo que ahora varía de un par de puntos adyacentes al siguiente? Obviamente, todavía puedo calcular una primera derivada como , pero ¿existen fórmulas de diferenciación numérica en órdenes superiores? y precisiones que pueden adaptarse a la variación en el tamaño de la cuadrícula?
finite-difference
discretization
David Z
fuente
fuente
Respuestas:
El comentario de JM es correcto: puede encontrar un polinomio interpolador y diferenciarlo. Hay otras formas de derivar tales fórmulas; típicamente, todos conducen a resolver un sistema de van der Monde para los coeficientes. Este enfoque es problemático cuando la plantilla de diferencias finitas incluye una gran cantidad de puntos, porque las matrices de Vandermonde se vuelven mal condicionadas. Fornberg ideó un enfoque numéricamente más estable , y se explica de manera más clara y general en un segundo artículo suyo.
Aquí hay un script MATLAB simple que implementa el método de Fornberg para calcular los coeficientes de una aproximación de diferencia finita para cualquier derivada de orden con cualquier conjunto de puntos. Para una buena explicación, vea el Capítulo 1 del texto de LeVeque sobre métodos de diferencias finitas .
Un poco más sobre las fórmulas FD: supongamos que tiene una cuadrícula 1D. Si utiliza todo el conjunto de puntos de la cuadrícula para determinar un conjunto de fórmulas FD, el método resultante es equivalente a encontrar un polinomio interpolador a través de toda la cuadrícula y diferenciarlo. Este enfoque se conoce como colocación espectral. Alternativamente, para cada punto de la cuadrícula, puede determinar una fórmula FD utilizando solo unos pocos puntos vecinos. Esto es lo que se hace en los métodos tradicionales de diferencias finitas.
Como se menciona en los comentarios a continuación, el uso de diferencias finitas de muy alto orden puede provocar oscilaciones (el fenómeno Runge) si los puntos no se eligen con cuidado.
fuente
http://mathformeremortals.wordpress.com/2013/01/12/a-numerical-second-derivative-from-three-points/
Esto responde a su pregunta y muestra la fórmula que está buscando, para la segunda derivada. Los derivados de orden superior siguen el mismo patrón.
fuente
Las respuestas anteriores son excelentes en términos de darle un código para usar, pero no son tan buenas en términos de teoría. Si desea profundizar en los polinomios de interpolación, eche un vistazo a este tratamiento teórico con algunos ejemplos concretos:
Los autores utilizan la interpolación lagrangiana (consulte el artículo de Wikipedia ) para calcular polinomios de interpolación de 3 puntos, 4 puntos y 5 puntos, así como sus derivadas primera, segunda y tercera. También tienen expresiones para el error de truncamiento, que es importante tener en cuenta al usar cualquier esquema de diferencia finita. También tienen la fórmula genérica para calcular polinomios de interpolación usando N puntos.
Los polinomios de interpolación lagrangianos son útiles porque ellos y sus derivados pueden ser muy precisos en el dominio que está interpolando, y no suponen un espaciado de cuadrícula uniforme. Debido a la naturaleza de los polinomios de interpolación lagrangianos, nunca puede tener más órdenes de derivados que los puntos de cuadrícula.
Creo que esto responde bien a su pregunta porque el documento que cité tiene fórmulas para esquemas de diferencias finitas arbitrariamente de orden superior, que por naturaleza son para cuadrículas desiguales y están limitadas solo por el número de puntos de cuadrícula que incluye en su plantilla. El documento también tiene una fórmula genérica para el error de truncamiento, que lo ayudará a evaluar el esquema polinomial de interpolación lagrangiano frente a otros esquemas que podría estar considerando. El artículo del autor debe dar los mismos resultados que el método de Fornberg. Su contribución es realmente solo contar algunos ejemplos y dar una estimación del error, lo que puede ser útil.
Encontré que tanto el trabajo que cité como el trabajo de Fornberg son útiles para mi propia investigación.
fuente
Encontré este artículo sobre fórmulas de diferencias finitas con subintervalos desiguales . Voy a usar esto en lugar de la interpolación. Una vez que escriba todas las fórmulas, las publicaré aquí.
fuente
El método más simple es usar aproximaciones de diferencias finitas.
Una estimación simple de dos puntos es calcular la pendiente de una línea secante cercana a través de los puntos (x, f (x)) y (x + h, f (x + h)). [1] Al elegir un número pequeño h, h representa un pequeño cambio en x, y puede ser positivo o negativo. La pendiente de esta línea es
Esta expresión es el cociente de diferencia de Newton.
La pendiente de esta línea secante difiere de la pendiente de la línea tangente en una cantidad que es aproximadamente proporcional a h. Cuando h se aproxima a cero, la pendiente de la línea secante se aproxima a la pendiente de la línea tangente. Por lo tanto, la verdadera derivada de f en x es el límite del valor del cociente de diferencia a medida que las líneas secantes se acercan cada vez más a ser una línea tangente
fuente