Interpolation och kvadratur

Teknisk Beräkningsvetenskap I
Tema 4: Förbränningsstrategier för raketer
modellerade som begynnelsevärdesproblem
Del 1: Interpolation och kvadratur
Eddie Wadbro
2 december 2015
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(1 : 27)
Innehåll
I
Interpolation
I
I
I
Polynominterpolation
Splines
Kvadratur
I
I
Newton–Cotes kvadratur (mittpunkts, trapets och Simpsons formel)
Noggrannhet och feluppskattningar
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(2 : 27)
Interpolation
Vanlig uppgift: vi behöver skapa en
trevlig kurva som passerar ett antal
givna punkter (till exempel i datorgrafik)
◦
◦
◦
◦
◦
Interpolationsproblemet:
givet n + 1 par (xk , yk ), k = 0, 1, . . . , n, där xk 6= xl om k 6= l, hitta en
funktion f så att f (xk ) = yk
Funktionen f är en interpolant till punktmängden {(xk , yk )}nk=0
Ett klassiskt val: polynominterpolation
f (x) = a0 + a1 x + a2 x 2 + · · · + an x n
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(3 : 27)
Polynominterpolation
Polynomets koefficienter kan enkelt bestämmas om man skriver polynomet på
följande form:
p(x) = b0 + b1 (x − x0 ) + b2 (x − x0 )(x − x1 ) + . . .
+ bn (x − x0 )(x − x1 ) · · · (x − xn−1 )
Villkoren p(xk ) = yk , k = 0, . . . , n, ger Newtons interpolationformel:
y0 = b 0
y1 = b0 + b1 (x1 − x0 )
y2 = b0 + b1 (x2 − x0 ) + b2 (x2 − x0 )(x2 − x1 )
..
.
. . . + bn (xn − x0 ) · · · (xn − xn−1 )
yn = b 0 + . . .
Ett undertriangulärt linjärt ekvationssystem för koefficienterna b0 , . . . , bn .
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(4 : 27)
Polynominterpolation
Sats
Låt (xk , yk )nk=0 vara en godtycklig koordinatmängd, där alla xk är skilda.
Det finns ett entydligt polynom p av grad ≤ n så att
p(xk ) = yk
k = 0, . . . , n
Observera: Antalet koefficienter i polynomet = antalet punkter som ska
interpoleras.
I Matlab:
p = polyfit(x, y, n);
I
Vekotorerna x, y (längd n + 1) innehåller koordinaterna
I
n: polynomgrad
I
p: vektor med interpolationpolynomets koefficienter
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(5 : 27)
Interpolationsfel
Antag att vi till approximera funktionen f med en interpolant
n
on
Med hjälp av koordinaterna xk , f (xk )
skapar vi ett polynom p n
k=0
som interpolerar f i dessa punkter p n (xk ) = f (xk ), k = 0, 1, . . . , n
Minskar felet när n → ∞?
Ja: Om punkterna {xk } är “valda väl”.
Nej: För givna {xk } så kan felet växa utan gräns!
Sats (Weierstrass approximationssats)
Varje funktion f ∈ C (a, b) kan approximeras till varje önskad noggrannhet
med polynom
Bernsteinpolynom
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(6 : 27)
Polynominterpolation
Hur beter sig interpolanten?
Test: interpolera funktionen
f (x) =
1
1 + 25x 2
Den blå funktionen f interpoleras i n + 1 ∗ markerade punkter jämt
fördelade över x-axeln av det gröna pollynomet p av grad n
2
2
1.5
1.5
1
1
∗
0.5
0∗
−0.5
−1
∗
∗
−0.5
∗
0.5
∗
0
∗
0.5
∗
1
6 punkter n = 5
∗
∗ ∗
∗ ∗
∗ ∗
0∗ ∗
−0.5
−1
−0.5
0
0.5
1
11 punkter n = 10
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(7 : 27)
Polynominterpolation
Runges fenomen: Interpolation med polynom med jämt fördelade
punkter tenderar att generera en interpolant som visar oscilationer nära
interpolationsintervallets kanter. Dessa oscillationer blir kraftigare när
polynomgraden ökar
Slutsats:
I
Interpolation med polynom av hög grad är ofta en fruktansvärd ide!
I
Genererar ofta stora svängningar mellan interpolationspunkterna
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(8 : 27)
Polynominterpolation: Två möjliga lösningar
Lösning 1:
I
Flytta interpolationspunkterna så att de är mer koncentrerade nära
kanterna
I
Ett bra val: Chebychevpunkter
Lösning 2: (det vanligaste tillvägagångssättet!)
I
Skapa en funktion (spline) genom att sammanfoga polynom av låg
grad
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(9 : 27)
Lösning 1: interpolera i Chebyshevpunkterna
1
Om vi vill använda ett polynom av grad n
för att interpolera på intervallet [−1, 1], så
använd punkterna
xk = cos
kπ
,
n
0.5
0 ∗∗ ∗ ∗
k = 0, . . . , n
−1
1
1
0.5
0.5
∗
∗
∗
−0.5
∗
0
∗ ∗ ∗∗
0.5
1
∗
1
∗ ∗
∗
∗
∗
∗
0∗
−1 −0.5
0.5
∗∗
0
0.5
1
∗ ∗
0 ∗∗
−1 −0.5
6 punkter n = 5
∗
∗
∗ ∗ ∗∗
0
0.5
∗∗ ∗
0 ∗∗∗
∗
∗
∗∗
−1 −0.5
1
11 punkter n = 10
0
∗∗∗∗∗
0.5
1
21 punkter n = 20
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(10 : 27)
Lösning 2: splines
I
I
I
I de flesta fall kan vi inte välja våra
interpolationspunkter! Ex.: De kan vara
givna av mätningar gjorde med ett
instrument som generarar data i N Hz.
Den vanligaste interpolationsmetoden:
splines: styckvisa polynom av låg grad.
Lämpligare än polynominterpolation i de
flesta fall
Enklaste valet, en linjär spline är en
kontinuerlig, styckvis linjär interpolant
4
3
2
1
0
0
1
2
3
4
Definition: En spline är en funktion som består av styckvisa polynom av
grad m sådan att den är kontinuerligt deriverbar m − 1 gånger
Vanligaste valet, förutom linjära splines: kubiska splines (CAD-standard)
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(11 : 27)
Kubiska splines
I
I
I
Antag att vi har n + 1 talpar (xk , yk ),
k = 0, . . . , n, sorterade så att xi < xj
om i < j
Den globala funktionen s definieras
styckvis på intervallen [xk−1 , xk ],
k = 1, . . . , n
För k = 1, . . . , n, bestäm de n kubiska
funktionerna
(k)
(k)
(k)
(k)
sk (x) = a0 + a1 x + a2 x 2 + a3 x 3
4
3
s4(x)
2
s (x)
2
s1(x)
s3(x)
1
0
0
1
2
3
4
på intervallen [xk−1 , xk ]
I
Det finns 4n koefficienter
I
Vi behöver således 4n ekvationer (villkor) för att bestämma dessa
koefficienter
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(12 : 27)
Kubiska splines
4
I
Interpolering i ändpunkterna för varje
interval
(
sk (xk−1 ) = yk−1
k = 1, . . . , n
sk (xk ) = yk
s4(x)
2
s (x)
2
s1(x)
s3(x)
1
0
0
2n villkor
I
3
1
2
3
4
Kontinuerliga första och andra derivator där två kubiska polynom
sätts samman
(
0
sk0 (xk ) = sk+1
(xk )
i = 1, . . . , n − 1
00
00
sk (xk ) = sk+1 (xk )
2(n − 1) villkor
I
Totalt 2n + 2(n − 1) = 4n − 2 villkor. Ytterligare två villkor behövs!
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(13 : 27)
Kubiska splines
Det finns många val för de två sista villkoren:
I “Not-a-knot” spline. Default i Matlab’s spline.
Lägger till villkoret om att tredje derivatan i x1
och xn−1 är kontinuerlig (s1000 (x1 ) = s2000 (x1 ) och
000
sn−1
(xn−1 ) = sn000 (xn−1 )).
I “Naturlig spline”. Kräv att kurvans krökning är
noll i ändpunkterna
(s100 (x0 )
=
sn00 (xn )
= 0).
4
3
2
1
natural
prescribed slopes
gL = gR = 0
0
−1
I Påtvinga givna lutningar gL , gR vid
ändpunkterna (s10 (x0 ) = gL och sn0 (xn ) = gR ).
−2
0
not-a-knot
1
2
3
Observera att splines är “globala”: små förändringar (exempelvis villkoren vid
ändpunkterna) kan påverka funktionens utseende överallt!
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(14 : 27)
Numerisk integration (Kvadratur)
Kvadrator, också kallat numerisk integration, består i att numerisk
beräkna integralen
Z b
I (f ) =
f (x) dx,
a
där a, b ∈ R.
När behövs numerisk integration?
Z
Z
dx
2
Ex.:
e −x dx
ln x
Z p
1 + cos 2 xdx
Saknar primitiva funktioner (iallafall i form av elementära funtioner)
(Liouville, Liouville–Risch)
(En elementär funktion är en funktion som kan uttryckas med ändligt många
algebraiska operationer (+, -, *, /), konstanter, exponentialfunktionen,
sammansättningar av elementära funktioner, samt inverser till elementära funktioner.)
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(15 : 27)
4
Kvadratur
Ex.: Vi vill beräkna integralen
b
Z
I =
2
e −x dx
a
I
Eftersom integranden är “enkel” kan vi i Matlab definera den som
som anonym funktion och därefter approximera integralen
func = @(x) exp(-x.*x);
I = quad(func, a, b);
Variablen I kommer att innehålla en uppskattning av
Rb
a
2
e −x dx
I
Observera: Den funktion som använd i quad måste acceptera en
vektor som inargument och då returnera en vektor med motsvarande
funktionsvärden!
I
Om integranden är komplicerad, så är det oftast smidigare att istället
definiera den i en m-fil
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(16 : 27)
Grundiden bakom många kvadraturmetoder
Integraler av polynom kan beräknas exakt!
Approximera f (x) ≈ P(x), där polynomet P interpolerar f i punkterna.
Då
Z b
Z b
f (x)dx ≈
P(x)dx.
a
a
Den beräkningsbara integralen till höger approximerar den potentiellt
icke-beräkningsbara integralen till vänster
I
Hög noggrannhet kräver polynom av hög grad
I
Alternativt, dela upp intervalet [a, b] i många delintervall där
funktionen approximeras med polynom av låg grad!
(styckvis approximation)
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(17 : 27)
Newton–Cotes kvadratur
Approximera integranden med ett polynom P av grad N,
Z
b
Z
f (x)dx =
a
b
P(x)dx +
R
|{z}
a
rest term
(fel)
med trunkeringsfel
b
Z
(x − x0 )(x − x1 ) . . . (x − xN )
R=
a
f N+1 (ξ(x))
dx
(N + 1)!
Öppna Newton–Cotes metoder:
Inkludera intervalländpunkterna bland interpolationspunkterna
N = 1:
N = 2:
Trapetsformeln
Simpsons formel
Slutna Newton–Cotes metoder:
Intervalländpunkterna tas ej med bland interpolationspunkterna
N = 0:
Mittpunktsformeln
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(18 : 27)
Mittpunktsformeln
I
Dela intervallet [a, b] i n delintervall
(I illustrationen till höger är n = 6.)
I
I varje delinterval, approximera f med
dess värde i intervallmittpunkten
I
Summera rektanglarnas areor
x0
x1
x2
x3
x4
x5
x6
Detta ger oss att
n−1
X
b
Z
f (x)dx ≈
a
(xk+1 − xk )f
k=0
x + x
k
k+1
2
Om vi använder en ekvidistant uppdelning, xk+1 − xk = ∆x för alla k, så
Z
b
(∆x)
f (x)dx ≈ IM
a
(a, b) = ∆x
n−1
X
där
f (xk+1/2 ),
xk+1/2 =
k=0
xk + xk+1
2
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(19 : 27)
Trapetsformeln
I
Dela intervallet [a, b] i n delintervall
(I illustrationen till höger är n = 6.)
I
I varje delintervall approximera f med en
kontinuerlig, styckvis linjär funktion
I
Summera parallelltrapetsernas areor
x0
x1
x2
x3
x4
x5
x6
Detta ger oss att
b
Z
f (x)dx ≈
a
n−1
X
(xk+1 − xk )
k=0
f (xk ) + f (xk+1 )
2
Om vi använder en ekvidistant uppdelning, xk+1 − xk = ∆x för alla k, så
Z
a
b
(∆x)
f (x)dx ≈ IT
(a, b) =
∆x f (x0 )+2f (x1 )+2f (x2 )+. . .+2f (xn−1 )+f (xn )
2
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(20 : 27)
Simpsons formel
I
Dela intervallet [a, b] i N delintervall
(I illustrationen till höger är N = 3.)
I
I varje delintervall approximera f med en
kontinuerlig, styckvis kvadratisk funktion
I
Beräkna och summera integralerna av
interpolanten över varje delinterval
x0
x1
x2
x3
x4
x5
x6
Detta ger oss att
Z
b
f (x)dx ≈
a
N−1
X
(x2k+2 − x2k )
k=0
f (x2k ) + 4f (x2k+1 ) + f (x2k+2 )
6
Om vi använder en ekvidistant uppdelning, xk+1 − xk = ∆x för alla k, så
Z
a
b
(∆x)
f (x)dx ≈ IS
(a, b) =
∆x f (x0 ) + 4f (x1 ) + 2f (x2 ) + 4f (x3 ) . . .
3
+ 2f (xn−2 ) + 4f (xn−1 ) + f (xn )
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(21 : 27)
Noggrannhet:
Kvadraturfelet är ett diskretiseringsfel
Sats
För en två gånger kontinuerligt deriverbar f gäller
b
Z
a
b
Z
(∆x)
(a, b) +
∆x 2
(b − a)f 00 (ξ), för något ξ ∈ [a, b],
24
(∆x)
(a, b) −
∆x 2
(b − a)f 00 (ξ), för något ξ ∈ [a, b].
12
f (x) dx = IM
f (x) dx = IT
a
Fel: O(∆x 2 ): dessa metoder har ordning p = 2
För en fyra gånger kontinuerligt deriverbar f gäller
Z
a
b
(∆x)
f (x) dx = IS
∆x 4
(b − a)f (4) (ξ), för något ξ ∈ [a, b].
180
(a, b) −
Fel: O(∆x 4 ): metoden har ordning p = 4
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(22 : 27)
Feluppskattning
Informationen från satsen ovan kan användas för att uppskatta felet utan
att veta det exakta värdet på integralen!
b
∆x 2
(b − a)f 00 (ξ1 )
12
a
Z b
4∆x 2
(2∆x)
f (x) dx = IT
(a, b) −
(b − a)f 00 (ξ2 )
12
a
Z
(∆x)
f (x) dx = IT
(a, b) −
ξ1 ∈ [a, b]
(1)
ξ2 ∈ [a, b]
(2)
2
(∆x)
00
Antag att f 00 (ξ1 ) ≈ f 00 (ξ2 ) och låt ET
= − ∆x
12 (b − a)f (ξ1 ). Genom
att subtrahera uttryck (2) från uttryck (1) erhålls
(∆x)
ET∆x
=
IT
(2∆x)
(a, b) − IT
3
(a, b)
(“tredjedelsregeln” )
Alltså, genom att utföra två integralberäkningar med olika steglängd,
2∆x and ∆x, så kan vi uppskatta felet vid användning av steglängden ∆x
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(23 : 27)
Feluppskattning
En liknande analys av Simpons formel ger uppskattningen
(∆x)
ES∆x
=
IS
(2∆x)
(a, b) − IS
15
(a, b)
(“femtondelsregeln” )
Generellt, för en inegrationsformel med felterm O(∆x p ):
E ∆x =
I (∆x) (a, b) − I (2∆x) (a, b)
2p − 1
Dessa uppskattningar kan användas i en adaptiv process för att lokalt
förfina där det behövs eller i så kallade extrapolationsprocedurer
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(24 : 27)
Relation mellan trapetsformeln och Simpsons formel
(∆x)
IS
4 (∆x)
1 (2∆x)
(a, b) = IT (a, b) − IT
(a, b)
3
3
Richardsonextrapolation:
Diskretisering med steglängd h approximerar y (0) med y (h)
Antag att vi har en asymptotisk felutveckling
y (h) = y (0) + c1 hp1 + c2 hp2 + c3 hp3 + . . .
där p1 < p2 < p3 < . . .
Beräkna y (qh) och y (h) (vanligvis väljs q = 2). Då
y (h) =
y (qh) =
y (0) +
c1 hp1 + O(hp2 )
y (0) + c1 (qh)p1 + O(hp2 )
q p1 y (h) − y (qh) = (q p1 − 1)y (0)
+ O(hp2 )
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(25 : 27)
Adaptiv Simpson: en rekursiv algoritm
Vi vill ha
Z
a
b
f (x) dx − I (a, b) ≤ 0. Låt arbetsintervalet vara [a, b] och sätt ∆x = (b − a)/2
1. Beräkna IS∆x och IS2∆x på nuvarande arbetsinterval
2. Uppskatta felet med femtondelsregeln
längd
3. om det uppskattade felet > arbetsintervallets
b−a
I
I
I
(∆x)
Förkasta IS
Dela arbetsintervallet i två lika delinterval
För dessa fortsätt från punkt 1. med ∆x ← ∆x/2
Annars
I
I
(∆x)
Acceptera IS
Om det finns obehandlade delinterval, uppskatta integralen över
nästa, annar klar!
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(26 : 27)
Multipelintegraler
Z
f (x, y , z)dxdzdz →
Ω
X
wix wjy wkz f (xi , yj , zk )
i,j,k
Många funktionsevalueringar behövs (“the curse of dimensions”)
För väldigt många dimensioner kan behöva tillgå exempelvis Monte Carlo
metoder, statistiska uppskattningar
Eddie Wadbro, Tema 4: Interpolation och kvadratur, 2 december 2015
(27 : 27)