Tilbake
7.2

7.2 Butcher-tabeller og ordensbetingelser

Les en Runge–Kutta-metode fra en Butcher-tabell (eller Python-kode) og verifiser ordenen rad for rad til én betingelse feiler.

60 min
12 oppgaver
Butcher-tabellerordensbetingelser
Din fremgang i kapitlet
0 / 12 oppgaver
Forkunnskaper: kap. 7.1 — hele kapitlet. Butcher-tabellen er ikke annet enn en kompakt måte å skrive ned nøyaktig de stigningstallene du allerede har regnet med.

Du trenger å kunne regne med brøker og doble summer. Ingen ny matematikk innføres her; det er organiseringen som er nytt.

Kapitlet er forutsetning for kap. 7.3, der en tabell får to bb-rader, og for kap. 7.4, der stabilitetsfunksjonen leses ut av den samme tabellen.

Én tabell, alle metodene

Du har nå regnet Euler, Heun og RK4 for hånd. Se på dem igjen:

Euler:k1=f(tn,yn),yn+1=yn+hk1,\text{Euler:}\quad k_1=f\left(t_n,y_n\right),\qquad y_{n+1}=y_n+h\,k_1,
Heun:k2=f(tn+h, yn+hk1),yn+1=yn+h2(k1+k2).\text{Heun:}\quad k_2=f\left(t_n+h,\ y_n+hk_1\right),\qquad y_{n+1}=y_n+\tfrac h2\left(k_1+k_2\right).

Alt som skiller dem, er tre sett tall: hvor langt ut i tid hvert stigningstall regnes, hvor mye av de foregående stigningstallene som brukes i yy-argumentet, og hvilke vekter de får til slutt.

Butcher-tabellen samler nøyaktig de tre tallsettene. Den ser slik ut:

cAb ⁣\begin{array}{c|c}\mathbf c & A\\ \hline & \mathbf b^{\!\top}\end{array}

Og når metoden er skrevet slik, blir et vanskelig spørsmål — «hvilken orden har denne metoden?» — til en mekanisk sjekkliste. Det er ordensbetingelsene, og de står på det utdelte formelarket.

Hverdagsbildet: tabellen er en oppskrift. c\mathbf c sier når du skal smake, AA sier hvor mye av hver tidligere smaksprøve som skal med i neste, og b\mathbf b sier hvordan alt til slutt blandes. To kokker med samme oppskrift lager samme rett — og oppskriften alene forteller deg hvor god retten blir.

Og det siste er det viktige: du trenger ikke kjøre metoden for å finne ordenen. Du leser den av tabellen.

Flashcard- og repetisjonsstoff — hopp trygt over ved førstegangslesing. Definisjonsboksene er samtidig kortene i flashcard-bunken. Tidsanslaget på 60 minutter gjelder kjernestoffet.

Løkke 1 — Å lese tabellen (~15 min)

Runge–Kutta-metode, generell form
En metode med ss steg (stigningstall):

ki=f(tn+cih, yn+hj=1saijkj),i=1,,s,k_i=f\left(t_n+c_ih,\ y_n+h\sum_{j=1}^{s}a_{ij}k_j\right),\qquad i=1,\dots,s,

yn+1=yn+hi=1sbiki.y_{n+1}=y_n+h\sum_{i=1}^{s}b_ik_i.

Les den nedenfra: sluttsvaret er yny_n pluss hh ganger en vektet sum av stigningstallene. Hvert stigningstall regnes i et eget punkt, forskjøvet cihc_ih i tid og hjaijkjh\sum_j a_{ij}k_j i verdi.

Tallet ss kalles stegtallet. Euler har s=1s=1, Heun s=2s=2, RK4 s=4s=4. Ikke forveksle det med ordenen pp — de er ulike, og forholdet mellom dem er tema i løkke 4.

Butcher-tabellen
Alle koeffisientene i én oppstilling:

cAb ⁣altsa˚c1a11a12a1sc2a21a22a2scsas1as2assb1b2bs\begin{array}{c|c}\mathbf c & A\\ \hline & \mathbf b^{\!\top}\end{array} \qquad\text{altså}\qquad \begin{array}{c|cccc} c_1 & a_{11} & a_{12} & \cdots & a_{1s}\\ c_2 & a_{21} & a_{22} & \cdots & a_{2s}\\ \vdots & \vdots & & & \vdots\\ c_s & a_{s1} & a_{s2} & \cdots & a_{ss}\\ \hline & b_1 & b_2 & \cdots & b_s \end{array}

Slik leser du den:

- Venstre kolonne (cic_i): tidsforskyvningen for stigningstall nummer ii.
- Blokken i midten (aija_{ij}): hvor mye av kjk_j som går inn i yy-argumentet til kik_i.
- Nederste rad (bib_i): sluttvektene.

Rad ii i tabellen hører til stigningstall nummer ii. Kolonne jj hører til kjk_j. Å bytte om rad og kolonne i AA er en dokumentert feilkilde.

Tabellformen må kunnes — den står som notasjon på det utdelte formelarket, men det er avlesningen som er ferdigheten.

Nodene cic_i
Tidsforskyvningene. Stigningstall nummer ii regnes i tidspunktet

tn+cih.t_n+c_ih.

Alltid er c1=0c_1=0 for en eksplisitt metode: det første stigningstallet regnes i startpunktet.

For RK4 er c=(0,12,12,1)\mathbf c=\left(0,\tfrac12,\tfrac12,1\right) — start, to på midten, og ett i sluttpunktet. Sammenlikn med hvordan du faktisk regnet i kap. 7.1: k2k_2 og k3k_3 ble regnet i tn+h2t_n+\tfrac h2. Det er nøyaktig det c\mathbf c forteller.

