Jump to content

Экстраполяция Ричардсона

Пример метода экстраполяции Ричардсона в двух измерениях.

В численном анализе экстраполяция Ричардсона — это метод ускорения последовательности, используемый для улучшения скорости сходимости последовательности . оценок некоторого значения . По сути, учитывая стоимость для нескольких значений , мы можем оценить экстраполируя оценки на . Он назван в честь Льюиса Фрая Ричардсона , который представил эту технику в начале 20 века. [1] [2] хотя эта идея была уже известна Христиану Гюйгенсу при его расчете . [3] По словам Биркгофа и Роты , «его полезность для практических вычислений трудно переоценить». [4]

Практические применения экстраполяции Ричардсона включают интеграцию Ромберга , которая применяет экстраполяцию Ричардсона к правилу трапеций , и алгоритм Булирша-Стоера для решения обыкновенных дифференциальных уравнений.

Общая формула [ править ]

Обозначения [ править ]

Позволять быть приближением (точное значение), которое зависит от размера шага h (где ) с формулой ошибки вида

где неизвестные константы, а являются известными константами такими, что . Более того, представляет собой усечения ошибку приближение такое, что Аналогично, в приближение Говорят, что это приближение.

Обратите внимание, что при упрощении с помощью обозначения Big O следующие формулы эквивалентны:

Цель [ править ]

Экстраполяция Ричардсона – это процесс, позволяющий найти лучшее приближение изменив формулу ошибки с к Поэтому, заменив с ошибка усечения уменьшилась с к для того же размера шага . Происходит общая закономерность, при которой является более точной оценкой, чем когда . Благодаря этому процессу мы достигли лучшего приближения вычитая самый большой член ошибки, которая была . Этот процесс можно повторить, чтобы удалить больше ошибок и получить еще лучшие приближения.

Процесс [ править ]

Использование размеров шага и для некоторой константы , две формулы для являются:

( 1 )
( 2 )

Чтобы улучшить наше приближение из к удалив первый член ошибки, мы умножаем уравнение 2 на и вычтем уравнение 1, чтобы получить

Это умножение и вычитание выполнялось потому, что это приближение . Мы можем решить нашу текущую формулу для дать
который можно записать как установив

Рекуррентное отношение [ править ]

Общее рекуррентное соотношение можно определить для аппроксимаций следующим образом:

где удовлетворяет

Свойства [ править ]

Экстраполяцию Ричардсона можно рассматривать как преобразование линейной последовательности .

Кроме того, общую формулу можно использовать для оценки (поведение размера шага ведущего порядка при ошибке усечения ), когда ни его значение, ни известно априори . Такой метод может быть полезен для количественного определения неизвестной скорости сходимости . Учитывая приближения из трех различных размеров шага , , и , точное соотношение

дает приблизительное соотношение (обратите внимание, что обозначения здесь могут вызвать некоторую путаницу: два O, появляющиеся в приведенном выше уравнении, указывают только на поведение размера шага ведущего порядка, но их явные формы различны, и, следовательно, сокращение двух O членов равно только приблизительно верно)
которое можно решить численно, чтобы оценить для некоторого произвольного допустимого выбора , , и .

Как , если и выбирается так, что , это приближенное соотношение сводится к квадратному уравнению относительно , что легко решается для с точки зрения и .

Пример экстраполяции Ричардсона

Предположим, что мы хотим аппроксимировать , и у нас есть метод это зависит от небольшого параметра таким образом, что

Определим новую функцию

где и это два разных размера шага.

Затем

называется экстраполяцией Ричардсона A ( h ) и имеет оценку ошибки более высокого порядка по сравнению с .

