Runge-Kuttovy metody ( v literatuře je název Runge-Kuttovy metody ) je rozsáhlá třída numerických metod pro řešení Cauchyho úlohy pro obyčejné diferenciální rovnice a jejich soustavy. První metody této třídy navrhli kolem roku 1900 němečtí matematici K. Runge a M. V. Kutta .
Třída metod Runge-Kutta zahrnuje explicitní Eulerovu metodu a modifikovanou Eulerovu metodu s přepočtem, což jsou metody prvního a druhého řádu přesnosti. Existují standardní explicitní metody třetího řádu přesnosti, které nejsou široce používány. Nejčastěji používanou a implementovanou v různých matematických balíčcích ( Maple , MathCAD , Maxima ) je klasická metoda Runge-Kutta , která má čtvrtý řád přesnosti. Při provádění výpočtů se zvýšenou přesností se stále častěji používají metody pátého a šestého řádu přesnosti [1] [2] . Konstrukce obvodů vyššího řádu je spojena s velkými výpočetními obtížemi [3] .
Metody sedmého řádu musí mít alespoň devět stupňů a metody osmého řádu musí mít alespoň 11 stupňů. U metod devátého a vyšších řádů (které však nemají velký praktický význam) není známo, kolik stupňů je potřeba k dosažení odpovídajícího řádu přesnosti [3] .
Metoda čtvrtého řádu Runge-Kutta pro výpočty s konstantním integračním krokem je tak rozšířená, že se často nazývá jednoduše Runge-Kutta metoda.
Zvažte Cauchyho problém pro systém obyčejných diferenciálních rovnic prvního řádu. (Dále a ).
Potom se přibližná hodnota v následujících bodech vypočítá pomocí iteračního vzorce:
Výpočet nové hodnoty probíhá ve čtyřech fázích:
kde je hodnota kroku mřížky v .
Tato metoda má čtvrtý řád přesnosti. To znamená, že chyba v jednom kroku je řádná a celková chyba v posledním integračním intervalu je řádná .
Rodina explicitních metod Runge-Kutta je zobecněním jak explicitní Eulerovy metody, tak klasické metody Runge-Kutta čtvrtého řádu. Je to dáno vzorci
kde je hodnota kroku mřížky a výpočet nové hodnoty probíhá v následujících krocích:
Konkrétní metoda je určena počtem a koeficienty a . Tyto koeficienty jsou často uspořádány do tabulky (nazývané Butcher table ):
Pro koeficienty metody Runge-Kutta musí být splněny podmínky pro . Pokud chcete, aby metoda měla řád , měli byste uvést i podmínku
kde je aproximace získaná metodou Runge-Kutta. Po vícenásobné derivaci je tato podmínka transformována do soustavy polynomických rovnic s ohledem na koeficienty metody.
Všechny dosud uvedené metody Runge-Kutta jsou explicitní metody . Bohužel explicitní metody Runge-Kutta zpravidla nejsou vhodné pro řešení tuhých rovnic kvůli malé oblasti jejich absolutní stability [4] . Nestabilita explicitních metod Runge-Kutta také vytváří velmi vážné problémy při numerickém řešení parciálních diferenciálních rovnic .
Nestabilita explicitních metod Runge-Kutta motivovala vývoj implicitních metod. Implicitní metoda Runge-Kutta má tvar [5] [6] :
kde
Explicitní metoda se vyznačuje tím, že matice koeficientů pro ni má nižší trojúhelníkový tvar (včetně nulové hlavní diagonály) - na rozdíl od implicitní metody, kde má matice libovolný tvar. To je také vidět v Butcher's table .
Důsledkem tohoto rozdílu je potřeba řešit v každém kroku soustavu rovnic pro , kde je počet stupňů. To zvyšuje výpočetní náklady, nicméně při dostatečně malé hodnotě lze aplikovat princip kontrakčních mapování a řešit tento systém jednoduchou iterací [7] . V případě jedné iterace to zvyšuje výpočetní náklady pouze dvakrát.
Na druhé straně Jean Kunzman (1961) a John Butcher (1964) ukázali, že pro libovolný počet fází existuje implicitní metoda Runge-Kutta s řádem přesnosti . To například znamená, že pro výše popsanou explicitní čtyřstupňovou metodu čtvrtého řádu existuje implicitní analog s dvojnásobnou přesností.
Nejjednodušší implicitní metodou Runge-Kutta je upravená Eulerova metoda „s přepočtem“. Je dán vzorcem:
.
K jeho implementaci v každém kroku jsou vyžadovány alespoň dvě iterace (a dvě vyhodnocení funkcí).
Předpověď:
.Oprava:
.Druhý vzorec je jednoduchou iterací řešení soustavy rovnic vzhledem k , zapsanou ve formě zobrazení kontrakce. Pro zlepšení přesnosti lze iterační korekci provést několikrát nahrazením . Modifikovaná Eulerova metoda „s přepočtem“ má druhý řád přesnosti.
Výhodou implicitních metod Runge-Kutta ve srovnání s explicitními je jejich větší stabilita, což je důležité zejména při řešení tuhých rovnic . Uvažujme jako příklad lineární rovnici y' = λ y . Obvyklá metoda Runge-Kutta použitá na tuto rovnici se redukuje na iteraci , přičemž r se rovná
kde označuje sloupcový vektor jednotek [8] . Funkce se nazývá funkce stability [9] . Je to vidět ze vzorce, který je poměrem dvou polynomů stupně , pokud má metoda stupně. Explicitní metody mají přísně nižší trojúhelníkovou matici , z čehož vyplývá, že a že funkce stability je polynom [10] .
Numerické řešení tohoto příkladu konverguje k nule za podmínky c . Množina takových se nazývá oblast absolutní stability . Konkrétně se metoda nazývá A-stabilní , pokud jsou všechna c v oblasti absolutní stability. Stabilizační funkce explicitní metody Runge-Kutta je polynom, takže explicitní metody Runge-Kutta nemohou být v zásadě A-stabilní [10] .
Pokud má metoda pořadí , pak funkce stability splňuje podmínku pro . Zajímavý je tedy poměr polynomů daného stupně, který nejlépe aproximuje exponenciální funkci. Tyto vztahy jsou známé jako Padé aproximanty . Padého aproximant s čitatelem stupňů a jmenovatelem stupňů je A-stabilní tehdy a jen tehdy, když [11]
Metoda -stage Gauss-Legendre má řád , takže její stabilizační funkcí je Padého aproximace . To znamená, že metoda je A-stabilní [12] . To ukazuje, že A-stabilní metody Runge-Kutta mohou být libovolně vysokého řádu. Naproti tomu řád A-stability Adamsových metod nemůže překročit dva.
Podle gramatických norem ruského jazyka se příjmení Kutta odmítá, takže říkají: "Metoda Runge-Kutta." Pravidla ruské gramatiky předepisují skloňovat všechna příjmení (včetně mužských) končící na -а, -я, před kterými je souhláska. Jedinou výjimkou jsou příjmení francouzského původu s přízvukem na poslední slabice jako Dumas, Zola [13] . Někdy však existuje nesklonná verze „Metody Runge-Kutta“ (například v knize [14] ).
provedením výměny a přenesením na pravou stranu získáme systém:
Program C# používá abstraktní třídu RungeKutta , která by měla přepsat abstraktní metodu F, která určuje pravé strany rovnic.
Řešení systémů diferenciálních rovnic metodou Runge-Kutta je jednou z nejběžnějších metod numerického řešení ve strojírenství. V prostředí MATLAB je implementována jedna z jeho variant - metoda Dorman-Prince . Chcete-li vyřešit soustavu rovnic, musíte nejprve napsat funkci, která vypočítá derivace, tedy funkce y = g ( x , y , z ) a z = cos(3 x ) − 4 y = f ( x , y , z ), jak je popsáno výše. V jednom z adresářů, které jsou přístupné ze systému MATLAB , musíte vytvořit textový soubor s názvem (například) runge.m s následujícím obsahem (pro MATLAB verze 5.3):
MATLAB , runge.m funkce Dy = rozsah ( x, y ) Dy = y (:); Dy ( 1 ) = y ( 2 ); Dy ( 2 ) = cos ( 3 * x ) -4 * y ( 1 ) ;Název souboru a název funkce se musí shodovat, ale může to být cokoliv, co nebylo dříve použito.
Poté je potřeba vytvořit hlavní soubor s názvem např. main.m , který provede základní výpočty. Tento hlavní soubor bude obsahovat následující text:
MATLAB , hlavní.m jasný ; clc ; % Vymažte paměť a obrazovku h = 0,1 ; % Integrační krok x_fin = 8 ; % Finální integrační čas yo = 0,8 ; % Počáteční hodnota funkce Dy0 = 2 ; % Počáteční hodnota derivace funkce [ x , y ] = ode45 ( 'rozsah' , [ 0 : h : x_fin ], [ y0 Dy0 ]); % metoda Runge-Kutta plot ( x , y , 'LineWidth' , 2 ); mřížka ; % Plot a mřížka legenda ( 'y(x)' , 'y''(x)' , 0 ); % Legenda na grafuProtože je MATLAB maticově orientovaný, lze řešení Runge-Kutta velmi snadno provést pro celý rozsah x , jako například ve výše uvedeném příkladu programu. Zde je řešením graf funkce v časech od 0 do x_fin .
Proměnné x a y vrácené funkcí ODE45 jsou hodnotové vektory. Je zřejmé, že řešením výše uvedeného příkladu je druhý prvek x , protože první hodnota je 0, integrační krok je h = 0,1 a sledovaná hodnota x = 0,1. Následující záznam v příkazovém okně MATLABu poskytne požadované řešení:
řešení MATLAB y1 = y ( najít ( x == 0,1 ))Odpověď: y1 = 0,98768
Metoda konečných rozdílů | |
---|---|
Obecné články | |
Typy rozdílových schémat |