Методи на Рунге-Кута

От testwiki
Направо към навигацията Направо към търсенето

В математическия анализ, методите на Рунге-Кута са важна част от имплицитните и експлицитните итеративни методи за получаване на приближено решение на обикновени диференциални уравнения. Тези похвати са били въведени около 1900 г. от немските математици Карл Рунге и Мартин Вилхелм Кута.

Метод на Рунге-Кута от 4-ти ред

Методът на Рунге-Кута от 4-ти ред е най-често използваният, също известен като „РК“, „Класически метод на Рунге-Кута“ или просто „Метод на Рунге-Кута“.

Дадена е следната начална задача (още се нарича „задача на Коши“):

y˙=f(t,y),y(t0)=y0.

Казано с думи, това означава, че стойностите, които получава y са функции на y и на t(time). В началото времето е t0, a y е y0. В уравнението y може да е скаларна или векторна променлива.

Методът на РК от 4-ти ред за тази задача е получен от следните формули:

yn+1=yn+16(k1+2k2+2k3+k4)tn+1=tn+h

където yn+1 приближението с РК4 на y(tn+1), и

k1=hf(tn,yn),k2=hf(tn+12h,yn+12k1),k3=hf(tn+12h,yn+12k2),k4=hf(tn+h,yn+k3).[1]
(Забележка: горните уравнения имат различни, но равнозначни дефиниции в различните текстове).[2]

Така новата стойност (yn+1) се пресмята с помощта на текущата стойност(yn) плюс стойност на четирите нараствания с определени тегла, където всяко нарастване е произведение от големината на интервала h и оценения наклон, зададен от функцията f от дясната страна на диференциалното уравнение.

  • k1 е нарастване, основаващо се на наклона от началото на интервала, използвайки yn, Метод на (Ойлер);
  • k2 е нарастване, основаващо се на наклона от междинна точка от интервала, използвайки yn+12k1;
  • k3 е отново нарастване, основаващо се на налкона от междинна точка, но използвайки yn+12k2;
  • k4 е нарастване, основаващо се на наклона в края на интервала, използвайки yn+k3.

При усредняване на четирите нараствания се дава по-голямо тегло на нарастванията в междинните точки. Теглата са избрани така, че ако f не зависи от y и диференциалното уравнение има пръв интеграл, тогава РК4 e „правило на Симпсън“.[3]

РК4 е метод от 4-ти ред, което означава, че грешката на всяка стъпка е от порядъка на h5, докато крайната натрупана грешка има ред h4.

Явни методи на Рунге-Кута

Семейството на експлицитните методи на Рунге-Кута са обобщение на РК4 метода, споменат преди малко. Те са представени чрез:

yn+1=yn+i=1sbiki,

където

k1=hf(tn,yn),
k2=hf(tn+c2h,yn+a21k1),
k3=hf(tn+c3h,yn+a31k1+a32k2),
ks=hf(tn+csh,yn+as1k1+as2k2++as,s1ks1).[4]
(Забележка: горните уравнения имат различни, но равнозначни дефиниции в различните текстове).[2]

За да се специфицира определен метод, е нужно да се зададе цяло число s (брой етапи) и коефициентите aij (за 1 ≤ j < is), bi (за i = 1, 2, ..., s) и ci (за i = 2, 3, ..., s). Матрицата [aij] се нарича матрица на Рунге-Кута, където bi и ci са познати като тегла и възли.[5] Таблицата на Бутчер е следната:

0
c2 a21
c3 a31 a32
cs as1 as2 as,s1
b1 b2 bs1 bs

Методът на Рунге-Кута е коректен, ако

j=1i1aij=ci for i=2,,s.

Има и други съпътстващи изисквания, ако искаме метода да има определен ред p, което ознавача, че локалното грешката от закръгляване е O(hp+1). Това може да бъде извлечено от дефиницията за грешка от закръгляване. Например, 2-етапен метод е от 2-ри ред ако b1 + b2 = 1, b2c2 = 1/2, и a21 = c2.[6]

Примери

РК4 методът има следната структура. Неговата таблицата е както следва:[7]

0
1/2 1/2
1/2 0 1/2
1 0 0 1
1/6 1/3 1/3 1/6

Най-простият метод на Рунге-Кута е методът на Ойлер, представен с формулата yn+1=yn+hf(tn,yn). Това е единственият коректно поставен експлицитен метод на Рунге-Кута от един етап. Таблицата, която отговаря на тази формула е:

0
1

Методи от 2-ри ред

Методът на междинната точка представлява пример за метод от 2-ри ред с два етапа:

yn+1=yn+hf(tn+12h,yn+12hf(tn,yn)).

Таблицата е:

0
1/2 1/2
0 1

ТМетодът на междинната точка не е единствен метод на РК от 2-ри ред с два етапа. Всъщност, има семейство от такива методи, параметризирани с α и представени с формула

