가우스-레겐드레 방법

Gauss–Legendre method

수치해석과학적 계산에서 가우스-레젠더 방법일반적인 미분방정식에 대한 수치적 방법의 집합이다.가우스-레전드르 방법은 암묵적인 룬게-쿠타 방법이다.구체적으로는 가우스-레전드르 사분법(Gauss-Legendre quadrature)의 점을 바탕으로 한 결합법이다.s 포인트를 바탕으로 한 가우스-레젠드르 방법에는 순서 2s가 있다.[1]

모든 가우스-레젠더 방법은 A-안정적이다.[2]

순서 2의 가우스-레젠더 방법은 암묵적인 중간점 규칙이다.그것의 푸줏간 테이블라우는 다음과 같다.

1/2 1/2
1

가우스-레젠드르 순서 4의 방법에는 푸줏대감이 있다.

Gauss-Legendre order 6는 Putuch tableau가 있다.

고차 가우스-레전드르 방법의 계산 비용은 대개 과도하므로 거의 사용되지 않는다.[3]


직감

Gauss-Legendre Runge-Kutta(GLRK) 방법에서는 일반적 x = ( x) 를) x (0) = x (해결한다GLRK의 구별되는 특징은 가우스 사분법으로 ( )- = 0 (t) 0}{ x의 추정이다.

( )= ( 0)+ h = l i + (h l) ,

where are the sampled velocities, are the quadrature weights, are the abscissas, and are the roots )= 0 정도 의 범례 다항식. k i {\은(는 아직 할 수 없기 때문에 추가적인 근사치가 필요하다. O( l ){\ O의 잘림 오류를 유지하려면 ( 2 - ) 를 주문하려면 k 만 있으면 된다이를 위해 Runge-Kutta의 암묵적 k = f+ a right)가 호출된다이것은 뉴턴의 방법처럼 뿌리 찾기 알고리즘에 의해 해결되어야 하는 암묵적 제약조건이다.Runge-Kutta 매개변수 Taylor 시리즈 확장을 통해 을 확인할 수 있다

실제 사례

가우스-레전드르 방법은 암묵적이기 때문에 일반적으로 정확하게 적용할 수 없다.대신 k 를 교육받은 추측한 다음 뉴턴의 방법을 사용하여 실제 해법에 임의로 근접하게 수렴한다.아래는 순서 4의 가우스-레전드르 방법을 구현하는 매트랩 기능이다.

%starting point x = [ 10.5440; 4.1124; 35.8233]; dt = 0.01; N=10000; x_series = [x]; for i=1:N  x = gauss_step( x, @lorenz_dynamics, dt, 1e-7, 1, 100);  x_series = [x_series x]; end plot3( x_series(1,:), x_series(2,:), x_series(3,:) ); set(gca,'xtick',[],'ytick',[],'ztick',[]); title('Lorenz Attractor'); return; function [td, j] = lorenz_dynamics(state)  %return a time derivative and a Jacobian of that time derivative  x = state(1);  y = state(2);  z = state(3);    sigma = 10;  beta = 8/3;  rho = 28;    td = [sigma*(y-x); x*(rho-z)-y; x*y-beta*z];  j = [-sigma, sigma, 0;  rho-z, -1, -x;  y, x, -beta]; end function x_next = gauss_step( x, dynamics, dt, threshold, damping, max_iterations )  [d,~] = size(x);  sq3 = sqrt(3);  if damping > 1   damping <= 0  error('damping should be between 0 and 1.')   end    %Use explicit Euler steps as initial guesses  [k,~] = dynamics(x);  x1_guess = x + (1/2-sq3/6)*dt*k;  x2_guess = x + (1/2+sq3/6)*dt*k;  [k1,~] = dynamics(x1_guess); [k2,~] = dynamics(x2_guess);    a11 = 1/4;  a12 = 1/4 - sq3/6;  a21 = 1/4 + sq3/6;  a22 = 1/4;    error = @(k1,k2) [ k1 - dynamics(x+(a11*k1+a12*k2)*dt); k2 - dynamics(x+(a21*k1+a22*k2)*dt) ];  er = error(k1,k2);  iteration=1;  while( norm(er) > threshold && iteration < max_iterations )  fprintf('Newton iteration %d: error is %f.\n의, 반복 norm(어). 반복)반복 1;+[~, j1])dynamics(x+(a11*k1+a12*k2)*dt.[~, j2])dynamics(x+(a21*k1+a22*k2)*dt. j)[눈(d)-dt*a11*j1, -dt*a12*j1, -dt*a21*j2, 눈(d)-dt*a22*j2];k_next)[k1, k2]-damping*linsolve(j,er), k1)k_next(1:d), k2)k_next(d+(1:d). 어)error(k1,k2), 끝 만약 norm(어)&g.t;임계값 오류('Newton이 %d번 반복으로 수렴되지 않음, max_it 반복), end x_next = x + dt/2*(k1+k2); end

이 알고리즘은 놀라울 정도로 저렴하다. 의 오차는 뉴턴 스텝 2개에서 - 이하로 떨어질 수 있다.명시적 룬게-쿠타 방법과 비교한 유일한 추가 작업은 자코비안의 연산이다.

로렌츠 끌어당김기 근처의 통합 궤도.

메모들

  1. ^ Iserles 1996, 페이지 47
  2. ^ Iserles 1996, 페이지 63
  3. ^ Iserles 1996, 페이지 47

참조

  • Iserles, Arieh (1996), A First Course in the Numerical Analysis of Differential Equations, Cambridge University Press, ISBN 978-0-521-55655-2.