Vektene bib_i
Tallene i den nederste raden. De bestemmer hvordan stigningstallene blandes til slutt:

yn+1=yn+h(b1k1+b2k2++bsks).y_{n+1}=y_n+h\left(b_1k_1+b_2k_2+\dots+b_sk_s\right).

Kravet ibi=1\sum_i b_i=1 er den første ordensbetingelsen, og det er også en gratis kontroll på at du har skrevet av tabellen riktig. Er ff konstant, blir alle kik_i like, og da må yn+1=yn+hfy_{n+1}=y_n+h f — det tvinger fram bi=1\sum b_i=1.

Kontroller alltid vektsummen først. Er den ikke 1, har metoden ikke engang orden 1, og noe er galt med avskriften.

Koeffisientmatrisen AA
Tallene aija_{ij}, som sier hvor mye av kjk_j som brukes i argumentet til kik_i:

ki=f(tn+cih, yn+h(ai1k1+ai2k2++aisks)).k_i=f\left(t_n+c_ih,\ y_n+h\left(a_{i1}k_1+a_{i2}k_2+\dots+a_{is}k_s\right)\right).

For RK4 er

A=(000012000012000010).A=\begin{pmatrix}0&0&0&0\\ \tfrac12&0&0&0\\ 0&\tfrac12&0&0\\ 0&0&1&0\end{pmatrix}.

Les rad 3: a32=12a_{32}=\tfrac12 og resten null, altså k3=f(tn+h2, yn+h2k2)k_3=f\left(t_n+\tfrac h2,\ y_n+\tfrac h2 k_2\right) ✔ — akkurat slik du regnet i kap. 7.1.

Merk nullene over diagonalen. De er det som gjør metoden eksplisitt.

Eksplisitt kontra implisitt tabell
Eksplisitt metode: aij=0a_{ij}=0 for alle jij\ge i, altså strengt nedre triangulær AA (nuller på og over diagonalen).

Da kan k1k_1 regnes først, deretter k2k_2 (som bare bruker k1k_1), deretter k3k_3, og så videre — alt uten å løse noe.

Implisitt metode: minst ett tall på eller over diagonalen er ulik null. Da står kik_i på begge sider av sin egen definisjon, og du må løse en likning — akkurat som for bakover-Euler i kap. 7.1.

Bakover-Euler som Butcher-tabell:

111\begin{array}{c|c}1 & 1\\ \hline & 1\end{array}

Ett steg, med a11=1a_{11}=1 på diagonalen. Ett blikk på tabellen forteller deg altså om metoden er eksplisitt eller ikke — se etter tall på eller over diagonalen.

Radsum-betingelsen
For nesten alle brukbare metoder gjelder

ci=jaijfor hver i.c_i=\sum_{j}a_{ij}\qquad\text{for hver } i.

Hvorfor: stigningstallet kik_i skal svare til punktet tn+ciht_n+c_ih på løsningskurven, og da må yy-forskyvningen stemme med tidsforskyvningen til første orden.

Bruk den som avskriftskontroll. For RK4: rad 2 gir 12=12\tfrac12=\tfrac12 ✔, rad 3 gir 12=0+12\tfrac12=0+\tfrac12 ✔, rad 4 gir 1=0+0+11=0+0+1 ✔.

⚠ Men merk hva den IKKE er: radsum-betingelsen er nødvendig, ikke tilstrekkelig for høy orden. En tabell kan oppfylle den perfekt og likevel bare ha orden 2. Det er nøyaktig fella i eksempel 3 — så ikke bruk den som argument for at ordenen er høy.

✏️Butcher-tabellene for metodene du allerede kan

Skriv opp Butcher-tabellene for eksplisitt Euler, Heun og klassisk RK4, og les dem tilbake til formlene fra kap. 7.1.

Eksplisitt Euler. Ett steg, ingen forskyvning, vekt 1:

001\begin{array}{c|c}0 & 0\\ \hline & 1\end{array}

Les den: c1=0c_1=0 gir k1=f(tn,yn)k_1=f\left(t_n,y_n\right), og b1=1b_1=1 gir yn+1=yn+hk1y_{n+1}=y_n+hk_1 ✔.

Heun (forbedret Euler). To steg:

0001101212\begin{array}{c|cc}0 & 0 & 0\\ 1 & 1 & 0\\ \hline & \tfrac12 & \tfrac12\end{array}

Les den rad for rad:

- Rad 1: c1=0c_1=0, ingen aa-er k1=f(tn,yn)\Rightarrow k_1=f\left(t_n,y_n\right).
- Rad 2: c2=1c_2=1 og a21=1a_{21}=1 k2=f(tn+h, yn+hk1)\Rightarrow k_2=f\left(t_n+h,\ y_n+hk_1\right).
- Vektrad: yn+1=yn+h(12k1+12k2)=yn+h2(k1+k2)y_{n+1}=y_n+h\left(\tfrac12 k_1+\tfrac12 k_2\right)=y_n+\tfrac h2\left(k_1+k_2\right)

Klassisk RK4. Fire steg:

00000121200012012001001016131316\begin{array}{c|cccc} 0 & 0 & 0 & 0 & 0\\ \tfrac12 & \tfrac12 & 0 & 0 & 0\\ \tfrac12 & 0 & \tfrac12 & 0 & 0\\ 1 & 0 & 0 & 1 & 0\\ \hline & \tfrac16 & \tfrac13 & \tfrac13 & \tfrac16 \end{array}