yn+1=yn+h((112α)f(tn,yn)+12αf(tn+αh,yn+αhf(tn,yn))).[8]

Таблицата на Бутчер е:

0
α α
112α 12α

В това семейство при частния случай α=12 получаваме метода на междинната точка, а при α=1 метод на Хойн.[3]

Използване

Като пример, да разгледаме метода на РК от 2-ри ред с 2 етапа с α=2/3. Той се представя с таблицата:

0
2/3 2/3
1/4 3/4

със съответните уравнения:

k1=f(tn,yn),k2=f(tn+23h,yn+23hk1),yn+1=yn+h(14k1+34k2).

Методът се използва за да реши началната задача:

y=tan(y)+1,y(1)=1, t[1,1.1]

със стъпка h=0.025, следователно методът трябва да направи 4 стъпки.

Изпълнението на метода е както следва:

t0=1:
y0=1
t1=1.025:
y0=1 k1=2.557407725 k2=f(t0+23h,y0+23hk1)=2.7139
y1=y0+h(14k1+34k2)=1.066869388_
t2=1.05:
y1=1.066869388 k1=2.813524695 k2=f(t1+23h,y1+23hk1)
y2=y1+h(14k1+34k2)=1.141332181_
t3=1.075:
y2=1.141332181 k1=3.183536647 k2=f(t2+23h,y2+23hk1)
y3=y2+h(14k1+34k2)=1.227417567_
t4=1.1:
y3=1.227417567 k1=3.796866512 k2=f(t3+23h,y3+23hk1)
y4=y3+h(14k1+34k2)=1.335079087_.

Числените решения отговарят на подчертаните стойности.

Адаптивни методи на Рунге-Кута

Адаптивните методи са съставени, така че да оценяват локалната грешката от закръгляване на всяка РК-стъпка. Това става използвайки два метода в таблици, единия от ред p, а другия от ред p1.

Стъпката от по-нисък ред се получава от:

yn+1*=yn+i=1sbi*ki,

където ki са същите като за метод от по-висок ред. Тогава грешката е:

en+1=yn+1yn+1*=hi=1s(bibi*)ki,

което еO(hp).

Таблицата на Бутчер за тови вид метод е разширена за да се въведат стойностите на bi*:

0
c2 a21
c3 a31 a32
cs as1 as2 as,s1
b1 b2 bs1 bs
b1* b2* bs1* bs*

Методът на Рунге-Кута-Фелберг използва два метода от 5-и и 4-ти ред. Неговата разширена таблица е:

0
1/4 1/4
3/8 3/32 9/32
12/13 1932/2197 −7200/2197 7296/2197
1 439/216 −8 3680/513 -845/4104
1/2 −8/27 2 −3544/2565 1859/4104 −11/40
16/135 0 6656/12825 28561/56430 −9/50 2/55
25/216 0 1408/2565 2197/4104 −1/5 0

Най-простият адаптивен метод на РК включва комбинирането на метод на Хойн, който е от 2-ри ред, с метод на Ойлер, който е от 1-ви ред. Неговата разширена таблица е:

0
1 1
1/2 1/2
1 0

Оценката на грешката се използва за контролиране на големината на стъпката.

Неявни методи на Рунге-Кута

Всички споменати методи на Рунге-Кута са експлицитни. Експлицитните методи на Рунге-Кута са неподходящи за решаване на така наречените „stiff equations“ (твърди уравнения), защото обхвата на абсолютната им устойчивост е малък, по-точно ограничен.[9] Този проблем е особено важен при решаването на частни диференциални уравнения.

Неустойчивостта на експлицитните методи подбужда създаването на имплицитните методи. Имплицитен метод на РК има формата:

yn+1=yn+i=1sbiki,

където

ki=hf(tn+cih,yn+j=1saijkj),i=1,,s.[10]

Разликата с експлицитния метод е, че при експлицитния метод сумата на j стига само до i – 1. Това се вижда и в таблицата. За имплицитен метод, матрицата на коефициенти aij не е непременно долно-триъгълна:[7]

c1a11a12a1sc2a21a22a2scsas1as2assb1b2bs=𝐜A𝐛𝐓

Последиците от тази разлика са, че на всяка стъпка се решава система от алгебрични уравнения. Това значително повишава изчислителния разход. Ако метод със s етапа се използва за решаване на диференциално уравнение с m компонента, системата от алгебрични уравнения ще има ms компонента. За сравнение, при имплицитен s-стъпков линеен метод се решава система от алгебрични уравнения със само s компонента.[11]

Примери

Най-простият имплицитен метод на РК е представен с метод на Ойлер назад:

yn+1=yn+hf(tn+h,yn+1).

Таблицата е просто:

111

Тази таблица отговаря на формулите:

k1=f(tn+h,yn+hk1)andyn+1=yn+hk1,

които могат да бъдат пренаредени за да се получи формула за метод на Ойлер назад, описан по-горе.