Очень часто гораздо проще получить заданную точность, используя R ( h ), а не A ( h' ) с гораздо меньшим h' . Где A ( h′ ) может вызвать проблемы из-за ограниченной точности ( ошибок округления ) и/или из-за увеличения количества необходимых вычислений (см. примеры ниже).

Пример псевдокода для экстраполяции Ричардсона [ править ]

Следующий псевдокод в стиле MATLAB демонстрирует экстраполяцию Ричардсона, помогающую решить ОДУ. , методом Трапециевидным . В этом примере мы уменьшаем размер шага вдвое. каждую итерацию, и поэтому в обсуждении выше у нас было бы это . Ошибка трапециевидного метода может быть выражена в нечетных степенях, так что ошибка на нескольких шагах может быть выражена в четных степенях; это заставляет нас поднимать ко второй власти и принять полномочия в псевдокоде. Мы хотим найти значение , который имеет точное решение поскольку точное решение ОДУ есть . Этот псевдокод предполагает, что функция с именем Trapezoidal(f, tStart, tEnd, h, y0) существует, который пытается вычислить y(tEnd) применив метод трапеций к функции f, с начальной точкой y0 и tStart и размер шага h.

Обратите внимание, что, начиная со слишком маленького начального размера шага, потенциально может возникнуть ошибка в окончательном решении. Хотя существуют методы, предназначенные для выбора наилучшего начального размера шага, один из вариантов — начать с большого размера шага, а затем позволить экстраполяции Ричардсона уменьшать размер шага на каждой итерации, пока ошибка не достигнет желаемого допуска.

tStart = 0          % Starting time
tEnd = 5            % Ending time
f = -y^2            % The derivative of y, so y' = f(t, y(t)) = -y^2
                    % The solution to this ODE is y = 1/(1 + t)
y0 = 1              % The initial position (i.e. y0 = y(tStart) = y(0) = 1)
tolerance = 10^-11  % 10 digit accuracy is desired

% Don't allow the iteration to continue indefinitely
maxRows = 20
% Pick an initial step size
initialH = tStart - tEnd
% Were we able to find the solution to within the desired tolerance? not yet.
haveWeFoundSolution = false

h = initialH

% Create a 2D matrix of size maxRows by maxRows to hold the Richardson extrapolates
% Note that this will be a lower triangular matrix and that at most two rows are actually
% needed at any time in the computation.
A = zeroMatrix(maxRows, maxRows)

% Compute the top left element of the matrix.
% The first row of this (lower triangular) matrix has now been filled.
A(1, 1) = Trapezoidal(f, tStart, tEnd, h, y0)

% Each row of the matrix requires one call to Trapezoidal
% This loops starts by filling the second row of the matrix,
% since the first row was computed above
for i = 1 : maxRows - 1 % Starting at i = 1, iterate at most maxRows - 1 times
    % Halve the previous value of h since this is the start of a new row.
    h = h/2

    % Starting filling row i+1 from the left by calling
    % the Trapezoidal function with this new smaller step size
    A(i + 1, 1) = Trapezoidal(f, tStart, tEnd, h, y0)

    % Go across this current (i+1)-th row until the diagonal is reached
    for j = 1 : i
        % To compute A(i + 1, j + 1), which is the next Richardson extrapolate, 
        % use the most recently computed value (i.e. A(i + 1, j))
        % and the value from the row above it (i.e. A(i, j)).

        A(i + 1, j + 1) = ((4^j).*A(i + 1, j) - A(i, j))/(4^j - 1);
    end
    
    % After leaving the above inner loop, the diagonal element of row i + 1 has been computed
    % This diagonal element is the latest Richardson extrapolate to be computed.
    % The difference between this extrapolate and the last extrapolate of row i is a good
    % indication of the error.
    if (absoluteValue(A(i + 1, i + 1) - A(i, i)) < tolerance)  % If the result is within tolerance
        % Display the result of the Richardson extrapolation
        print("y = ", A(i + 1, i + 1))
        haveWeFoundSolution = true
        % Done, so leave the loop
        break
    end
end

% If we were not able to find a solution to within the desired tolerance
if (not haveWeFoundSolution)
    print("Warning: Not able to find solution to within the desired tolerance of ", tolerance);
    print("The last computed extrapolate was ", A(maxRows, maxRows))
end

См. также [ править ]

Ссылки [ править ]

  1. ^ Ричардсон, LF (1911). «Приближенное арифметическое решение конечными разностями физических задач, включая дифференциальные уравнения, с применением к напряжениям в каменной плотине» . Философские труды Королевского общества А. 210 (459–470): 307–357. дои : 10.1098/rsta.1911.0009 .
  2. ^ Ричардсон, Луизиана ; Гонт, Дж. А. (1927). «Отложенный подход к пределу» . Философские труды Королевского общества А. 226 (636–646): 299–349. дои : 10.1098/rsta.1927.0008 .
  3. ^ Брезински, Клод (01 ноября 2009 г.), «Некоторые пионеры методов экстраполяции» , «Рождение численного анализа » , WORLD SCIENTIFIC, стр. 1–22, doi : 10.1142/9789812836267_0001 , ISBN  978-981-283-625-0
  4. ^ Страница 126 из Биркгоф, Гарретт ; Джан-Карло Рота (1978). Обыкновенные дифференциальные уравнения (3-е изд.). Джон Уайли и сыновья. ISBN  0-471-07411-Х . OCLC   4379402 .
  • Методы экстраполяции. Теория и практика К. Брезински и М. Редиво Залья , Северная Голландия, 1991.
  • Иван Димов, Захари Златев, Иштван Фараго, Агнес Хаваси: Экстраполяция Ричардсона: практические аспекты и приложения , Walter de Gruyter GmbH & Co KG, ISBN   9783110533002 (2017).

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 40e4a1f32b92d48337e7605a942ddc77__1714485060
URL1:https://arc.ask3.ru/arc/aa/40/77/40e4a1f32b92d48337e7605a942ddc77.html
Заголовок, (Title) документа по адресу, URL1:
Richardson extrapolation - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)