Les den:

- Rad 2: k2=f(tn+h2, yn+h2k1)k_2=f\left(t_n+\tfrac h2,\ y_n+\tfrac h2 k_1\right)
- Rad 3: k3=f(tn+h2, yn+h2k2)k_3=f\left(t_n+\tfrac h2,\ y_n+\tfrac h2 k_2\right) ✔ — merk at det er k2k_2, ikke k1k_1, fordi ettallet står i kolonne 2.
- Rad 4: k4=f(tn+h, yn+hk3)k_4=f\left(t_n+h,\ y_n+hk_3\right)
- Vektrad: yn+1=yn+h(16k1+13k2+13k3+16k4)=yn+h6(k1+2k2+2k3+k4)y_{n+1}=y_n+h\left(\tfrac16k_1+\tfrac13k_2+\tfrac13k_3+\tfrac16k_4\right)=y_n+\tfrac h6\left(k_1+2k_2+2k_3+k_4\right)

Tre kontroller på alle tre tabellene:

1. Vektsummen er 1. Euler: 11. Heun: 12+12=1\tfrac12+\tfrac12=1. RK4: 16+13+13+16=1\tfrac16+\tfrac13+\tfrac13+\tfrac16=1
2. Radsummene stemmer med cic_i. RK4 rad 3: 0+12=12=c30+\tfrac12=\tfrac12=c_3
3. AA er strengt nedre triangulær, så alle tre er eksplisitte ✔

Poenget med eksempelet. Tabellen inneholder nøyaktig den samme informasjonen som formlene — hverken mer eller mindre. Har du en tabell, kan du regne et skritt; har du et skritt, kan du skrive tabellen. Det er den ferdigheten oppgavene tester.

📝Oppgave 1
(Innstegsoppgave — ren avlesning.) En metode er gitt ved Butcher-tabellen

0001212001\begin{array}{c|cc}0 & 0 & 0\\ \tfrac12 & \tfrac12 & 0\\ \hline & 0 & 1\end{array}

a) Skriv opp k1k_1 og k2k_2.
b) Skriv opp formelen for yn+1y_{n+1}.
c) Hva heter denne metoden?

📝Oppgave 2
M
Skriv opp Butcher-tabellen for metoden

k1=f(tn,yn),k2=f(tn+23h, yn+23hk1),yn+1=yn+h4(k1+3k2).k_1=f\left(t_n,y_n\right),\quad k_2=f\left(t_n+\tfrac23 h,\ y_n+\tfrac23 hk_1\right),\quad y_{n+1}=y_n+\frac h4\left(k_1+3k_2\right).

Kontroller vektsummen og radsummene.

Løkke 2 — Ordensbetingelsene (~16 min)

Nå til det tabellen egentlig er til for: å avgjøre ordenen uten å kjøre metoden.

Ordensbetingelsen for p=1p=1
ibi=1.\sum_{i}b_i=1.

Innhold: metoden må være konsistent — den må treffe eksakt når ff er konstant. Er summen ikke 1, har metoden ikke engang orden 1, og den konvergerer ikke i det hele tatt.

Dette er alltid det første du sjekker, og det tar tre sekunder.

Betingelsen står på det utdelte formelarket — tren oppslaget.

Ordensbetingelsen for p=2p=2
ibici=12.\sum_{i}b_ic_i=\frac12.

Innhold: metoden må fange den lineære endringen i ff riktig. Halvtallet kommer av at 0htdt=h22\int_0^h t\,dt=\tfrac{h^{2}}{2} — betingelsen er kvadraturbetingelsen for førstegradsledd.

Merk hvilke tall som ganges sammen: vekt ganger node, ledd for ledd, og så summeres. Det er den eneste operasjonen, og den gjentas i alle de høyere betingelsene med ulike potenser.

Betingelsen står på det utdelte formelarket — tren oppslaget.

Ordensbetingelsene for p=3p=3 — det er TO av dem
ibici2=13OGi,jbiaijcj=16.\sum_i b_ic_i^{2}=\frac13\qquad\text{OG}\qquad \sum_{i,j}b_ia_{ij}c_j=\frac16.

Begge må holde. Dette er det viktigste punktet i hele kapitlet, og det som skiller besvarelsene.

Den første er kvadraturbetingelsen for andregradsledd — den ligner de foregående og er lett å regne.

Den andre er ny i formen: den er en dobbelt sum over både ii og jj, og den involverer AA. Den fanger at ff også avhenger av yy, altså at stigningstallet endrer seg mens du beveger deg.

Slik regner du den doble summen for hånd. Gå gjennom hver rad ii med bi0b_i\ne 0, og for hver av dem gjennom hver kolonne jj med aij0a_{ij}\ne 0:

i,jbiaijcj=ibi(jaijcj).\sum_{i,j}b_ia_{ij}c_j=\sum_i b_i\left(\sum_j a_{ij}c_j\right).

For en eksplisitt trestegsmetode har den som regel bare ett eller to ledd ulik null.

Begge betingelsene står på det utdelte formelarket — tren oppslaget på å finne dem begge. At det er to, og ikke én, er det som må kunnes.

Ordensbetingelsene for p=4p=4 — det er FIRE
ibici3=14,i,jbiciaijcj=18,\sum_i b_ic_i^{3}=\frac14,\qquad \sum_{i,j}b_ic_ia_{ij}c_j=\frac18,
i,jbiaijcj2=112,i,j,kbiaijajkck=124.\sum_{i,j}b_ia_{ij}c_j^{2}=\frac{1}{12},\qquad \sum_{i,j,k}b_ia_{ij}a_{jk}c_k=\frac{1}{24}.

