Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

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

где и - два различных размера шага.

потом

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

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

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

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

где a i - неизвестные константы, а k i - известные константы, такие что h k i > h k i + 1 .

k 0 - поведение размера шага ведущего порядка ошибки усечения, поскольку

Искомое точное значение можно определить как

который можно упростить с помощью нотации Big O до

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

Умножение второго уравнения на t k 0 и вычитание первого уравнения дает

который можно решить, чтобы дать

Таким образом, ошибка усечения была уменьшена до . Это в отличие от , где ошибка усечения находится за тот же размер шага

Благодаря этому процессу мы достигли лучшего приближения к A , вычтя наибольший член ошибки, который был O ( h k 0 ). Этот процесс можно повторить, чтобы удалить больше ошибок, чтобы получить еще лучшие приближения.

Общее рекуррентное соотношение, начинающееся с, может быть определено для приближений формулой

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

.

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

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

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

которое можно решить численно, чтобы оценить k 0 для некоторых произвольных выборов h , s и t .

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

Следующий псевдокод в стиле 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 % Pick первоначального размера шага     haveWeFoundSolution = false % Удалось ли найти решение в пределах желаемого допуска? еще нет.   h = initialH  % Создайте 2D-матрицу размером maxRows на maxRows для хранения экстраполяций Ричардсона% Обратите внимание, что это будет нижняя треугольная матрица и что на самом деле не более двух строк% требуется в любой момент вычислений.A = zeroMatrix ( maxRows , maxRows )   % Вычислить верхний левый элемент матрицы( 1 , 1 ) = Трапециевидный ( е , Tstart , как правило , ч , у0 )       % Каждая строка матрицы требует одного вызова Trapezoidal% Этот цикл начинается с заполнения второй строки матрицы, так как первая строка была вычислена вышедля i = 1 : maxRows - 1 % Начиная с i = 1, повторять не более maxRows - 1 раз         h = h / 2 % Половина предыдущего значения h, так как это начало новой строки     % Вызовите трапециевидную функцию с этим новым меньшим размером шага ( Я + 1 , 1 ) = Трапециевидный ( е , Tstart , как правило , ч , у0 )           для j = 1 : i % Пересеките строку, пока не достигнете диагонали       % Используйте только что вычисленное значение (например, A (i + 1, j)) и элемент из % строка над ней (т.е. A (i, j)) для вычисления следующей экстраполяции Ричардсона  A ( i + 1 , j + 1 ) = (( 4 ^ j ) . * A ( i + 1 , j ) - A ( i , j )) / ( 4 ^ j - 1 );                конец  % После выхода из указанного выше внутреннего цикла был вычислен диагональный элемент строки i + 1. % Этот диагональный элемент представляет собой последнюю вычисляемую экстраполяцию Ричардсона. % Разница между этой экстраполяцией и последней экстраполяцией строки i является хорошей % индикации ошибки. if ( absoluteValue ( A ( i + 1 , i + 1 ) - A ( i , i )) < толерантность ) % Если результат находится в пределах допуска             print ( "y (5) =" , A ( i + 1 , i + 1 )) % Показать результат экстраполяции Ричардсона        haveWeFoundSolution = true   break % Done, поэтому оставьте цикл  конецконецif ( haveWeFoundSolution == false ) % Если мы не смогли найти решение в пределах желаемого допуска     print ( «Предупреждение: невозможно найти решение в пределах желаемого допуска» , толерантность );  print ( "Последняя вычисленная экстраполяция была" , A ( maxRows , maxRows ))  конец

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

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

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

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

  • Основные методы численной экстраполяции с приложениями , mit.edu
  • Ричардсон-Экстраполяция
  • Экстраполяция Ричардсона на сайте Роберта Исраэля (Университет Британской Колумбии)
  • Код Matlab для обобщенной экстраполяции Ричардсона.
  • Код Джулии для общей экстраполяции Ричардсона.