Interpoleerimine

Interpoleerimine ehk interpolatsioon on arvutusmatemaatikas kasutatav meetod funktsiooni vahepealsete väärtuste hindamiseks ette antud diskreetsete väärtuste alusel. Inseneerias ja praktilistes teadustes kirjeldatakse süsteeme diskreetsete funktsioonide ja tabelitega, mis on saadud katsetulemuste põhjal. Erinevalt pidevatest funktsioonidest ei kirjelda aga diskreetsed funktsioonid kõiki võimalikke muutujate väärtusi ning tihti on vaja kahe diskreetse punkti vahele jäävat väärtust hinnata interpolatsiooni teel. Vahel kasutatakse interpolatsiooni ka keeruliste funktsioonide lihtsustamiseks, et vähendada arvutustele kuluvat aega ja ressursse. Sellisel juhul tuleb hinnata, kas lihtsustamisest saadav arvutusressursside kokkuhoid kaalub üles interpolatsioonist tekkiva vea. Lihtsaim viis interpolatsiooni idee kirjeldamiseks on teha seda näite varal. Seetõttu genereerime diskreetsete punktide kogumi: Lihtsaimaks interpoleerimise viisiks on lähima andmepunkti väärtuse valimine. Üldjuhul eelistatakse sellele meetodile lineaarset interpolatsiooni, sest lihtsates süsteemides on tolle rakendamine sama raskusastmega ning tunduvalt täpsem, kuid mitme muutujaga funktsioonides võib osutuda lähima naabri interpolatsioon kasulikuks oma lihtsuse ja kiiruse tõttu. Lähima naabri interpolatsioon leiab kõige rohkem kasutust pilditöötluses. Lineaarse interpoleerimise meetodi kasutamisel lähendatakse kahe andmepunkti vaheline funktsioon sirgega ning arvutatakse interpolant kasutades nende punktide koordinaate (x0,y0) ja (x1,y1): y = y 0 + x − x 0 x 1 − x 0 ( y 1 − y 0 ) {\displaystyle y=y_{0}+{\frac {x-x_{0}}{x_{1}-x_{0}}}\left(y_{1}-y_{0}\right)} Lineaarne interpoleerimine on kiire ja lihtne, kuid tihtipeale ei ole interpoleeritavate funktsioonide puhul tegemist lineaarsete sõltuvustega. See tähendab, et lineaarne interpolatsioon üle suurte vahekauguste ei pruugi olla piisavalt täpne. Nii konstrueeritud interpolandid ei ole diferentseeritavad nende üleminekukohtades. Polünoomse interpolatsiooni puhul võetakse arvesse kõiki teadaolevaid n andmepunkti ning tuletatakse nende alusel n-1 astme polünoom, mis neid kõiki läbib. Tuleb välja, et see polünoom on üheselt määratud. Sellisel viisil koostatud pidev funktsioon on igas oma punktis diferentseeritav ning on tõenäolisem, et saadav tulemus on täpsem. Antud juhul saaksime interpolandiks kuuenda astme polünoomi kujul: f ( x ) = − 0.0001521 x 6 − 0.003130 x 5 + 0.07321 x 4 − 0.3577 x 3 + 0.2255 x 2 + 0.9038 x . {\displaystyle f(x)=-0.0001521x^{6}-0.003130x^{5}+0.07321x^{4}-0.3577x^{3}+0.2255x^{2}+0.9038x.} Polünoomse interpolatsiooni suurimaks miinuseks on selle suur arvutuslik keerukus. Lisaks on täheldatud polünoomse interpolatsiooni puhul Runge fenomeni kus kõrgemate astmete polünoomid kalduvad võnkuma ning tekitavad lainelisi artefakte. Kuigi polünoom on diferentseeritav ning seetõttu saame me hinnata funktsiooni lokaalseid miinimume ja maksimume võivad need väärtused väljuda süsteemi teoreetilisest muutumispiirkonnast, mis võib omakorda tekitada probleeme väärtuste edasisel kasutamisel. Lisaks kõigele eelmainitule ei pruugi polünoomse interpolatsiooni kasutamisel kahe punkti vahelise kõvera kuju kokku sobida katsete käigus tuletatud teadmistega süsteemi omadustest. See käitumine on omakorda võimendatud Runge fenomeni poolt funktsiooni otspunktides. Seda käitumist on püütakse leevendada kasutades n-1 järku polünoomide asemel Splain-interpolatsiooni või Tšebõševi polünoome. Splain-interpolatsiooni puhul rakendatakse madalama astme polünoome igas vahemikus eraldi. Mida kõrgem on splaini sileduaste seda rohkem on võimalik vahemikku valitud polünoomi diferentseerida. Praktikas on väga levinud kuupslainid siledusastmega 2. See tähendab, et vahemikesse on valitud kuuppolünoomid, mida on võimalik diferentseerida vähemalt kaks korda. Antud juhul oleks näitefunktsiooni splain-interpolant järgmine: f ( x ) = { − 0.1522 x 3 + 0.9937 x , kui  x ∈ [ 0 , 1 ] , − 0.01258 x 3 − 0.4189 x 2 + 1.4126 x − 0.1396 , kui  x ∈ [ 1 , 2 ] , 0.1403 x 3 − 1.3359 x 2 + 3.2467 x − 1.3623 , kui  x ∈ [ 2 , 3 ] , 0.1579 x 3 − 1.4945 x 2 + 3.7225 x − 1.8381 , kui  x ∈ [ 3 , 4 ] , 0.05375 x 3 − 0.2450 x 2 − 1.2756 x + 4.8259 , kui  x ∈ [ 4 , 5 ] , − 0.1871 x 3 + 3.3673 x 2 − 19.3370 x + 34.9282 , kui  x ∈ [ 5 , 6 ] . {\displaystyle f(x)={\begin{cases}-0.1522x^{3}+0.9937x,&{\text{kui }}x\in [0,1],\\-0.01258x^{3}-0.4189x^{2}+1.4126x-0.1396,&{\text{kui }}x\in [1,2],\\0.1403x^{3}-1.3359x^{2}+3.2467x-1.3623,&{\text{kui }}x\in [2,3],\\0.1579x^{3}-1.4945x^{2}+3.7225x-1.8381,&{\text{kui }}x\in [3,4],\\0.05375x^{3}-0.2450x^{2}-1.2756x+4.8259,&{\text{kui }}x\in [4,5],\\-0.1871x^{3}+3.3673x^{2}-19.3370x+34.9282,&{\text{kui }}x\in [5,6].\end{cases}}} Sarnaselt polünoomse interpolatsiooniga on splain-interpolandi kuju palju loomulikum ja täpsem. Samas on madalama astme polünoome kergem kasutada arvutustes ning olenevalt polünoomide keerukusest on väiksem tõenäosus Runge fenomeni esinemiseks. Digitaalses signaalitöötluses teostatakse interpolatsiooni üldiselt signaali diskreetimissageduse tõstmiseks kasutades erinevaid filtreid ja konvolutsiooni. Igapäevaelus on võimalik interpolatsiooniga kokku puutuda piltide skaleerimisel, kus vahepealsete tundmatute pikslite värviväärtused arvutatakse naabruses olevate pikslite väärtuste põhjal. Janno, Jaan. "Interpoleerimine" (PDF). Vaadatud 18.04.2022. Kiisk, Valter. "Interpoleerimine". kodu.ut.ee. Vaadatud 18.04.2022. Käerdi, Helmo (2006). Arvutusmeetodid (2. trükk). Lk 7-8. "I – Nearest Neighbour Interpolation". Vaadatud 08.05.2022.