Alle fire må holde for at metoden skal ha orden 4.

Mønsteret i antallet: 1 betingelse for orden 1, 2 for orden 2 (den nye pluss den gamle), 4 for orden 3, 8 for orden 4. Antallet vokser raskt — det er derfor høyordens Runge–Kutta-metoder er vanskelige å konstruere.

Den siste betingelsen har en trippel sum. Den er sjelden nødvendig å regne for hånd på eksamen, for hvis metoden feiler tidligere, stopper du der. Men vet du at den finnes, unngår du å påstå orden 4 for tidlig.

Alle fire står på det utdelte formelarket — tren oppslaget.

Verifikasjonslogikken — rad for rad til én feiler
Prosedyren, i fem steg:

1. Sjekk bi=1\sum b_i=1. Feiler den, er ordenen 0 — metoden er ikke konsistent.
2. Sjekk bici=12\sum b_ic_i=\tfrac12. Feiler den, er ordenen 1.
3. Sjekk begge nivå-3-betingelsene. Feiler minst én, er ordenen 2.
4. Sjekk alle fire nivå-4-betingelsene. Feiler minst én, er ordenen 3.
5. Holder alt, er ordenen minst 4.

Regelen: ordenen er nivået under det første som feiler.

⚠ De to dødelige feilene:

- Å stoppe for tidlig. Går den første nivå-3-betingelsen gjennom, er du ikke ferdig med nivå 3. Du må sjekke den andre også.
- Å telle feil til slutt. Feiler en nivå-3-betingelse, er ordenen 2 — ikke 3.

Logikken må kunnes. Formelarket gir deg betingelsene, ikke prosedyren.

✏️Verifiser at klassisk RK4 har orden 4

Bruk Butcher-tabellen for RK4 fra eksempel 1 og sjekk alle åtte ordensbetingelsene.

Tabellen: c=(0,12,12,1)\mathbf c=\left(0,\tfrac12,\tfrac12,1\right), b=(16,13,13,16)\mathbf b=\left(\tfrac16,\tfrac13,\tfrac13,\tfrac16\right), og de eneste aija_{ij} ulik null er

a21=12,a32=12,a43=1.a_{21}=\tfrac12,\qquad a_{32}=\tfrac12,\qquad a_{43}=1.

Nivå 1.

bi=16+13+13+16=1+2+2+16=1.\sum b_i=\frac16+\frac13+\frac13+\frac16=\frac{1+2+2+1}{6}=1.\qquad ✔

Nivå 2.

bici=160+1312+1312+161=16+16=13+16.\sum b_ic_i=\frac16\cdot 0+\frac13\cdot\frac12+\frac13\cdot\frac12+\frac16\cdot 1=\frac16+\frac16=\frac13+\frac16.

Regn nøye: 1312=16\displaystyle \frac13\cdot\frac12=\frac16 (to ganger) og 161=16\displaystyle \frac16\cdot 1=\frac16, altså

bici=16+16+16=36=12.\sum b_ic_i=\frac16+\frac16+\frac16=\frac36=\frac12.\qquad ✔

Nivå 3, første betingelse.

bici2=1314+1314+161=112+112+16=1+1+212=412=13.\sum b_ic_i^{2}=\frac13\cdot\frac14+\frac13\cdot\frac14+\frac16\cdot 1=\frac{1}{12}+\frac{1}{12}+\frac16=\frac{1+1+2}{12}=\frac{4}{12}=\frac13.\qquad ✔

Nivå 3, andre betingelse. Gå rad for rad. Bare radene 2, 3 og 4 har aa-er ulik null:

- i=2i=2: b2a21c1=13120=0\displaystyle b_2a_{21}c_1=\frac13\cdot\frac12\cdot 0=0
- i=3i=3: b3a32c2=131212=112\displaystyle b_3a_{32}c_2=\frac13\cdot\frac12\cdot\frac12=\frac{1}{12}
- i=4i=4: b4a43c3=16112=112\displaystyle b_4a_{43}c_3=\frac16\cdot 1\cdot\frac12=\frac{1}{12}

biaijcj=0+112+112=16.\sum b_ia_{ij}c_j=0+\frac1{12}+\frac1{12}=\frac16.\qquad ✔

Metoden har minst orden 3. Videre til nivå 4.

Nivå 4, betingelse 1.

bici3=1318+1318+161=124+124+16=1+1+424=624=14.\sum b_ic_i^{3}=\frac13\cdot\frac18+\frac13\cdot\frac18+\frac16\cdot 1=\frac{1}{24}+\frac{1}{24}+\frac16=\frac{1+1+4}{24}=\frac{6}{24}=\frac14.\qquad ✔

Nivå 4, betingelse 2.

- i=3i=3: b3c3a32c2=13121212=124\displaystyle b_3c_3a_{32}c_2=\frac13\cdot\frac12\cdot\frac12\cdot\frac12=\frac{1}{24}
- i=4i=4: b4c4a43c3=161112=112\displaystyle b_4c_4a_{43}c_3=\frac16\cdot 1\cdot 1\cdot\frac12=\frac{1}{12}

=124+224=324=18.\sum=\frac{1}{24}+\frac{2}{24}=\frac{3}{24}=\frac18.\qquad ✔

Nivå 4, betingelse 3.

