Jump to content

Метод Гаусса – Лежандра

В численном анализе и научных вычислениях методы Гаусса -Лежандра представляют собой семейство численных методов для обыкновенных дифференциальных уравнений . Методы Гаусса–Лежандра являются неявными методами Рунге–Кутты . Точнее, это методы коллокации, основанные на точках квадратуры Гаусса – Лежандра . Метод Гаусса–Лежандра, основанный на s точках, имеет порядок 2 s . [ 1 ]

Все методы Гаусса–Лежандра A-стабильны . [ 2 ]

Метод Гаусса-Лежандра второго порядка представляет собой неявное правило средней точки . Его таблица Мясника :

1/2 1/2
1

Метод Гаусса – Лежандра четвертого порядка имеет таблицу Мясника:

Метод Гаусса – Лежандра шестого порядка имеет таблицу Мясника:

Вычислительные затраты на методы Гаусса – Лежандра более высокого порядка обычно чрезмерны, и поэтому они используются редко. [ 3 ]

Интуиция

[ редактировать ]

Методы Гаусса-Лежандра, Рунге-Кутты (GLRK) решают обыкновенное дифференциальное уравнение. с . Отличительной особенностью GLRK является оценка с гауссовой квадратурой .

где являются выборочными скоростями, квадратурные веса, представляют собой абсциссы, а это корни полинома Лежандра степени . Необходимо дальнейшее приближение, поскольку пока оценить невозможно. Чтобы сохранить ошибку усечения порядка , нам нужно только заказать . Неявное определение Рунге-Кутты вызывается для достижения этой цели. Это неявное ограничение, которое необходимо решить с помощью алгоритма поиска корня, такого как метод Ньютона . Значения параметров Рунге-Кутты можно определить из разложения в ряд Тейлора по .

Практический пример

[ редактировать ]

Методы Гаусса-Лежандра неявны, поэтому в общем случае их нельзя точно применить. Вместо этого делается обоснованное предположение о , а затем использует метод Ньютона для сходимости сколь угодно близко к истинному решению. Ниже приведена функция Matlab, реализующая метод Гаусса-Лежандра четвертого порядка.

% 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', iteration, norm(er) );
    iteration = iteration + 1;
   
    [~, j1] = dynamics(x+(a11*k1+a12*k2)*dt);
    [~, j2] = dynamics(x+(a21*k1+a22*k2)*dt);
   
    j = [eye(d) - dt*a11*j1, -dt*a12*j1;
         -dt*a21*j2, eye(d) - dt*a22*j2];
    
    k_next = [k1;k2] - damping * linsolve(j, er);
    k1 = k_next(1:d);
    k2 = k_next(d+(1:d));
   
    er = error(k1, k2);
  end
  if norm(er) > threshold
    error('Newton did not converge by %d iterations.', max_iterations);
  end
  x_next = x + dt / 2 * (k1 + k2);
end

Этот алгоритм на удивление дешев. Ошибка в может упасть ниже всего за 2 шага Ньютона. Единственная дополнительная работа по сравнению с явными методами Рунге-Кутты — это вычисление якобиана.

Интегральная орбита вблизи аттрактора Лоренца.

Симметричные во времени варианты

[ редактировать ]

За счет добавления дополнительного неявного соотношения эти методы можно адаптировать для обеспечения симметрии обращения времени. В этих методах усредненное положение используется в вычислениях вместо просто начальной позиции стандартными методами Рунге-Кутты. Метод порядка 2 — это всего лишь неявный метод средней точки.

Метод 4-го порядка с 2 этапами заключается в следующем.

Метод 6-го порядка с 3 этапами заключается в следующем.

Примечания

[ редактировать ]
  • Изерлес, Арье (1996), Первый курс численного анализа дифференциальных уравнений , Cambridge University Press , ISBN  978-0-521-55655-2 .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 198002c724c0900b94e101680be1b5cd__1686019860
URL1:https://arc.ask3.ru/arc/aa/19/cd/198002c724c0900b94e101680be1b5cd.html
Заголовок, (Title) документа по адресу, URL1:
Gauss–Legendre method - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)