v2.0.9794.34739
Fizyka dla każdego
Mechanika numeryczna: krok czasu, błąd i kontrola modelu · 4 min czytania

Oscylator w komputerze: Verlet, energia i uciekająca faza

Idealna sprężyna nie dostarcza energii znikąd. Tymczasem prosta symulacja może z każdym okresem zwiększać amplitudę. Wyprowadzimy metodę Verleta z prędkością, porównamy jej bilans z jawnym Eulerem i zobaczymy, dlaczego mały błąd energii nie wystarcza do poprawnego przewidywania fazy drgań.

Opublikowano: 25.10.2026
Wyślij link e-mailem Własna poczta Komentarze: 0

Oceń ten artykuł: od 1 do 5 gwiazdek
(0 głosów) . Jeszcze nie oddano głosów.

Kliknij gwiazdkę, aby od razu oddać ocenę. Klawiaturą wybierz gwiazdkę klawiszem Tab i naciśnij Enter lub spację. Jeden głos na materiał z danej przeglądarki.

Idealna sprężyna nie dostarcza energii znikąd. Tymczasem prosta symulacja może z każdym okresem zwiększać amplitudę. Wyprowadzimy metodę Verleta z prędkością, porównamy jej bilans z jawnym Eulerem i zobaczymy, dlaczego mały błąd energii nie wystarcza do poprawnego przewidywania fazy drgań.

Potrzebne wiadomości: Ruch harmoniczny, energia sprężyny i pochodna. Pierwsza lekcja pakietu wyjaśnia krok czasu oraz błąd globalny.

Układ zachowawczy ma własny test poprawności

Masa m porusza się poziomo na idealnej sprężynie o stałej k. x mierzymy od równowagi, pomijamy opór i wymuszenie. Z ma = −kx wynika a(x) = −ω²x, gdzie ω = √(k/m). Dla x(0) = A, v(0) = 0 dokładne rozwiązanie to x = A cos(ωt), v = −Aω sin(ωt), a energia E = mv²/2 + kx²/2 pozostaje równa kA²/2.

Jawny Euler używa jednocześnie xn+1 = xn + hvn i vn+1 = vn − hω²xn. Po podniesieniu obu do kwadratu wyrazy mieszane się znoszą:

E_{n+1}=(1+h^2\omega^2)E_n.

Dla każdego h > 0 energia takiego dyskretnego oscylatora rośnie. Mniejszy krok spowalnia wzrost w ustalonym przedziale czasu, ale nie zapewnia stabilnych drgań przez dowolnie wiele okresów. Otrzymana energia nie pochodzi z fizycznej siły; wytworzyło ją przybliżenie.

Dwie połowy zmiany prędkości

Dla przyspieszenia zależnego od położenia możemy w każdym kroku najpierw zmienić prędkość o połowę impulsu, potem przesunąć ciało i zakończyć drugą połową impulsu:

v_{n+1/2}=v_n+\frac{h}{2}a(x_n),

x_{n+1}=x_n+h v_{n+1/2},

v_{n+1}=v_{n+1/2}+\frac{h}{2}a(x_{n+1}).

To metoda Verleta z prędkością, zwana również velocity Verlet. Po wyeliminowaniu prędkości pośredniej dostajemy xn+1 = xn + hvn + h²a(xn)/2 oraz vn+1 = vn + h[a(xn) + a(xn+1)]/2. Nowe przyspieszenie obliczamy w nowym położeniu; zastąpienie go starym niszczy ten schemat.

Pośrednie vn+1/2 jest etapem algorytmu, nie dokładnie znaną prędkością ciągłą w połowie czasu. Dla gładkiej siły błąd globalny x i v na ustalonym przedziale jest rzędu O(h²). Kolejność półimpuls–przesunięcie–półimpuls jest symetryczna: wykonanie kroku z −h odwraca te operacje w arytmetyce dokładnej. Opór zależny od prędkości wymaga innego schematu; nie wstawiamy go bezrefleksyjnie do tej jawnej postaci.

Pierwszy krok ze wszystkimi jednostkami

Dla m = 1 kg, k = 4 N/m, A = 0,50 m i h = 0,25 s mamy ω = 2 rad/s, a₀ = −2 m/s². Pierwszy półimpuls daje v1/2 = −0,25 m/s. Przesunięcie: x₁ = 0,50 + 0,25(−0,25) = 0,4375 m. Nowe przyspieszenie jest −1,75 m/s², a drugi półimpuls daje v₁ = −0,46875 m/s. Energia wynosi 0,492675781 J wobec początkowych 0,50 J.