- i=3i=3: b3a32c22=131214=124\displaystyle b_3a_{32}c_2^{2}=\frac13\cdot\frac12\cdot\frac14=\frac{1}{24}
- i=4i=4: b4a43c32=16114=124\displaystyle b_4a_{43}c_3^{2}=\frac16\cdot 1\cdot\frac14=\frac{1}{24}

=224=112.\sum=\frac{2}{24}=\frac{1}{12}.\qquad ✔

Nivå 4, betingelse 4 (trippel sum). Det eneste leddet med tre ikke-null faktorer er i=4i=4, j=3j=3, k=2k=2:

b4a43a32c2=1611212=124.b_4a_{43}a_{32}c_2=\frac16\cdot 1\cdot\frac12\cdot\frac12=\frac{1}{24}.\qquad ✔

Alle åtte betingelsene holder.

Klassisk RK4 har orden 4.\boxed{\text{Klassisk RK4 har orden 4.}}

Merk hvor systematisk regningen er. Hver betingelse er en liten sum over de radene der bi0b_i\ne 0 og de kolonnene der aij0a_{ij}\ne 0. For en eksplisitt metode er det få ledd, og de fleste er null.

Tidsbruk på eksamen: en oppgave ber sjelden om alle åtte. Ber den om «bestem ordenen», stopper du ved den første som feiler — og for de fleste oppgavemetodene skjer det på nivå 3.

📝Oppgave 3
M
Bestem ordenen til Heuns metode fra eksempel 1:

0001101212\begin{array}{c|cc}0 & 0 & 0\\ 1 & 1 & 0\\ \hline & \tfrac12 & \tfrac12\end{array}

Sjekk betingelsene i tur og orden til én feiler.

📝Oppgave 4
M
En trestegs metode er gitt ved

000013130023023014034\begin{array}{c|ccc}0 & 0 & 0 & 0\\ \tfrac13 & \tfrac13 & 0 & 0\\ \tfrac23 & 0 & \tfrac23 & 0\\ \hline & \tfrac14 & 0 & \tfrac34\end{array}

Bestem ordenen ved å sjekke betingelsene i tur og orden.

— naturlig pausepunkt (~31 min brukt) —

Du kan lese tabellen og verifisere ordenen. De to siste løkkene er den formen sjangeren faktisk kommer i på de nyere settene: tabellen ligger gjemt i en Python-funksjon, og metoden ser ut som en kjent metode — men er det ikke.

Løkke 3 — Butcher-tabell fra Python-kode (~16 min)

De nyere settene presenterer ikke alltid tabellen. De gir deg koden, og lar deg lese den ut selv.

Å lese en Butcher-tabell ut av kode

En Runge–Kutta-implementasjon har alltid samme skjelett:

- Én linje per stigningstall, på formen k_i = f(t + c_i*h, y + h*(...)).
- Én sluttlinje return y + h*(...) med vektene.

Framgangsmåten, i tre steg:

1. Les cic_i fra tidsargumentet i hver f-kall. Står det t, er ci=0c_i=0; står det t + h/2, er ci=12c_i=\tfrac12.
2. Les aija_{ij} fra yy-argumentet. Tallet som ganges med k_j inne i parentesen etter h*, er aija_{ij}.
3. Les bib_i fra returlinja, etter at du har ganget faktoren utenfor parentesen inn.

⚠ Vær nøye med faktorer utenfor parentesen. Står det y + h*(k1 + 4*k2 + k3)/6, er vektene 16,46,16\tfrac16,\tfrac46,\tfrac16 — altså 16,23,16\tfrac16,\tfrac23,\tfrac16, ikke 1,4,11,4,1.

⚠ Og vær nøye med hvilket kk som står hvor. Det er nettopp der de innebygde feilene ligger.

Avlesningen må kunnes — den står ingen steder på formelarket.

Observert orden fra et numerisk eksperiment
En uavhengig kontroll av ordenen: kjør metoden med nn og 2n2n skritt over samme intervall, og se på forholdet mellom feilene.

e(h)e(h/2)2p.\frac{e(h)}{e(h/2)}\approx 2^{p}.

Observert forholdOrden
2\approx 21
4\approx 42
8\approx 83
16\approx 164

Bruken: har du regnet ordenen fra tabellen, er dette en helt uavhengig bekreftelse. Er de to uenige, har du regnefeil et sted.
Merk at forholdet nærmer seg 2p2^{p} nedenfra når hh minker — resultatet er asymptotisk. Ser du 4,214{,}21, 4,104{,}10, 4,054{,}05, er ordenen 2.
✏️Les tabellen fra koden — og finn den virkelige ordenen

En metode er gitt ved denne Python-funksjonen:

import numpy as np

def steg(f, t, y, h):
    k1 = f(t, y)
    k2 = f(t + h/2, y + h*0.5*k1)
    k3 = f(t + h,   y + h*(0.0*k1 + 1.0*k2))
    return y + h*(k1 + 4*k2 + k3)/6

a) Skriv opp Butcher-tabellen.
b) Bestem ordenen.
c) Metoden ser ut som en kjent tredjeordens metode. Hva er endret, og hva blir konsekvensen?

a) Avlesningen.

Nodene fra tidsargumentene: f(t, y) gir c1=0c_1=0; f(t + h/2, ...) gir c2=12c_2=\tfrac12; f(t + h, ...) gir c3=1c_3=1.

Koeffisientene fra yy-argumentene:

- k2: y + h*0.5*k1 gir a21=12a_{21}=\tfrac12.
- k3: y + h*(0.0*k1 + 1.0*k2) gir a31=0a_{31}=0 og a32=1a_{32}=1.

