Приклад методу екстраполяції Річардсона у двох вимірах.
Екстраполяція Річардсона — чисельний метод пришвидшення рядів , який використовують для покращення швидкості збіжності послідовності оцінок деякого значення
A
∗
=
lim
h
→
0
A
(
h
)
{\displaystyle A^{\ast }=\lim _{h\to 0}A(h)}
. По суті, враховуючи значення
A
(
h
)
{\displaystyle A(h)}
для кількох значень
h
{\displaystyle h}
, ми можемо оцінити
A
∗
{\displaystyle A^{\ast }}
шляхом екстраполяції оцінок до
h
=
0
{\displaystyle h=0}
. Метод названий на честь Льюїса Фрая Річардсона , який ввів цю техніку на початку XX століття[ 1] [ 2] , хоча ця ідея вже була відома Християну Гюйгенсу з його розрахунків
π
{\displaystyle \pi }
[ 3] . За словами Біркгофа та Роти , «її корисність для практичних обчислень важко переоцінити»[ 4] .
Практичне застосування екстраполяції Річардсона включає інтегрування Ромберга , яке застосовує екстраполяцію Річардсона до методу трапецій , та алгоритм Булірша-Штера [en] для розв'язання звичайних диференціальних рівнянь.
Нехай
A
0
(
h
)
{\displaystyle A_{0}(h)}
буде наближенням до точного значення
A
∗
{\displaystyle A^{*}}
, що залежить від розміру кроку h (де
0
<
h
<
1
{\textstyle 0<h<1}
) з формулою для похибки виду
A
∗
=
A
0
(
h
)
+
a
0
h
k
0
+
a
1
h
k
1
+
a
2
h
k
2
+
⋯
{\displaystyle A^{*}=A_{0}(h)+a_{0}h^{k_{0}}+a_{1}h^{k_{1}}+a_{2}h^{k_{2}}+\cdots }
де
a
i
{\displaystyle a_{i}}
є невідомими константами, а
k
i
{\displaystyle k_{i}}
відомі константи такі, що
h
k
i
>
h
k
i
+
1
{\displaystyle h^{k_{i}}>h^{k_{i+1}}}
. Крім того,
O
(
h
k
i
)
{\displaystyle O(h^{k_{i}})}
представляє похибку відсікання для наближення
A
i
(
h
)
{\displaystyle A_{i}(h)}
, так що
A
∗
=
A
i
(
h
)
+
O
(
h
k
i
)
.
{\displaystyle A^{*}=A_{i}(h)+O(h^{k_{i}}).}
У цьому випадку кажуть, що
A
i
(
h
)
{\displaystyle A_{i}(h)}
є наближенням
O
(
h
k
i
)
{\displaystyle O(h^{k_{i}})}
.
Зверніть увагу, що спрощення за допомогою нотації O-велике забезпечує еквівалентність наступних формул:
A
∗
=
A
0
(
h
)
+
a
0
h
k
0
+
a
1
h
k
1
+
a
2
h
k
2
+
⋯
A
∗
=
A
0
(
h
)
+
a
0
h
k
0
+
O
(
h
k
1
)
A
∗
=
A
0
(
h
)
+
O
(
h
k
0
)
{\displaystyle {\begin{aligned}A^{*}&=A_{0}(h)+a_{0}h^{k_{0}}+a_{1}h^{k_{1}}+a_{2}h^{k_{2}}+\cdots \\A^{*}&=A_{0}(h)+a_{0}h^{k_{0}}+O(h^{k_{1}})\\A^{*}&=A_{0}(h)+O(h^{k_{0}})\end{aligned}}}
Екстраполяція Річардсона — це процес, який знаходить краще наближення
A
∗
{\displaystyle A^{*}}
, змінивши формулу похибки з
A
∗
=
A
0
(
h
)
+
O
(
h
k
0
)
{\displaystyle A^{*}=A_{0}(h)+O(h^{k_{0}})}
до
A
∗
=
A
1
(
h
)
+
O
(
h
k
1
)
.
{\displaystyle A^{*}=A_{1}(h)+O(h^{k_{1}}).}
Отже, замінивши
A
0
(
h
)
{\displaystyle A_{0}(h)}
з
A
1
(
h
)
{\displaystyle A_{1}(h)}
похибка відсікання зменшилася з
O
(
h
k
0
)
{\displaystyle O(h^{k_{0}})}
до
O
(
h
k
1
)
{\displaystyle O(h^{k_{1}})}
для того ж розміру кроку
h
{\displaystyle h}
. Загальна закономірність, за якою
A
i
(
h
)
{\displaystyle A_{i}(h)}
є точнішою оцінкою, ніж
A
j
(
h
)
{\displaystyle A_{j}(h)}
коли
i
>
j
{\displaystyle i>j}
. Завдяки цьому процесу ми досягли кращого наближення
A
∗
{\displaystyle A^{*}}
шляхом віднімання найбільшого члена похибки, який мав порядок
O
(
h
k
0
)
{\displaystyle O(h^{k_{0}})}
. Цей процес можна повторити, щоб видалити більше членів похибки та отримати ще кращі наближення.
Використовуючи розміри кроків
h
{\displaystyle h}
і
h
/
t
{\displaystyle h/t}
для деякої константи
t
{\displaystyle t}
, дві формули для
A
∗
{\displaystyle A^{*}}
мають вигляд:
A
∗
=
A
0
(
h
)
+
a
0
h
k
0
+
a
1
h
k
1
+
a
2
h
k
2
+
O
(
h
k
3
)
{\displaystyle A^{*}=A_{0}(h)+a_{0}h^{k_{0}}+a_{1}h^{k_{1}}+a_{2}h^{k_{2}}+O(h^{k_{3}})}
(1 )
A
∗
=
A
0
(
h
t
)
+
a
0
(
h
t
)
k
0
+
a
1
(
h
t
)
k
1
+
a
2
(
h
t
)
k
2
+
O
(
h
k
3
)
{\displaystyle A^{*}=A_{0}\!\left({\frac {h}{t}}\right)+a_{0}\left({\frac {h}{t}}\right)^{k_{0}}+a_{1}\left({\frac {h}{t}}\right)^{k_{1}}+a_{2}\left({\frac {h}{t}}\right)^{k_{2}}+O(h^{k_{3}})}
(2 )
Щоб покращити наше наближення від
O
(
h
k
0
)
{\displaystyle O(h^{k_{0}})}
до
O
(
h
k
1
)
{\displaystyle O(h^{k_{1}})}
видаливши перший член похибки, ми множимо рівняння 2 на
t
k
0
{\displaystyle t^{k_{0}}}
і відніміть рівняння 1 , отримуючи
(
t
k
0
−
1
)
A
∗
=
[
t
k
0
A
0
(
h
t
)
−
A
0
(
h
)
]
+
(
t
k
0
a
1
(
h
t
)
k
1
−
a
1
h
k
1
)
+
(
t
k
0
a
2
(
h
t
)
k
2
−
a
2
h
k
2
)
+
O
(
h
k
3
)
.
{\displaystyle (t^{k_{0}}-1)A^{*}={\bigg [}t^{k_{0}}A_{0}\left({\frac {h}{t}}\right)-A_{0}(h){\bigg ]}+{\bigg (}t^{k_{0}}a_{1}{\bigg (}{\frac {h}{t}}{\bigg )}^{k_{1}}-a_{1}h^{k_{1}}{\bigg )}+{\bigg (}t^{k_{0}}a_{2}{\bigg (}{\frac {h}{t}}{\bigg )}^{k_{2}}-a_{2}h^{k_{2}}{\bigg )}+O(h^{k_{3}}).}
Це множення та віднімання було виконано тому, що
[
t
k
0
A
0
(
h
t
)
−
A
0
(
h
)
]
{\textstyle {\big [}t^{k_{0}}A_{0}\left({\frac {h}{t}}\right)-A_{0}(h){\big ]}}
є
O
(
h
k
1
)
{\displaystyle O(h^{k_{1}})}
наближення
(
t
k
0
−
1
)
A
∗
{\displaystyle (t^{k_{0}}-1)A^{*}}
. Ми можемо розв'язати нашу поточну формулу для
A
∗
{\displaystyle A^{*}}
, отримавши
A
∗
=
[
t
k
0
A
0
(
h
t
)
−
A
0
(
h
)
]
t
k
0
−
1
+
(
t
k
0
a
1
(
h
t
)
k
1
−
a
1
h
k
1
)
t
k
0
−
1
+
(
t
k
0
a
2
(
h
t
)
k
2
−
a
2
h
k
2
)
t
k
0
−
1
+
O
(
h
k
3
)
{\displaystyle A^{*}={\frac {{\bigg [}t^{k_{0}}A_{0}\left({\frac {h}{t}}\right)-A_{0}(h){\bigg ]}}{t^{k_{0}}-1}}+{\frac {{\bigg (}t^{k_{0}}a_{1}{\bigg (}{\frac {h}{t}}{\bigg )}^{k_{1}}-a_{1}h^{k_{1}}{\bigg )}}{t^{k_{0}}-1}}+{\frac {{\bigg (}t^{k_{0}}a_{2}{\bigg (}{\frac {h}{t}}{\bigg )}^{k_{2}}-a_{2}h^{k_{2}}{\bigg )}}{t^{k_{0}}-1}}+O(h^{k_{3}})}
що можна записати як
A
∗
=
A
1
(
h
)
+
O
(
h
k
1
)
{\displaystyle A^{*}=A_{1}(h)+O(h^{k_{1}})}
, де
A
1
(
h
)
=
t
k
0
A
0
(
h
t
)
−
A
0
(
h
)
t
k
0
−
1
.
{\displaystyle A_{1}(h)={\frac {t^{k_{0}}A_{0}\left({\frac {h}{t}}\right)-A_{0}(h)}{t^{k_{0}}-1}}.}
Для таких наближень можна визначити загальне рекурентне співвідношення
A
i
+
1
(
h
)
=
t
k
i
A
i
(
h
t
)
−
A
i
(
h
)
t
k
i
−
1
{\displaystyle A_{i+1}(h)={\frac {t^{k_{i}}A_{i}\left({\frac {h}{t}}\right)-A_{i}(h)}{t^{k_{i}}-1}}}
де
k
i
+
1
{\displaystyle k_{i+1}}
задовольняє умові
A
∗
=
A
i
+
1
(
h
)
+
O
(
h
k
i
+
1
)
.
{\displaystyle A^{*}=A_{i+1}(h)+O(h^{k_{i+1}}).}
Екстраполяцію Річардсона можна розглядати як лінійне перетворення послідовності [en] .
Крім того, для оцінки можна використовувати загальну формулу
k
0
{\displaystyle k_{0}}
(поведінка розміру кроку провідного порядку похибки відсікання ), коли ні його значення, ні
A
∗
{\displaystyle A^{*}}
не відімо апріорі. Такий метод може бути корисним для кількісної оцінки невідомої швидкості збіжності . Враховуючи наближення
A
∗
{\displaystyle A^{*}}
з трьох різних розмірів кроку
h
{\displaystyle h}
,
h
/
t
{\displaystyle h/t}
, та
h
/
s
{\displaystyle h/s}
, точне співвідношення
A
∗
=
t
k
0
A
i
(
h
t
)
−
A
i
(
h
)
t
k
0
−
1
+
O
(
h
k
1
)
=
s
k
0
A
i
(
h
s
)
−
A
i
(
h
)
s
k
0
−
1
+
O
(
h
k
1
)
{\displaystyle A^{*}={\frac {t^{k_{0}}A_{i}\left({\frac {h}{t}}\right)-A_{i}(h)}{t^{k_{0}}-1}}+O(h^{k_{1}})={\frac {s^{k_{0}}A_{i}\left({\frac {h}{s}}\right)-A_{i}(h)}{s^{k_{0}}-1}}+O(h^{k_{1}})}
дає приблизне співвідношення (зверніть увагу, що позначення тут можуть викликати певну плутанину, два O, що з'являються у наведеному вище рівнянні, вказують лише на поведінку розміру кроку провідного порядку, але їхні явні форми різні, тому скорочення двох членів O є лише приблизно дійсним)
A
i
(
h
t
)
+
A
i
(
h
t
)
−
A
i
(
h
)
t
k
0
−
1
≈
A
i
(
h
s
)
+
A
i
(
h
s
)
−
A
i
(
h
)
s
k
0
−
1
{\displaystyle A_{i}\left({\frac {h}{t}}\right)+{\frac {A_{i}\left({\frac {h}{t}}\right)-A_{i}(h)}{t^{k_{0}}-1}}\approx A_{i}\left({\frac {h}{s}}\right)+{\frac {A_{i}\left({\frac {h}{s}}\right)-A_{i}(h)}{s^{k_{0}}-1}}}
яку можна розв'язати чисельно для оцінки
k
0
{\displaystyle k_{0}}
для деяких довільних допустимих варіантів
h
{\displaystyle h}
,
s
{\displaystyle s}
, та
t
{\displaystyle t}
.
Оскільки
t
≠
1
{\displaystyle t\neq 1}
, якщо
t
>
0
{\displaystyle t>0}
і
s
{\displaystyle s}
вибрано так, щоб
s
=
t
2
{\displaystyle s=t^{2}}
, це наближене співвідношення зводиться до квадратного рівняння для
t
k
0
{\displaystyle t^{k_{0}}}
, яке легко розв'язати для
k
0
{\displaystyle k_{0}}
в термінах
h
{\displaystyle h}
і
t
{\displaystyle t}
.
Припустимо, що ми хочемо наближено визначити
A
∗
{\displaystyle A^{*}}
, і в нас є метод
A
(
h
)
{\displaystyle A(h)}
, який залежить від невеликого параметра
h
{\displaystyle h}
таким чином, що
A
(
h
)
=
A
∗
+
C
h
n
+
O
(
h
n
+
1
)
.
{\displaystyle A(h)=A^{\ast }+Ch^{n}+O(h^{n+1}).}
Визначаємо нову функцію
R
(
h
,
t
)
:=
t
n
A
(
h
/
t
)
−
A
(
h
)
t
n
−
1
{\displaystyle R(h,t):={\frac {t^{n}A(h/t)-A(h)}{t^{n}-1}}}
де
h
{\displaystyle h}
і
h
t
{\displaystyle {\frac {h}{t}}}
— два різних розміри кроку.
Тоді
R
(
h
,
t
)
=
t
n
(
A
∗
+
C
(
h
t
)
n
+
O
(
h
n
+
1
)
)
−
(
A
∗
+
C
h
n
+
O
(
h
n
+
1
)
)
t
n
−
1
=
A
∗
+
O
(
h
n
+
1
)
.
{\displaystyle R(h,t)={\frac {t^{n}(A^{*}+C\left({\frac {h}{t}}\right)^{n}+O(h^{n+1}))-(A^{*}+Ch^{n}+O(h^{n+1}))}{t^{n}-1}}=A^{*}+O(h^{n+1}).}
R
(
h
,
t
)
{\displaystyle R(h,t)}
називається екстраполяцією Річардсона A (h ) і має оцінку похибки вищого порядку
O
(
h
n
+
1
)
{\displaystyle O(h^{n+1})}
порівняно з
A
(
h
)
{\displaystyle A(h)}
.
Часто набагато легше отримати задану точність, використовуючи R (h ), а не A (h′ ) зі значно меншим h′ . У такому разі A (h′ ) може спричинити проблеми через обмежену точність (похибки округлення ) або через збільшення кількості необхідних обчислень [en] .
↑ Richardson, L. F. (1911). The approximate arithmetical solution by finite differences of physical problems including differential equations, with an application to the stresses in a masonry dam . Philosophical Transactions of the Royal Society A . 210 (459–470): 307—357. doi :10.1098/rsta.1911.0009 .
↑ Richardson, L. F.; Gaunt, J. A. (1927). The deferred approach to the limit . Philosophical Transactions of the Royal Society A . 226 (636–646): 299—349. doi :10.1098/rsta.1927.0008 .
↑ Brezinski, Claude (1 листопада 2009), Some pioneers of extrapolation methods , The Birth of Numerical Analysis , WORLD SCIENTIFIC: 1—22, doi :10.1142/9789812836267_0001 , ISBN 978-981-283-625-0
↑ Page 126 of Birkhoff, Garrett; Gian-Carlo Rota (1978). Ordinary differential equations (вид. 3rd). John Wiley and sons. ISBN 0-471-07411-X . OCLC 4379402 .