Друг пример за имплицитен метод на Рунге-Кута е правилото на трапеца. Съответната таблица е:

000112121212

Методите на Гаус-Льожандър формират семейство методи, базирани на квадратурата на Гаус. Метод на Гаус-Льожандър със s етапа е от ред 2s.[12] Метод с два етапа (и 4-ти ред) има следната таблица:

12163141416312+16314+163141212[11]

Устойчивост

Предимството на имплицитните методи на Рунге-Кута пред експлицитните е по-голямата им устойчивост, особено когато се прилагат върху твърди уравнения. Разглеждаме линейното тестово уравнение y' = λy. Методът на РК, приложен за това уравнение, свежда решаването му до изпълняване на итерациите yn+1=r(hλ)yn, където r е дадено чрез

r(z)=1+zbT(IzA)1e=det(IzA+zebT)det(IzA),[13]

където е е единичния вектор. Функцията r се нарича функция на устойчивостта.[14] Експлицитните методи имат строга ниско-триъгълна матрица А, която предполага, че det(IzA) = 1 и функцията на устойчивостта е полином.[15]

Численото решение на линейното тестово уравнение се разпада до нула ако |r(z)| < 1 при z=hλ. Множеството от такива стойности на z се нарича област на абсолютна устойчивост. В частност, методът трябва да бъде A-стабилен, ако всяко z с Re(z)<0 се намира в областта на абсолютната устойчивост. Функцията на устойчивостта на експлицитния метод на РК е полином, следователно експлицитните методи на РК никога не могат да бъдат A-стабилни.[15]

Извеждане на метода на Рунге-Кута от 4-ти ред

Методът на Рунге-Кута от ред s може да бъде написан така:

yt+h=yt+hi=1saiki+𝒪(hs+1)

където:

ki=f(yt+hj=1sβijkj,tn+αih)

са нараствания получени чрез пресмятане на производните на yt в i-тия ред.

Извеждането на метода на Рунге-Кута от 4-ти ред се постига чрез използване на общата формула с s=4, както е описано по-горе, в началната точка, междинна точка и последната точка на всеки интервал (t,t+h), затова избираме:

αi βi
α1=0 β21=12
α2=12 β32=12
α3=12 β43=1
α4=1

и βij=0. Започваме с определянето на следните величини:

yt+h1=yt+hf(yt,t)yt+h2=yt+hf(yt+h/21,t+h2)yt+h3=yt+hf(yt+h/22,t+h2)

където yt+h/21=yt+yt+h12 and yt+h/22=yt+yt+h22 Ако задедем:

k1=f(yt,t)k2=f(yt+h/21,t+h2)k3=f(yt+h/22,t+h2)k4=f(yt+h3,t+h)

и имайки предвид горните изрази можем да покажем, че следните равенства имат точност 𝒪(h2):

k2=f(yt+h/21,t+h2)=f(yt+h2k1,t+h2)=f(yt,t)+h2ddtf(yt,t)k3=f(yt+h/22,t+h2)=f(yt+h2f(yt+h2k1,t+h2),t+h2)=f(yt,t)+h2ddt[f(yt,t)+h2ddtf(yt,t)]k4=f(yt+h3,t+h)=f(yt+hf(yt+h2k2,t+h2),t+h)=f(yt+hf(yt+h2f(yt+h2f(yt,t),t+h2),t+h2),t+h)=f(yt,t)+hddt[f(yt,t)+h2ddt[f(yt,t)+h2ddtf(yt,t)]]

където:

ddtf(yt,t)=yf(yt,t)y˙t+tf(yt,t)=fy(yt,t)y˙+ft(yt,t):=y¨t

е пълната производна на f по отношение на времето t.

Ако изразим общата формула, използвайки това, което изведохме по-горе, получаваме:

yt+h=yt+h{af(yt,t)+b[f(yt,t)+h2ddtf(yt,t)]++c[f(yt,t)+h2ddt[f(yt,t)+h2ddtf(yt,t)]]++d[f(yt,t)+hddt[f(yt,t)+h2ddt[f(yt,t)+h2ddtf(yt,t)]]]}+𝒪(h5)=yt+ahft+bhft+bh22dftdt+chft+ch22dftdt++ch34d2ftdt2+dhft+dh2dftdt+dh32d2ftdt2+dh44d3ftdt3+𝒪(h5)

И като сравним това с реда на Тейлър за yt+h около yt:

yt+h=yt+hy˙t+h22y¨t+h36yt(3)+h424yt(4)+𝒪(h5)==yt+hf(yt,t)+h22ddtf(yt,t)+h36d2dt2f(yt,t)+h424d3dt3f(yt,t)

получаваме система от изисквания за коефициентите:

{a+b+c+d=112b+12c+d=1214c+12d=1614d=124

която решена дава a=16,b=13,c=13,d=16.

Източници

Литература

Външни препратки

Шаблон:Numerical integrators

Шаблон:Превод от