Vektene fra returlinja: h*(k1 + 4*k2 + k3)/6 gir b1=16b_1=\tfrac16, b2=46=23b_2=\tfrac46=\tfrac23, b3=16b_3=\tfrac16.

00001212001010162316\begin{array}{c|ccc}0 & 0 & 0 & 0\\ \tfrac12 & \tfrac12 & 0 & 0\\ 1 & 0 & 1 & 0\\ \hline & \tfrac16 & \tfrac23 & \tfrac16\end{array}

Kontroller: vektsum 16+23+16=1\tfrac16+\tfrac23+\tfrac16=1 ✔. Radsummer: 12=c2\tfrac12=c_2 ✔ og 0+1=1=c30+1=1=c_3 ✔. Strengt nedre triangulær ✔.

Alt ser riktig ut så langt. Det er nettopp det som gjør oppgaven vanskelig.

b) Ordenen.

Nivå 1: bi=1\sum b_i=1

Nivå 2:

bici=160+2312+161=13+16=12.\sum b_ic_i=\frac16\cdot 0+\frac23\cdot\frac12+\frac16\cdot 1=\frac13+\frac16=\frac12.\qquad ✔

Nivå 3, første betingelse:

bici2=2314+161=16+16=13.\sum b_ic_i^{2}=\frac23\cdot\frac14+\frac16\cdot 1=\frac16+\frac16=\frac13.\qquad ✔

Her ville en forhastet besvarelse stoppet og svart «orden 3». Men vi er ikke ferdige med nivå 3.

Nivå 3, andre betingelse:

- i=2i=2: b2a21c1=23120=0\displaystyle b_2a_{21}c_1=\frac23\cdot\frac12\cdot 0=0
- i=3i=3: b3a32c2=16112=112\displaystyle b_3a_{32}c_2=\frac16\cdot 1\cdot\frac12=\frac{1}{12}

biaijcj=0+112=112.\sum b_ia_{ij}c_j=0+\frac1{12}=\frac1{12}.

Kravet er 16=212\tfrac16=\tfrac2{12}, og

112212.\frac1{12}\ne\frac2{12}.\qquad ✘

Metoden har orden 2.\boxed{\text{Metoden har orden 2.}}

c) Hva er endret. Den klassiske Kuttas tredjeordens metode har samme c\mathbf c og samme b\mathbf b, men tredje rad i AA er

a31=1,a32=2a_{31}=-1,\qquad a_{32}=2

i stedet for 00 og 11. Legg merke til at begge tabellene har radsum 11 i rad 3 (1+2=1-1+2=1 og 0+1=10+1=1) — så radsum-kontrollen avslører ingenting.

Med de riktige tallene blir den andre nivå-3-betingelsen

b3(a31c1+a32c2)=16((1)0+212)=161=16,b_3\left(a_{31}c_1+a_{32}c_2\right)=\frac16\left((-1)\cdot 0+2\cdot\frac12\right)=\frac16\cdot 1=\frac16,\qquad ✔

altså riktig, og metoden har orden 3.

Konsekvensen i tall. Kjører vi begge metodene på y=t2yy'=t-2y, y(0)=1y(0)=1, fram til t=1t=1 (eksakt y(1)0,4191691y(1)\approx 0{,}4191691), får vi

nnFeil, koden overforholdFeil, Kuttas RK3forhold
101,251031{,}25\cdot 10^{-3}1,321041{,}32\cdot 10^{-4}
202,971042{,}97\cdot 10^{-4}4,214{,}211,531051{,}53\cdot 10^{-5}8,678{,}67
407,231057{,}23\cdot 10^{-5}4,104{,}101,831061{,}83\cdot 10^{-6}8,338{,}33
801,781051{,}78\cdot 10^{-5}4,054{,}052,251072{,}25\cdot 10^{-7}8,168{,}16

Forholdet 4 mot 8 bekrefter orden 2 mot orden 3, helt uavhengig av tabellregningen.
Lærdommen. Én oppføring i AA er endret, radsummen stemmer fortsatt, den første nivå-3-betingelsen holder fortsatt — og likevel har metoden mistet en hel orden. Det er derfor du må sjekke begge betingelsene på nivå 3, og det er nøyaktig denne fella sjangeren er bygd rundt.
📝Oppgave 5
M

Les Butcher-tabellen ut av denne funksjonen, og bestem ordenen:

def steg(f, t, y, h):
    k1 = f(t, y)
    k2 = f(t + h, y + h*k1)
    return y + h*(k1 + k2)/2

📝Oppgave 6
M

Samme oppgave for

def steg(f, t, y, h):
    k1 = f(t, y)
    k2 = f(t + h/3, y + h*k1/3)
    k3 = f(t + 2*h/3, y + 2*h*k2/3)
    return y + h*(k1 + 3*k3)/4

a) Skriv opp tabellen.
b) Bestem ordenen.

Løkke 4 — Stegtall mot orden, og en full eksamensoppgave (~13 min)

Stegtall ss mot orden pp
For eksplisitte Runge–Kutta-metoder gjelder alltid

ps.p\le s.

Du kan ikke få høyere orden enn antall stigningstall. Og for s5s\ge 5 blir det verre:

Stegtall ssHøyest mulige orden pp
11
22
33
44
54
65
76

