mplCF03.tex, [Matlab: ../../matlabteht/mlCurveFit/mlCF15.tex]
Opettajalle: (a)-kohta sopii ensitutustumiseen.
(b)-kohta on sikäli huono, että virhetermin suuruusluokka on toisesta maailmasta
(opettavaista kylläkin, mutta alkajaisiksi vaatii ainakin varoituksen).
Lisää tehtävän opetuksia ratkaisutiedostoissa.
(a) Muodosta interpolaatiopolynomi pisteistölle, joka saadaan laskemalla funktion
cos(1 + x2) arvot tasavälisessä x-pisteistössä, jossa on 7 pistettä välillä
[0, 3].Piirrä samaan kuvaan funktio, datapisteet ja interpolaatiopolynomi.
(b) Arvioi (Lagrangen) interpolaatiokaavan virhetermin avulla interpolaatiovirheen
yläraja yo. välillä ja vertaa todelliseen.
Lause Olkoot x0,x1,…,xn erilliset pisteet ja f (n + 1) kertaa jatkuvasti derivoituva
funktio xk−pisteet sisältävällä välillä. Jos pn on (1-käs) dataan (xk,f(xk))
liittyvä interpolaatiopolynomi, niin
Vihje: Tässä on mahdollista harrastaa Maplen ja Matlabin yhteistyötä. Virhekaavan derivaatta
muodostetaan tietysti Maplella ja lauseke sievennetään. Itse asiassa piirtämällä ja poimimalla
kuvasta maksimipisteen koordinaatit, saadaan riittävän hyvä arvio.
Toinen mahdollisuus on käyttää Matlabin symbolic toolboxia.
Tulotermin voisi hoitaa tehokkaimmin Matlabissa ottamalla tiheän diskretoinnin ja käyttämällä
max-funktiota. Maplessakin on max-funktio, lakenta on Matlabissa tehokkaampaa.
Miten tulotermi lasketaan Matlabissa? Vaikka tähän tapaan:
1. x=linspace(....,N)
2. Tedään matriisi X, jossa x-vektoreita allekkain n+1 kpl.
3. Tehdään matriisi X0, jossa rivit
x0 x0 ... x0 N kpl.
x1 x1 ... x1 N kpl.
...
xn xn ... xn N kpl.
Nämä syntyvät vaikka meshgrid-komennolla tai ulkotuloilemalla ykköspystyvektorilla.
4. Vähennetään matriisit ja prod()). Sitten vain abs ja max kehiin.
Tosi Matlabmaista! (Ei moitita, vaikka tekisit for-loopin, vain 8 kertaa käydään, mutta hyvä
ymmärtää Matlabin hienoa matriisiajattelua, muistiahan ei nykyisin tarvitse säästellä.)
Avainsanat: Interpolaatio, käyrän sovitus, interpolaatiovirhe, Lagrange