Czytałem książkę Computer Simulation of Liquids autorstwa Allena i Tildesleya. Począwszy od strony 71, autorzy omawiają różne algorytmy stosowane do integracji równań ruchu Newtona w symulacjach dynamiki molekularnej (MD). Począwszy od strony 78, autorzy omawiają algorytm Verleta, który jest być może algorytmem integracji kanonicznej w MD. Stanowią one:
Być może najczęściej stosowaną metodą całkowania równań ruchu jest ta, którą początkowo przyjęła Verlet (1967) i przypisała Stormerowi (Gear 1971). Ta metoda jest bezpośrednim rozwiązaniem równania drugiego rzędu . Metoda oparta jest na postions , przyśpieszeniach i pozycjach z poprzedniego kroku. Równanie przesunięcia pozycji brzmi następująco:r ( t ) a ( t ) r ( t - δ t )
Należy zwrócić uwagę na kilka punktów dotyczących eqn (3.14). Okaże się, że prędkości w ogóle się nie pojawiają. Zostały one wyeliminowane przez dodanie równań uzyskanych przez rozwinięcie Taylora o :
Następnie, później (na stronie 80), autorzy stwierdzają:
W przeciwieństwie do algorytmu Verleta ... forma algorytmu może niepotrzebnie wprowadzać niedokładność liczbową. Wynika to z faktu, że w eqn (3.14) mały termin ( ) jest dodawany do różnicy dużych terminów ( ), w celu wygenerowania trajektorii. O ( δ t 0 )
Myślę, że „małym terminem” jest , a „różnica dużych terminów” wynosi 2 r ( t ) - r ( t - δ t ) .
Moje pytanie brzmi: dlaczego niedokładność liczbowa wynika z dodania małego terminu do różnicy dużych terminów?
Interesuje mnie raczej podstawowy, konceptualny powód, ponieważ w ogóle nie znam szczegółów arytmetyki zmiennoprzecinkowej. Czy znasz też jakieś odniesienia typu „przegląd” (książki, artykuły lub strony internetowe), które wprowadziłyby mnie w podstawowe idee arytmetyki zmiennoprzecinkowej związane z tym pytaniem? Dziękuję za Twój czas.
źródło
ale ponieważ możemy użyć tylko trzech cyfr, wynik zostaje obcięty do
źródło
Pedro już podaje ważny fakt, a mianowicie odwołanie. Chodzi o to, że każda liczba, z którą obliczasz, ma powiązaną dokładność; na przykład liczba zmiennoprzecinkowa pojedynczej precyzji może reprezentować tylko rzeczy o dokładności do około 8 cyfr. Jeśli masz dwie liczby, które są prawie dokładnie takie same, ale różnią się siódmą cyfrą, różnica będzie ponownie 8-cyfrową liczbą zmiennoprzecinkową z pojedynczą precyzją i wygląda na to, że jest dokładna do 8 cyfr, ale w rzeczywistości tylko pierwsza 1 lub 2 cyfry są dokładne, ponieważ ilości, z których zostały obliczone, nie są dokładne poza pierwszą 1 lub 2 cyframi różnicy.
Teraz cytowana przez ciebie książka pochodzi z 1989 roku. W tamtych czasach obliczenia były najczęściej wykonywane w pojedynczej precyzji, a zaokrąglanie i anulowanie były poważnymi problemami. Obecnie większość obliczeń jest wykonywana przy użyciu podwójnej precyzji z 16 cyframi dokładności, a dzisiaj jest to o wiele mniejszy problem niż kiedyś. Myślę, że warto przeczytać przytoczone akapity z odrobiną soli i wziąć je w kontekście ich czasu.
źródło