Merk raden s=5s=5. Fem stigningstall gir ikke orden 5 — det er en kjent barriere. Det er nettopp derfor RK4 er så utbredt: den er den siste metoden der orden og stegtall er like, altså det siste «gratis» punktet før prisen stiger.
Bruken på eksamen: har en firestegs metode fire stigningstall, kan ordenen ikke være 5. Er du kommet til orden 4 og alle betingelsene holder, er du ferdig — du trenger ikke sjekke nivå 5.
Hvor mange betingelser er det?
OrdenAntall nye betingelserTotalt
111
212
324
448
5917

Antallet eksploderer. Det er derfor det finnes få praktiske metoder over orden 8, og det er også derfor formelarket stopper ved p=4p=4.
Praktisk konsekvens: på eksamen ser du aldri en verifikasjon over nivå 4. Metoden i oppgaven har typisk orden 2 eller 3, og hele poenget er at du finner den første betingelsen som feiler.
Hvorfor står det 12\tfrac12, 13\tfrac13, 16\tfrac16 på høyresidene?
Brøkene er ikke tilfeldige. De er momentene til integralet over ett skritt.

Betrakt det enkleste tilfellet, der ff bare avhenger av tt. Da er

y(tn+1)y(tn)=tntn+hf(t)dt,y\left(t_{n+1}\right)-y\left(t_n\right)=\int_{t_n}^{t_n+h}f(t)\,dt,

og metoden tilnærmer dette med hibif(tn+cih)h\sum_i b_if\left(t_n+c_ih\right) — altså en kvadraturformel med noder cic_i og vekter bib_i på intervallet [0,1][0,1].

Kravet om eksakthet for tmt^{m} gir

ibicim=01ξmdξ=1m+1.\sum_i b_ic_i^{m}=\int_0^1 \xi^{m}\,d\xi=\frac{1}{m+1}.

Der har du 11, 12\tfrac12, 13\tfrac13 og 14\tfrac14 — de er nøyaktig 1m+1\displaystyle \frac{1}{m+1} for m=0,1,2,3m=0,1,2,3.

Betingelsene som involverer AA har ingen slik enkel kvadraturtolkning; de kommer av at ff også avhenger av yy, og at stigningstallet derfor endrer seg underveis. Det er de betingelsene som er nye, og det er dem som feiler i oppgavemetodene.

Sammenhengen med kap. 6.2 er direkte: ordensbetingelsene av typen bicim\sum b_ic_i^{m} er presisjonsgrad-testen, flyttet til intervallet [0,1][0,1].

Kontrollrutine for en ordensoppgave

Seks sjekker, i rekkefølge:

1. Vektsum =1=1? Hvis ikke, er noe skrevet av feil.
2. Radsummer =ci=c_i? Avskriftskontroll — men ikke et argument for høy orden.
3. Er AA strengt nedre triangulær? Da er metoden eksplisitt.
4. Gå nivå for nivå, og skriv ut hver sum med tallene synlige.
5. Sjekk ALLE betingelsene på hvert nivå før du går videre.
6. Konkluder med nivået UNDER det første som feilet.

Skriv ut hver sum med tall. «bici2=2314+161=13\displaystyle \sum b_ic_i^{2}=\frac23\cdot\frac14+\frac16\cdot 1=\frac13 ✔» viser tenkemåten; «=13\displaystyle =\frac13 ✔» gjør det ikke.

✏️Eksamensnivå: full ordensanalyse fra kode

En kollega har implementert en ODE-løser:

import numpy as np

def steg(f, t, y, h):
    k1 = f(t, y)
    k2 = f(t + h/2, y + h*k1/2)
    k3 = f(t + h,   y + h*(2.0*k2 - k1))
    return y + h*(k1 + 4*k2 + k3)/6

a) Skriv opp Butcher-tabellen og kontroller den.
b) Bestem ordenen ved å sjekke betingelsene i tur og orden.
c) Beskriv et numerisk eksperiment som bekrefter svaret, og si hvilket resultat du forventer.

a) Avlesningen.

- k1 = f(t, y): c1=0c_1=0.
- k2 = f(t + h/2, y + h*k1/2): c2=12c_2=\tfrac12, a21=12a_{21}=\tfrac12.
- k3 = f(t + h, y + h*(2.0*k2 - k1)): c3=1c_3=1, og parentesen gir a31=1a_{31}=-1, a32=2a_{32}=2.
- Returlinja h*(k1 + 4*k2 + k3)/6: b1=16b_1=\tfrac16, b2=46=23b_2=\tfrac46=\tfrac23, b3=16b_3=\tfrac16.

00001212001120162316\begin{array}{c|ccc}0 & 0 & 0 & 0\\ \tfrac12 & \tfrac12 & 0 & 0\\ 1 & -1 & 2 & 0\\ \hline & \tfrac16 & \tfrac23 & \tfrac16\end{array}

Kontroller.

- Vektsum: 16+23+16=1+4+16=1\tfrac16+\tfrac23+\tfrac16=\tfrac{1+4+1}{6}=1
- Radsummer: rad 2: 12=c2\tfrac12=c_2 ✔. Rad 3: 1+2=1=c3-1+2=1=c_3
- Eksplisitt: AA er strengt nedre triangulær ✔

Merk det negative tallet a31=1a_{31}=-1. Negative koeffisienter er helt vanlige i Runge–Kutta-tabeller og er ikke et tegn på feil.

b) Ordenen.

Nivå 1: bi=1\sum b_i=1

Nivå 2:

bici=160+2312+161=13+16=12.\sum b_ic_i=\frac16\cdot 0+\frac23\cdot\frac12+\frac16\cdot 1=\frac13+\frac16=\frac12.\qquad ✔

Nivå 3, første betingelse:

