Przegląd
Dobre pytanie. Istnieje artykuł zatytułowany „Poprawa dokładności metody różnicowania macierzy dla dowolnych punktów kolokacji” autorstwa R. Baltenspergera. Moim zdaniem nie jest to nic wielkiego, ale ma sens (który był znany już przed pojawieniem się w 2000 r.): Podkreśla znaczenie dokładnego przedstawienia faktu, że pochodna funkcji stałej f(x)=1 powinna być równe zero (dotyczy to dokładnie matematyki, ale niekoniecznie w postaci liczbowej).
Łatwo zauważyć, że wymaga to, aby sumy wierszy n-tej macierzy pochodnych D(n) były równe zero. Często wymusza się to ograniczenie, dostosowując przekątną, tj. Ustawiając D(n)jj:=−∑i=1i≠jNDij.(1)
Oczywiste jest, że ta funkcja nie działa dokładnie podczas pracy na komputerze z powodu błędów zaokrągleń w obliczeniach zmiennoprzecinkowych. Bardziej zaskakujące jest to, że błędy te są jeszcze poważniejsze, gdy stosuje się wzory analityczne dla macierzy pochodnych (które są dostępne dla wielu klasycznych punktów kolokacji, np. Gaussa-Lobatto).
Teraz artykuł (i zawarte w nim odnośniki) stwierdza, że błąd pochodnej jest rzędu odchylenia sum wierszy od zera. Dlatego celem jest, aby były one jak najmniejsze numerycznie.
Testy numeryczne
Chodzi o to, że procedura Fornberga wydaje się być pod tym względem całkiem dobra. Na poniższym obrazku porównałem zachowanie dokładnej, tj. Analitycznej, pierwszej macierzy pochodnej i tej uzyskanej przez algorytm Fornberga, dla różnej liczby punktów kolokacji Czebyszewa-Lobatta.
Ponownie, wierząc w stwierdzenie w cytowanym artykule, oznacza to, że algorytm Fornberga da bardziej dokładne wyniki dla pochodnej.
Aby to udowodnić, użyję tej samej funkcji, co w pracy,
f(x)=11+x2.(2)
En=maxi∈{0,…,n}∣∣∣f′(xi)−∑j=1nDijf(xj)∣∣∣.(3)
D~jj=Djj−(∑i=1nDji),for all j.(4)
Wniosek
Podsumowując, metoda Fornberga wydaje się dość dokładna, w przypadku nawet o około 3 rzędy wielkości dokładniejsza niż wyniki z wzorów analitycznych. To powinno być wystarczająco dokładne dla większości aplikacji. Co więcej, jest to niezwykłe, ponieważ Fornberg nie wydaje się wyraźnie uwzględniać tego faktu w swojej metodzie (przynajmniej nie ma wzmianki w dwóch artykułach Fornberga).N=512
Kolejny rząd wielkości można uzyskać dla tego przykładu poprzez proste włączenie równania (4). Ponieważ jest to dość proste podejście i zastosowane tylko raz dla każdej pochodnej, nie widzę powodu, aby go nie używać.
Metoda z pracy Baltenspergera - która wykorzystuje bardziej wyrafinowane podejście do oceny sumy w równaniu (1) w celu zmniejszenia błędów zaokrągleń - daje w przybliżeniu ten sam rząd wielkości błędu. Przynajmniej w tym przykładzie jest to mniej więcej odpowiednik powyższej metody „Dostosowany Fornberg”.