Wzorzec w t = 0,25 s daje x = 0,50 cos 0,5 = 0,438791 m i v = −sin 0,5 = −0,479426 m/s. Verlet nie jest dokładnym rozwiązaniem nawet wtedy, gdy wykres wygląda dobrze. Euler w tym samym kroku dałby x₁ = 0,50 m, v₁ = −0,50 m/s i E₁ = 0,625 J.

Dwa wykresy energii względem czasu dla tego samego oscylatora i kroku 0,25 sekundy. Jawny Euler zwiększa energię, Verlet oscyluje między 0,9375 a 1 energii początkowej; panele mają jawnie różne skale pionowe.
Jednakowy krok i czas, różne skale pionowe podane na osiach. Wąska skala prawego panelu odsłania błąd Verleta; nie sugeruje dokładnego zachowania fizycznej energii. Powiększ rysunek.

Granica stabilności i to, co rzeczywiście się zachowuje

Wprowadźmy q = hω. Eliminacja prędkości daje xn+1 − 2xn + xn−1 = −q²xn. Rozwiązanie oscylacyjne można zapisać z kątem przyrostu fazy θ takim, że cos θ = 1 − q²/2. Stabilny, nieosobliwy zakres oscylatora to 0 < q < 2. Sam punkt q = 2 nie jest bezpieczny dla ogólnych danych początkowych: zaburzenie może dać wzrost liniowy. Dla q > 2 pojawia się wzrost wykładniczy.

Dla stałego kroku i tego liniowego oscylatora dokładnie zachowuje się w arytmetyce dokładnej inna forma kwadratowa:

\widetilde E=\frac{m}{2}\left[v_n^2+\omega^2\left(1-\frac{q^2}{4}\right)x_n^2\right].

Można to sprawdzić przez podstawienie trzech aktualizacji. Ta pomocnicza wielkość nie jest fizyczną energią sprężyny. Dla startu z A i v₀ = 0 mamy xn = A cos(nθ), stąd En/E₀ = 1 − (q²/4)sin²(nθ). Energia fizyczna oscyluje w ograniczonym przedziale [1 − q²/4; 1] razy E₀. Przy naszym q = 0,5 jest to od 0,46875 do 0,50 J.

Energia może wyglądać dobrze, kiedy faza jest już zła

Numeryczna częstość kołowa wynosi ωnum = θ/h = 2arcsin(q/2)/h. Jest większa od ω dla 0 < q < 2. Kolejne maksima pojawiają się więc za wcześnie. Ten błąd fazy kumuluje się z czasem, mimo ograniczonego błędu energii.

Przy ω = 2 rad/s i h = 0,25 s otrzymujemy ωnum = 2,021442 rad/s. Po 20 s przesunięcie fazy wynosi około 0,428841 rad. Dla h = 0,125 s spada do 0,104906 rad, blisko czterokrotnie. Porównujmy więc energię, położenie oraz fazę w interesującym nas przedziale; żadna pojedyncza liczba nie zastępuje wszystkich kontroli.

Czy malejąca chwilowo energia oznacza numeryczne tarcie?

Nie musi. Przy Verlecie w opisanym przypadku energia fizyczna wraca w okolice wartości początkowej; jej błąd oscyluje. Prawdziwy opór odbierałby energię mechanicznej części układu zgodnie z pracą siły oporu. Rozstrzyga przebieg i równanie sił, nie dwie wyrwane z kontekstu wartości.

Zadania do tego tematu

Dalsza lektura

Materiał referencyjny

Ostatnie materiały autora

Wszystkie materiały autora »

Komentarze (0)

Nie ma jeszcze opublikowanych komentarzy. Rozpocznij rozmowę o tym materiale.

Dodaj komentarz

Możesz komentować jako gość lub zalogować się, aby użyć danych konta. Utwórz konto

Emotikony

Zaznacz tekst i wybierz formatowanie lub użyj Ctrl/Cmd+B, I, U w polu komentarza. Znaczniki HTML nie są wykonywane.

Wybór wszystkich komentarzy obejmuje odpowiedzi. Powiadomienia wymagają potwierdzenia adresu; zrezygnujesz z nich przez link w wiadomości.

← Wróć do działu: Teoria Do góry ↑
Nie znalazłeś szukanego materiału? Napisz do nas — pomóż nam rozwijać Fizykę dla każdego.