bici2=2314+161=16+16=13.\sum b_ic_i^{2}=\frac23\cdot\frac14+\frac16\cdot 1=\frac16+\frac16=\frac13.\qquad ✔

Nivå 3, andre betingelse:

- i=2i=2: b2a21c1=23120=0\displaystyle b_2a_{21}c_1=\frac23\cdot\frac12\cdot 0=0
- i=3i=3: b3(a31c1+a32c2)=16((1)0+212)=161=16\displaystyle b_3\left(a_{31}c_1+a_{32}c_2\right)=\frac16\left((-1)\cdot 0+2\cdot\frac12\right)=\frac16\cdot 1=\frac16

biaijcj=0+16=16.\sum b_ia_{ij}c_j=0+\frac16=\frac16.\qquad ✔

Begge nivå-3-betingelsene holder — metoden har minst orden 3. Videre til nivå 4.

Nivå 4, første betingelse:

bici3=2318+161=112+16=1+212=14.\sum b_ic_i^{3}=\frac23\cdot\frac18+\frac16\cdot 1=\frac1{12}+\frac16=\frac{1+2}{12}=\frac14.\qquad ✔

Overraskende — den gikk gjennom. Vi må videre.

Nivå 4, andre betingelse:

- i=2i=2: b2c2a21c1=2312120=0\displaystyle b_2c_2a_{21}c_1=\frac23\cdot\frac12\cdot\frac12\cdot 0=0
- i=3i=3: b3c3(a31c1+a32c2)=1611=16\displaystyle b_3c_3\left(a_{31}c_1+a_{32}c_2\right)=\frac16\cdot 1\cdot 1=\frac16

biciaijcj=16.\sum b_ic_ia_{ij}c_j=\frac16.

Kravet er 18\tfrac18, og

160,16670,125=18.\frac16\approx 0{,}1667\ne 0{,}125=\frac18.\qquad ✘

Metoden har orden 3.\boxed{\text{Metoden har orden 3.}}

Dette er Kuttas tredjeordens metode, den korrekte utgaven av metoden i eksempel 3.

Merk at nivå 4 krevde to forsøk. Den første betingelsen på nivå 4 gikk gjennom — helt tilfeldig — og hadde vi stoppet der, ville vi påstått orden 4. Regelen om å sjekke alle betingelsene på hvert nivå gjelder også på nivå 4.

c) Numerisk eksperiment.

Oppsett: velg et problem med kjent løsning, for eksempel y=t2yy'=t-2y med y(0)=1y(0)=1, som har

y(t)=54e2t+t214,y(1)0,4191691.y(t)=\tfrac54 e^{-2t}+\tfrac t2-\tfrac14,\qquad y(1)\approx 0{,}4191691.

Kjør metoden fra t=0t=0 til t=1t=1 med n=10,20,40,80n=10,20,40,80 skritt, altså med hh halvert hver gang, og regn feilen yny(1)\left|y_n-y(1)\right|.

Forventet resultat: forholdet mellom to påfølgende feil skal nærme seg

2p=23=8.2^{p}=2^{3}=8.

Faktisk resultat når eksperimentet kjøres:

nnyny_nFeilForhold
100,41903670{,}41903671,321041{,}32\cdot 10^{-4}
200,41915380{,}41915381,531051{,}53\cdot 10^{-5}8,678{,}67
400,41916730{,}41916731,831061{,}83\cdot 10^{-6}8,338{,}33
800,41916890{,}41916892,251072{,}25\cdot 10^{-7}8,168{,}16

Forholdet nærmer seg 8 nedenfra ✔ — eksperimentet bekrefter orden 3, uavhengig av tabellregningen.
Hvorfor eksperimentet er verdt å beskrive. Ordensbetingelsene er lette å regne feil i, særlig de doble summene. Et eksperiment som gir forhold 8 når du har regnet deg fram til orden 3, er en sterk bekreftelse. Gir det 4 når du har regnet 3, vet du at du har en feil å lete etter.
Tidsbruk på eksamen: a) 5 min, b) 12 min, c) 5 min — omtrent 22 minutter for en oppgave på 10 poeng.
📝Oppgave 7
M
En tostegs metode har tabellen

000αα01ββ\begin{array}{c|cc}0 & 0 & 0\\ \alpha & \alpha & 0\\ \hline & 1-\beta & \beta\end{array}

med α0\alpha\ne 0.

a) Hvilken betingelse må α\alpha og β\beta oppfylle for at metoden skal ha orden 2?
b) Vis at ingen slik metode kan ha orden 3.
c) Hvilke kjente metoder svarer til α=1\alpha=1 og til α=12\alpha=\tfrac12?

📝Oppgave 8
M

En student har prøvd å implementere klassisk RK4, men et konvergenseksperiment viser forholdet 44 mellom feilene i stedet for 1616:

def steg(f, t, y, h):
    k1 = f(t, y)
    k2 = f(t + h/2, y + h*k1/2)
    k3 = f(t + h/2, y + h*k1/2)
    k4 = f(t + h,   y + h*k3)
    return y + h*(k1 + 2*k2 + 2*k3 + k4)/6

a) Skriv opp tabellen koden faktisk implementerer.
b) Finn linja med feilen, og forklar hvorfor symptomet blir en tapt orden.
c) Verifiser ordenen fra tabellen.

Repetisjonsoppgaver
Din fremgang
0 / 4 oppgaver
Symbol- og formelliste

Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.

Skolesaga er en uavhengig læringsressurs og er ikke tilknyttet eller godkjent av Norges teknisk-naturvitenskapelige universitet. Dette er ikke offisielt studiemateriell. Les mer.