Standardowe wzory różnic skończonych są użyteczne do obliczenia liczbowego pochodnej w oczekiwaniu, że masz wartości funkcji w równomiernie rozmieszczonych punktach, tak że jest stałą. Co się stanie, jeśli mam nierównomiernie rozmieszczone punkty, tak że różni się od jednej pary sąsiednich punktów do następnej? Oczywiście nadal mogę obliczyć pierwszą pochodną jako , ale czy istnieją formuły numerycznego zróżnicowania przy wyższych rzędach i dokładności, które można dostosować do zmian wielkości siatki?h ≡ x k + 1 - x k h f ′ ( x ) ≈ 1
finite-difference
discretization
David Z
źródło
źródło
Odpowiedzi:
Komentarz JM ma rację: możesz znaleźć interpolujący wielomian i go rozróżnić. Istnieją inne sposoby uzyskiwania takich wzorów; zazwyczaj wszystkie prowadzą do rozwiązania systemu van der Monde dla współczynników. Takie podejście jest problematyczne, gdy szablon różnic skończonych zawiera dużą liczbę punktów, ponieważ matryce Vandermonde stają się źle uwarunkowane. Fornberg opracował bardziej stabilne liczbowo podejście , które wyjaśniono jaśniej i ogólnie w drugiej jego pracy.
Oto prosty skrypt MATLAB, który implementuje metodę Fornberga do obliczania współczynników przybliżenia różnic skończonych dla dowolnej pochodnej rzędu z dowolnym zestawem punktów. Dobre wyjaśnienie znajduje się w rozdziale 1 tekstu LeVeque na temat metod różnic skończonych .
Trochę więcej o formułach FD: Załóżmy, że masz siatkę 1D. Jeśli użyjesz całego zestawu punktów siatki do ustalenia zestawu formuł FD, uzyskana metoda jest równoważna znalezieniu interpolującego wielomianu przez całą siatkę i rozróżnieniu tego. To podejście jest nazywane kolokacją spektralną. Alternatywnie, dla każdego punktu siatki można określić formułę FD, używając tylko kilku sąsiadujących punktów. Tak się dzieje w tradycyjnych metodach różnic skończonych.
Jak wspomniano w komentarzach poniżej, użycie skończonych różnic bardzo wysokiego rzędu może prowadzić do oscylacji (zjawisko Runge), jeśli punkty nie zostaną starannie wybrane.
źródło
http://mathformeremortals.wordpress.com/2013/01/12/a-numerical-second-derivative-from-three-points/
To rozwiązuje twoje pytanie i pokazuje wzór, którego szukasz, dla drugiej pochodnej. Pochodne wyższego rzędu mają ten sam wzór.
źródło
Powyższe odpowiedzi są świetne, jeśli chodzi o podanie kodu do użycia, ale nie są tak dobre, jeśli chodzi o teorię. Jeśli chcesz zagłębić się w interpolację wielomianów, spójrz na to teoretyczne traktowanie z kilkoma konkretnymi przykładami:
Autorzy używają interpolacji Lagrangian (patrz artykuł na Wikipedii ) do obliczania wielomianów interpolacyjnych 3-punktowych, 4-punktowych i 5-punktowych, a także ich pierwszej, drugiej i trzeciej pochodnej. Mają także wyrażenia dotyczące błędu obcięcia, co należy wziąć pod uwagę przy stosowaniu dowolnego schematu różnic skończonych. Mają także ogólny wzór do obliczania interpolujących wielomianów za pomocą N punktów.
Wielomian interpolujący Lagrangiana jest użyteczny, ponieważ one i ich pochodne mogą być bardzo dokładne w dziedzinie, w której interpolujesz, i nie zakładają równych odstępów siatki. Ze względu na naturę wielomianów interpolujących Lagrangian nigdy nie możesz mieć więcej rzędów pochodnych niż punktów siatki.
Myślę, że to dobrze odpowiada na twoje pytanie, ponieważ cytowany przeze mnie artykuł ma formuły dla schematów skończonych różnic arbitralnie wysokiego rzędu, które z natury są dla nierównych siatek i są ograniczone tylko liczbą punktów siatki, które są zawarte w szablonie. Artykuł zawiera również ogólną formułę błędu obcięcia, która pomoże ci ocenić wielomian interpolacyjny Lagrangiana względem innych schematów, które możesz wziąć pod uwagę. Praca autora powinna dać takie same wyniki jak metoda Fornberga. Ich wkład polega na zestawieniu kilku przykładów i oszacowaniu błędu, który może okazać się przydatny.
Odkryłem, że zarówno cytowany przeze mnie artykuł, jak i praca Fornberga są przydatne w moich własnych badaniach.
źródło
Znalazłem ten artykuł o formułach różnic skończonych z nierównymi pod-interwałami . Użyję tego zamiast interpolacji. Po wpisaniu wszystkich formuł opublikuję je tutaj.
źródło
Najprostszą metodą jest użycie przybliżeń różnic skończonych.
Prostym dwupunktowym oszacowaniem jest obliczenie nachylenia pobliskiej linii siecznej przez punkty (x, f (x)) i (x + h, f (x + h)). [1] Wybór małej liczby h, h oznacza małą zmianę x, i może być dodatnia lub ujemna. Nachylenie tej linii to
To wyrażenie jest ilorazem różnicy Newtona.
Nachylenie tej siecznej linii różni się od nachylenia linii stycznej o wielkość, która jest w przybliżeniu proporcjonalna do h. Gdy h zbliża się do zera, nachylenie linii siecznej zbliża się do nachylenia linii stycznej. Dlatego prawdziwa pochodna f at x jest granicą wartości ilorazu różnicy, gdy linie sieczne zbliżają się coraz bardziej do bycia linią styczną
źródło