Экстраполяция Ричардсона
В численном анализе , экстраполяция Ричардсона — это метод ускорения последовательности используемый для улучшения скорости сходимости последовательности оценок некоторого значения. . По сути, учитывая стоимость для нескольких значений , мы можем оценить экстраполируя оценки на . Он назван в честь Льюиса Фрая Ричардсона , который представил эту технику в начале 20 века. [1] [2] хотя эта идея была уже известна Христиану Гюйгенсу при его расчете . [3] По словам Биркгофа и Роты , «его полезность для практических вычислений трудно переоценить». [4]
Практические применения экстраполяции Ричардсона включают интеграцию Ромберга , которая применяет экстраполяцию Ричардсона к правилу трапеций , и алгоритм Булирша-Стоера для решения обыкновенных дифференциальных уравнений.
Общая формула [ править ]
Обозначения [ править ]
Позволять быть приближением (точное значение), которое зависит от размера шага h (где ) с формулой ошибки вида
Обратите внимание, что при упрощении с помощью обозначения Big O следующие формулы эквивалентны:
Цель [ править ]
Экстраполяция Ричардсона – это процесс, позволяющий найти лучшее приближение изменив формулу ошибки с к Поэтому, заменив с уменьшилась ошибка усечения с к для того же размера шага . Происходит общая закономерность, при которой является более точной оценкой, чем когда . Благодаря этому процессу мы достигли лучшего приближения вычитая самый большой член ошибки, которая была . Этот процесс можно повторить, чтобы удалить больше ошибок и получить еще лучшие приближения.
Процесс [ править ]
Использование размеров шага и для некоторой константы , две формулы для являются:
( 1 ) |
( 2 ) |
Чтобы улучшить наше приближение из к удалив первый член ошибки, мы умножаем уравнение 2 на и вычтем уравнение 1 , чтобы получить
Рекуррентное отношение [ править ]
Общее рекуррентное соотношение можно определить для аппроксимаций следующим образом:
Свойства [ править ]
Экстраполяцию Ричардсона можно рассматривать как преобразование линейной последовательности .
Кроме того, общую формулу можно использовать для оценки (поведение размера шага ведущего порядка при ошибке усечения ), когда ни его значение, ни известно априори . Такой метод может быть полезен для количественного определения неизвестной скорости сходимости . Учитывая приближения из трех различных размеров шага , , и , точное соотношение
Как , если и выбирается так, что , это приближенное соотношение сводится к квадратному уравнению относительно , что легко решается для с точки зрения и .
экстраполяции Ричардсона Пример
Предположим, что мы хотим аппроксимировать , и у нас есть метод это зависит от небольшого параметра таким образом, что
Определим новую функцию
Затем
Очень часто гораздо проще получить заданную точность, используя R ( h ), а не A ( h' ) с гораздо меньшим h' . Где A ( h′ ) может вызвать проблемы из-за ограниченной точности ( ошибок округления ) и/или из-за увеличения вычислений количества необходимых (см. примеры ниже).
Пример псевдокода для экстраполяции Ричардсона [ править ]
Следующий псевдокод в стиле MATLAB демонстрирует экстраполяцию Ричардсона, помогающую решить ОДУ. , методом Трапециевидным . В этом примере мы уменьшаем размер шага вдвое. каждую итерацию, и поэтому в обсуждении выше у нас было бы это . Ошибка трапециевидного метода может быть выражена в нечетных степенях, так что ошибка на нескольких шагах может быть выражена в четных степенях; это заставляет нас поднимать ко второй власти и принять полномочия в псевдокоде. Мы хотим найти значение , который имеет точное решение поскольку точное решение ОДУ есть . Этот псевдокод предполагает, что функция с именем Trapezoidal(f, tStart, tEnd, h, y0)
существует, который пытается вычислить y(tEnd)
применив метод трапеций к функции f
, с начальной точкой y0
и tStart
и размер шага h
.
Обратите внимание, что, начиная со слишком маленького начального размера шага, потенциально может возникнуть ошибка в окончательном решении. Хотя существуют методы, предназначенные для выбора наилучшего начального размера шага, один из вариантов — начать с большого размера шага, а затем позволить экстраполяции Ричардсона уменьшать размер шага на каждой итерации, пока ошибка не достигнет желаемого допуска.
tStart = 0 % Время начала
tEnd = 5 % Время окончания
f = - y ^ 2 % Производная от y, поэтому y' = f(t, y(t)) = -y^2
% Решением этого ОДУ является y = 1/(1 + t)
y0 = 1 % Начальная позиция (т. е. y0 = y(tStart) = y(0) = 1)
допуск = 10 ^ - 11 % Желательна точность в 10 цифр
% Не разрешать итерацию продолжать бесконечно
maxRows = 20
% Выберите начальный размер шага
InitialH = tStart - tEnd
% Смогли ли мы найти решение в пределах желаемого допуска? еще нет.
haveWeFoundSolution = false
h = InitialH
% Создайте двумерную матрицу размером maxRows по maxRows для хранения экстраполяций Ричардсона
% Обратите внимание, что это будет нижняя треугольная матрица и что на самом деле
в любой момент вычисления % необходимо не более двух строк.
A = нулевая матрица ( maxRows , maxRows )
% Вычисляет верхний левый элемент матрицы.
% Первая строка этой (нижней треугольной) матрицы теперь заполнена.
A ( 1 , 1 ) = Trapezoidal ( f , tStart , tEnd , h , y0 )
% Каждая строка матрицы требует одного вызова Trapezoidal
% Этот цикл начинается с заполнения второй строки матрицы,
% поскольку была вычислена первая строка выше
for i = 1 : maxRows - 1 % Начиная с i = 1, повторяйте не более maxRows - 1 раз
% Уменьшите вдвое предыдущее значение h, так как это начало новой строки.
h = h / 2
% Начинаем заполнять строку i+1 слева, вызывая
% функцию Trapezoidal с этим новым меньшим размером шага
A ( i + 1 , 1 ) = Trapezoidal ( f , tStart , tEnd , h , y0 )
% Go по этой текущей (i+1)-й строке, пока не будет достигнута диагональ
для j = 1 : i
% Чтобы вычислить A(i + 1, j + 1), которое является следующей экстраполяцией Ричардсона,
% используйте самое последнее вычисленное значение (т.е. A(i + 1, j))
% и значение из строки над ним (т.е. A(i, j)).
А ( я + 1 , j + 1 ) = (( 4 ^ j ) .* A ( я + 1 , j ) - A ( я , j )) / ( 4 ^ j - 1 );
end
% После выхода из вышеуказанного внутреннего цикла был вычислен диагональный элемент строки i + 1.
% Этот диагональный элемент является последней экстраполяцией Ричардсона, которая должна быть вычислена.
% Разница между этой экстраполяцией и последней экстраполяцией строки i является хорошим
показателем % ошибки.
if ( AbsoluteValue ( A ( i + 1 , i + 1 ) - A ( i , i )) < допуск ) % Если результат находится в пределах допуска
% Отобразите результат экстраполяции Ричардсона
print ( "y = " , A ( i + 1 , i + 1 ))
haveWeFoundSolution = true
цикла
% Готово, поэтому оставьте конец
end
end
% Если мы не смогли найти решение в пределах желаемого допуска
if ( not haveWeFoundSolution )
print ( "Предупреждение: невозможно найти решение в пределах желаемого допуска " , допуск );
print ( "Последняя вычисленная экстраполяция была " , A ( maxRows , maxRows ))
end
См. также [ править ]
Ссылки [ править ]
- ^ Ричардсон, LF (1911). «Приближенное арифметическое решение конечными разностями физических задач, включая дифференциальные уравнения, с применением к напряжениям в каменной плотине» . Философские труды Королевского общества А. 210 (459–470): 307–357. дои : 10.1098/rsta.1911.0009 .
- ^ Ричардсон, Луизиана ; Гонт, Дж. А. (1927). «Отложенный подход к пределу» . Философские труды Королевского общества А. 226 (636–646): 299–349. дои : 10.1098/rsta.1927.0008 .
- ^ Брезински, Клод (01 ноября 2009 г.), «Некоторые пионеры методов экстраполяции» , «Рождение численного анализа» , WORLD SCIENTIFIC, стр. 1–22, doi : 10.1142/9789812836267_0001 , ISBN 978-981-283-625-0
- ^ Страница 126 из Биркгоф, Гарретт ; Джан-Карло Рота (1978). Обыкновенные дифференциальные уравнения (3-е изд.). Джон Уайли и сыновья. ISBN 0-471-07411-Х . OCLC 4379402 .
- Методы экстраполяции. Теория и практика К. Брезински и М. Редиво Залья , Северная Голландия, 1991.
- Иван Димов, Захари Златев, Иштван Фараго, Агнес Хаваси: Экстраполяция Ричардсона: практические аспекты и приложения , Walter de Gruyter GmbH & Co KG, ISBN 9783110533002 (2017).
Внешние ссылки [ править ]
- Фундаментальные методы численной экстраполяции с приложениями , mit.edu
- Ричардсон-Экстраполяция
- Экстраполяция Ричардсона на сайте Роберта Исраэля (Университет Британской Колумбии)
- Код Matlab для общей экстраполяции Ричардсона.
- Код Джулии для общей экстраполяции Ричардсона.