Ellen®rz® kérdések
6. Interpolációs feladatok
6.9. Interpolációs feladatok megoldása a MATLAB-ban
Ha a fenti tétel segítségével szeretnénk a legkisebb négyzetek értelemben legjobban közelít®
legfeljebb k-adfokú (k≤n−1) polinomot megadni, akkor a következ® módon járhatunk el. Ve-gyük észre, hogy aPkhalmazon ahp, qi=pT(x)q(x)függvény skaláris szorzatot deniál. Ezzel a skaláris szorzattal a GramSchmidt-ortogonalizációval el®állítunk az1, x, . . . xk lineárisan függet-len polinomokból egy ortonormált bázist:q0, q1, . . . , qk, ahol az alsó index a polinom fokszámát jelöli. Ezután a legkisebb négyzetek értelemben legjobban közelít® polinom a
p(x) =
k
X
i=0
(qTi (x)f)qi(x) alakban írható.
6.8.6. példa. Keressük meg a(−1,1),(0,2),(1,2),(2,4)pontokhoz legjobban illeszked® leg-feljebb els®fokú polinomot az alappontokon ortonormált polinomok segítségével!
Az1ésxpolinomokat ortonormálva a megfelel® skaláris szorzatra nézve azt kapjuk, hogy q0(x) = 1/2 ésq1(x) = (x−1/2)/√
5. Innét p(x) =9
2 1 2 + 9
2√ 5
√1
5(x−1/2) = 9 10x+9
5.
Azxk= 2πk/(n+ 1) (k= 0, . . . , n) alappontokon az
1,sin(jx),cos(jx), (j= 1,2, . . .)
polinomok ortogonális rendszert alkotnak (6.10.15.feladat). Ezt a tényt felhasználva a legkisebb négyzetek értelemben legjobban közelít® legfeljebbk-adfokú trigonometrikus polinom hasonlóan határozható meg, mint a polinomok esetén. Eredményül azt kapjuk, hogy az alacsonyabb fok-számú négyzetösszeg értelemben legjobban közelít® trigonometrikus polinomokat az interpoláló trigonometrikus polinom megfelel® csonkolásaival állíthatjuk el®.
6.8.7. megjegyzés. Tegyük fel, hogy már meghatároztuk az adott pontokat legjobban közelít®
legfeljebb k-adfokú polinomot. Ekkor, ha a legfeljebb k+ 1 fokú hasonló polinomra vagyunk kiváncsiak, és a normálegyenlettel határoztuk meg a legfeljebb k-adfokú polinomot, akkor azt most újra fel kell írni, és meg kell oldani. Ha ellenben ortonormált polinomokat használtunk, akkor cak meg kell határozni a(k+ 1)-edik ortonormált polinomot, és ezt megfelel® együtthatóval hozzáadni a korábban kiszámoltk-adfokú polinomhoz.
6.9. Interpolációs feladatok megoldása a MATLAB-ban
A MATLAB-ban többek között az alábbi parancsokat használhatjuk interpolációs feladatok meg-oldására.
• z=polyfit(x,y,n): Az interpolációs pontokx-koordinátáit az x vektor, mígy-koordinátáit az ugyanolyan méret¶ y vektor tartalmazza. Az n érték az illesztend® polinom fokszámát adja meg. Ha nincs a feltételnek megfelel® polinom, akkor a legkisebb négyzetek értelmé-ben legjobban közelít® polinomot kapjuk vissza. Az interpolációs polinom együtthatói a z vektorba kerülnek a legmagasabb fokú taggal kezd®d®en.
• yi=polyval(z,xi): A z vektorral adott polinom értékét számolja ki a parancs az xi vek-torban meghatározott helyeken. A függvényértékek rendre az yi vekvek-torban jelennek meg.
• yi = interp1(x,y,xi,'módszer'): A parancs az x és y vektorok által meghatározott pon-tokra illeszt a 'módszer' eljárásnak megfelel®en egy interpolációs függvényt. Ezen függvény xi vektorban adott helyeken vett függvényértékeit tartalmazza az yi vektor. A 'módszer' lehet pl.
'linear': szakaszonként lineáris,
'spline': szakaszonként legfeljebb harmadfokú spline-interpoláció,
'cubic': szakaszonként legfeljebb harmadfokú polinom, mely monotonitástartó. Azaz monoton y értékek esetén az interpolációs függvény is ugyanolyan monotonitású, konstans értékek között a függvény is konstans (6.9.1.ábra).
• fft, ifft: gyors Fourier-transzformáció és inverzének parancsa.
6.9.1. ábra. A 'cubic', 'spline' és 'linear' interpoláció megvalósításának szemléltetése.
Lássunk most néhány példát a fenti parancsok alkalmazására!
>> x=[0,1,2,3], y=[0,1,4,9] % A pontok x- és y-koordinátáinak megadása.
x =
0 1 2 3
y =
6.10. Feladatok 189
0 1 4 9
>> z=polyfit(x,y,3) % Legfeljebb harmadfokú interpolációs polinom.
z =
0.0000 1.0000 0.0000 0.0000 % Ez az x^3 függvény.
>> yi=polyval(z,[0.3,0.6]) % A polinom helyettesítési értéke 0.3-nél
% és 0.6-nél.
yi =
0.0900 0.3600
>> yi=interp(x,y,[0.5,1.5],'linear'); % Szakaszonként lineáris
% interpolációs függvény 0.5-nél és 1.5-nél.
yi =
0.5000 2.5000
A MATLAB fft parancsa a komplex Fourier-együtthatókat határozza meg. Az alábbi prog-ram megadja a MATLAB által adott komplex együtthatókból a valós együtthatókat.
function dftvalos(n,fx) m=(n+1)/2;
h = 2*pi/(n+1); x=[0:h:2*pi*(n/(n+1))]; w=exp(i*h); %fx=eval(f);
X=fft(fx);
a=2*real(X(2:m+1))/(n+1);
b=-2*imag(X(2:m+1))/(n+1);
display('A valós diszkrét Fourier-együtthatók:') a0=X(1)/(n+1)
if mod(n,2) == 1 a(m)=a(2)/2;
a end b
A legkisebb négyzetek értelemben vett közelítéseket jól szemlélteti pl. a http://www.chem.
uoa.gr/applets/AppletPoly/Appl_Poly2.htmloldalon található alkalmazás.
6.10. Feladatok
Polinominterpoláció
6.10.1. feladat. Számítógép segítségével határozzuk meg az Z 1
0
e−x2dx
integrál értékét úgy, hogy a [0,1] intervallumot öt egyenl® részre osztjuk, meghatározzuk az in-terpolációs polinomot, és azt integráljuk az adott intervallumon! Az integrál "pontos" értéke 0.7468241330. Közelítsük aze−x2 függvény deriváltját az interpolációs polinom deriváltja segít-ségével azx= 0.5pontban! Hasonlítsuk össze az eredményt a pontos derivált értékével!
6.10.2. feladat. Asinxfüggvény értékeit ismerjük a[0, π]intervallumon akπ/6pontokban(k= 0,1,2,3,4,5,6). Illesszünk ezekre a pontokra egy interpolációs polinomot, és annak segítségével határozzuk meg sin 1 közelít® értékét! Becsüljük meg a számítás el®tt, hogy mekkora hibára számíthatunk!
6.10.3. feladat. Számítógép használata nélkül határozzuk meg a (−1,6),(0,3) és (1,2) pon-tokra illeszked® interpolációs polinomot a Lagrange- és Newton-módszerrel is!
6.10.4. feladat. Számítógép használata nélkül határozzuk meg azf(x) =√4
x+x−2függvény értékeit a 0.5, 80 és 25 pontokban a 0, 1, 16 és 81 pontokhoz tartozó interpolációs polinom segítségével!
6.10.5. feladat. Hogyan egyszer¶síthet® az interpolációs polinom meghatározása a Newton-módszerrel, ha az alappontok egyforma távol vannak egymástól? Határozzuk meg a módszerrel a (4,1), (6,3), (8,8) és (10,20) pontokhoz tartozó interpolációs polinomot!
6.10.6. feladat. Igazoljuk a6.2.7.tételt teljes indukció segítségével!
6.10.7. feladat. Számítógép nélkül határozzuk meg azt a legalacsonyabb fokú p polinomot, melyrep(1) = 2,p0(1) = 1,p(3) = 1ésp0(3) = 2!
6.10.8. feladat. Az el®z® feladat adatait módosítsuk úgy, hogy még ismert a p(2) = 2 és p0(2) = 1feltétel is! Mi lesz ekkor az interpolációs polinom?
6.10.9. feladat. Illesszünk szakaszonként harmadfokú spline-függvényt az (1,2), (2,1), (3,1) alappontokra!
6.10.10. feladat. Osszuk fel a[0, π] intervallumot három egyenl® hosszúságú intervallumra és tekintsük az osztópontokban a sinx függvény értékeit. Az így nyert pontokra illesszünk szaka-szonként harmadfokú spline-függvényt! Becsüljük meg az eredeti függvény és a spline-függvény maximális eltérését!
6.10.11. feladat. Adjuk meg, hogy hogyan egyszer¶södik a qk súlyok kiszámítása a baricent-rikus interpolációs formulánál abban az esetben, ha a Csebisev-alappontokat alkalmazzuk az interpolációra!
Trigonometrikus interpoláció
6.10.12. feladat. Tekintsük az f(x) = |x| függvényt, és válasszuk alappontoknak az xk = 2πk/(3 + 1)(k= 0, . . . ,3) pontokat. Határozzuk meg azf függvényt az alappontokon interpoláló legalacsonyabb fokszámú (kiegyensúlyozott) trigonometrikus polinomot számítógép alkalmazása nélkül!
6.10.13. feladat. Hogyan lehet a DFT-t felgyorsítani abban az esetben, ha az interpolációs alappontok száma nem kett®hatvány, hanem két egész szám szorzatakét áll el®?
6.10.14. feladat. Alkalmazzuk az el®z® feladatban konstruált FFT módszert a Fourier-együtthatók
6.10. Feladatok 191
el®állítására az alábbi alappontok esetén! Az FFT eljárást kézi számolással hajtsuk végre!
xk 0 2π/6 4π/6 6π/6 8π/6 10π/6
fk 0 1 1 0 −1 −1
Legkisebb négyzetek értelemben legjobb közelítések
6.10.15. feladat. Igazoljuk, hogy az1,cos(jx),sin(jx)(j= 1,2, . . .) függvények ortogonálisak azxk = 2πk/(n+ 1)(k= 0, . . . , n) alappontokon! Határozzuk meg ez alapján a trigonometrikus interpolációs polinom együtthatóit abban az esetben, hanpáros érték!
6.10.16. feladat. Határozzuk meg az alábbi pontokat legkisebb négyzetek értelemben legjobban közelít® legfeljebb els® és másodfokú polinomokat! (Oldjuk meg a feladatot a normálegyenlet felírásával ill. ortogonális polinomok használatával!) Oldjuk meg a feladatot ellen®rzésképpen a MATLAB polyfit parancsával is!
xk −1 0 1 2 4
fk 3 1 1 0 −1
Ellen®rz® kérdések
1. Adjuk meg a globális polinominterpoláció alapfeladatát! Mit mondhatunk az interpolációs polinom létezésér®l és unicitásáról?
2. Hogyan állíthatjuk el® az interpolációs polinomot Lagrange módszerével?
3. Deniáljuk az osztott-dierenciák fogalmát és adjuk meg tulajdonságaikat!
4. Hogyan állíthatjuk el® az interpolációs polinomot Newton módszerével?
5. Mit ad meg az interpolációs hiba és hogyan tudjuk megadni az értékét?
6. Mit szemléltet Runge példája?
7. Milyen extremális tulajdonságai vannak a Csebisev-polinomoknak?
8. Mit értünk HermiteFejér interpoláción? Hogy kell ezt az interpolációs polinomot megha-tározni?
9. Mit értünk spline-interpoláción?
10. Milyen tulajdonsággal rendelkeznek a szakaszonként legfeljebb harmadfokú spline-függvények?
11. Mit jelentenek a Fourier-szintézis és Fourier-analízis fogalmak?
12. Milyen eljárást nevezünk gyors Fourier-transzformációnak?
13. Hogyan határozhatunk adott alappontokat legkisebb négyzetek értelemben legjobban köze-lít® függvényeket? Hasonlítsuk össze a módszereket!