1. Czy możemy liczbowo wykryć sztywność, stosując tylko wyraźne metody?
Załóżmy, że masz problem z wartością początkową dla niektórych ODE na . Bierzesz znacznie duży stepize i jawną metodę Eulera, wykonujesz swoje obliczenia przy stałym rozmiarze kroku i otrzymujesz następujące punkty:[0,10]τ=1 τ
Szacujesz błąd i wydaje się on duży. Okej, weź
i uzyskajτ=0.1
Szacunkowy błąd jest teraz akceptowalny. Wielkość kroku jest niewielka w stosunku do .τ=0.1[0,10]⋆
Czy problem jest więc sztywny? Odpowiedź brzmi NIE ! W tym przypadku wymagany jest niewielki rozmiar, aby poprawnie odtworzyć oscylacje roztworu .
Problem, który rozwiązaliśmy, to
y′(t)=−2cosπt,y(0)=1.
Teraz bierzesz kolejne ODE w tym samym przedziale, a jawny Euler daje prawie takie samo rozwiązanie numeryczne:τ=1
Bierzesz a teraz rozwiązaniem numerycznym jestτ=0.1
Szacunkowy błąd jest teraz niewielki. Wielkość kroku jest niewielka w stosunku do .τ=0.1[0,10]⋆
Czy ten problem jest sztywny? TAK ! Zrobiliśmy bardzo małe kroki, aby odtworzyć rozwiązanie, które zmienia się bardzo powoli. To irracjonalne! Wielkość kroku czasowego jest tutaj ograniczona przez właściwości stabilności wyraźnego Eulera .
Ten problem to
y′(t)=−2y(t)+sint/2,y(0)=1.
⋆ Zauważ, że liczba rozmiarów kroków może być znacznie większa, jeśli weźmiemy dłuższy interwał integracji.
Wniosek: informacja o krokach czasowych i odpowiadających im błędach nie jest wystarczająca do wykrycia sztywności. Powinieneś także spojrzeć na uzyskane rozwiązanie. Jeśli zmienia się powoli, a wielkość kroku jest bardzo mała, najprawdopodobniej problem będzie sztywny. Jeśli rozwiązanie oscyluje szybko i ufasz swojej technice szacowania błędów, problem nie jest sztywny.
2. Jak określić maksymalny rozmiar kroku, który pozwala zintegrować sztywny problem z jawną metodą?
Jeśli używasz jakiegoś jawnego solvera z czarną skrzynką z automatyczną kontrolą kroków, nie musisz nic robić: oprogramowanie dostosuje wymaganą wielkość kroków.
Załóżmy jednak, że chcesz ręcznie uzyskać rozwiązanie ze stałym krokiem lub po prostu chcesz oszacować, ile godzin powinieneś poczekać, aż Twoja jawna metoda rozwiąże problem. Następnie powinieneś znać spektrum swojej matrycy Jacobi. Załóżmy, że jest prawdziwy i leży w (w twoim przykładzie ).[Λ,0]Λ=−1000
Następnie powinieneś obliczyć rzeczywisty przedział stabilności ( domena stabilności w złożonym przypadku) swojej jawnej metody. Nie jest to zbyt trudne, wystarczy zajrzeć do dowolnego podręcznika na ten temat. W przypadku jawnego Eulera odstęp ten wynosi . Teraz, jeśli chcesz, aby twoje rozwiązanie nie wybuchło, powinieneś tak, że leży w przedziale stabilności, tj. W naszym przypadku
τ Λ τ τ ≤ 2[−2,0]τΛτ
τ≤2|Λ|.
Jeśli chcesz uzyskać większą spójność, powinieneś wziąć
ponieważ dlaTwoje rozwiązanie najprawdopodobniej spowoduje nienaturalne (ale zanikające) oscylacje.1/| Λ| <τ≤2/| Λ|
τ≤1|Λ|,
1/|Λ|<τ≤2/|Λ|
Oczywiście taka analiza ma zastosowanie głównie w przypadku problemów liniowych o znanym spektrum. W przypadku bardziej praktycznych problemów powinniśmy polegać na numerycznych metodach wykrywania sztywności (patrz referencje i komentarze w innych odpowiedziach).