Metoda Gaussa-Legendre'a
W analizie numerycznej i obliczeniach naukowych metody Gaussa -Legendre'a to rodzina metod numerycznych dla równań różniczkowych zwyczajnych . Metody Gaussa-Legendre'a są niejawnymi metodami Runge-Kutty . Mówiąc dokładniej, są to metody kolokacji oparte na punktach kwadratury Gaussa-Legendre'a . Metoda Gaussa-Legendre'a oparta na s punktach ma rząd 2 s .
Wszystkie metody Gaussa-Legendre'a są A-stabilne .
Metoda Gaussa-Legendre'a rzędu drugiego to ukryta reguła punktu środkowego . Jego tableau Rzeźnika to:
1/2 1/2 1
Metoda Gaussa-Legendre'a rzędu czwartego ma obraz Butchera:
Metoda Gaussa-Legendre'a rzędu szóstego ma obraz Butchera:
Koszt obliczeniowy metod Gaussa-Legendre'a wyższego rzędu jest zwykle nadmierny, dlatego są one rzadko używane.
Intuicja
Metody Gaussa-Legendre Runge-Kutty (GLRK) rozwiązują równanie różniczkowe zwyczajne z . Cechą wyróżniającą GLRK jest oszacowanie z kwadraturą Gaussa .
- ,
gdzie to próbkowane prędkości, to wagi kwadraturowe do odcięte i pierwiastki stopnia _ Potrzebne dalsze przybliżenie, ponieważ można ocenić. Aby zachować błąd obcięcia rzędu tylko, zamówić . jot za jest wywoływane, aby to osiągnąć. Jest to niejawne ograniczenie, które musi zostać rozwiązane przez algorytm znajdowania pierwiastków, taki jak metoda Newtona . Wartości parametrów Runge-Kutty określić na podstawie rozwinięcia w szereg Taylora }
Praktyczny przykład
Metody Gaussa-Legendre'a są niejawne, więc generalnie nie można ich dokładnie zastosować. Zamiast tego dokonuje się świadomego przypuszczenia następnie używa metody Newtona aby dowolnie zbliżać się do prawdziwego rozwiązania. Poniżej znajduje się funkcja Matlaba, która implementuje metodę Gaussa-Legendre'a rzędu czwartego.
0
0
% punkt początkowy x = [ 10,5440 ; 4,1124 ; 35,8233 ]; dt = 0,01 ; N = 10000 ; seria_x = [ x ]; dla i = 1 : N x = krok_gaussa ( x , @ lorenz_dynamics , dt , 1e-7 , 1 , 100 ); seria_x = [ seria_x x ]; koniec działki3 ( x_series ( 1 ,:), x_series ( 2 ,:), x_series ( 3 ,:) ); set ( gca , 'xtick' , [], 'ytick' , [], 'ztick' , []); tytuł ( „Atraktor Lorenza” ); powrót ; funkcja [td, j] = lorenz_dynamics ( stan ) % zwraca pochodną czasu i jakobian tej pochodnej czasu x = stan ( 1 ); y = stan ( 2 ); z = stan ( 3 ); sigma = 10 ; beta = 8/3 ; _ _ rho = 28 ; td = [ sigma * ( y - x ); x * ( rho - z ) - y ; x * y - beta * z ]; j = [ -sigma , sigma ,; _ _ rho - z , -1 , -x ; _ _ y , x , -beta ] ; funkcja końcowa x_next = gauss_step ( x, dynamika, dt, próg, tłumienie, max_iterations ) [ d , ~ ] = size ( x ); kwadrat3 = kwadrat ( 3 ); jeśli tłumienie > 1 || tłumienie <= błąd ( 'tłumienie powinno wynosić od 0 do 1.' ) end % Użyj wyraźnych kroków Eulera jako początkowych domysłów [ k , ~ ] = dynamika ( x ); x1_zgadnij = x + ( 1 / 2 - sq3 / 6 ) * dt * k ; x2_odgadnij = x + ( 1 / 2 + sq3 / 6 ) * dt * k ; [ k1 , ~ ] = dynamika ( x1_zgadnij ); [ k2 , ~ ] = dynamika ( x2_odgadnij ); a11 = 1/4 ; _ _ a12 = 1 / 4 - kwadrat 3 / 6 ; a21 = 1 / 4 + kwadrat 3 / 6 ; a22 = 1/4 ; _ _ błąd = @( k1 , k2 ) [ k1 - dynamika ( x + ( a11 * k1 + a12 * k2 ) * dt ); k2 - dynamika ( x + ( a21 * k1 + a22 * k2 ) * dt )]; er = błąd ( k1 , k2 ); iteracja = 1 ; while ( norm ( er ) > próg && iteracja < max_iterations ) fprintf ( 'Iteracja Newtona %d: błąd wynosi %f.\n' , iteracja , norma ( er ) ); iteracja = iteracja + 1 ; [ ~ , j1 ] = dynamika ( x + ( a11 * k1 + a12 * k2 ) * dt ); [ ~ , j2 ] = dynamika ( x + ( a21 * k1 + a22 * k2 ) * dt ); j = [ oko ( re ) - dt * a11 * j1 , - dt * a12 * j1 ; - dt * a21 * j2 , oko ( re ) - dt * a22 * j2 ]; k_następny = [ k1 ; k2 ] - tłumienie * linsolve ( j , er ); k1 = k_następny ( 1 : re ); k2 = k_następny ( re + ( 1 : re )); er = błąd ( k1 , k2 ); end if norm ( er ) > błąd progu ( „Newton nie osiągnął zbieżności przez %d iteracji.” , max_iterations ); koniec x_następny = x + dt / 2 * ( k1 + k2 ); koniec
Ten algorytm jest zaskakująco tani. Błąd w spaść poniżej zaledwie 2 krokach Newtona. Jedyną dodatkową pracą w porównaniu z jawnymi metodami Runge-Kutty jest obliczenie jakobianu.
Warianty symetryczne w czasie
Kosztem dodania dodatkowej niejawnej relacji metody te można dostosować tak, aby miały symetrię odwrócenia czasu. W tych metodach uśredniona pozycja jest używana do obliczania zamiast tylko pozycja początkowa Kutta Metoda rzędu 2 jest po prostu niejawną metodą punktu środkowego.
Metoda zamówienia 4 z 2 etapami jest następująca.
Metoda zamówienia 6 z 3 etapami jest następująca.
Notatki
- Iserles, Arieh (1996), pierwszy kurs numerycznej analizy równań różniczkowych , Cambridge University Press , ISBN 978-0-521-55655-2 .