Interpolacija z implicitnimi funkcijami

Interpolacija z implicitnimi funkcijami

Radialne bazne funkcije (RBF) so funkcije, katere vrednosti so odvisne od razdalje do izhodiščne točke $f(\vec{x}) = \varphi(\|\vec{x}-\vec{x}_0\|)$ Uporabljajo se za interpolacijo ali aproksimacijo s funkcijo oblike $\sum_i w_i\varphi(\|\vec{x}-\vec{x}_i\|),$ npr. za rekonstrukcijo 2D in 3D oblik v računalniški grafiki. Funkcija $\varphi$ je navadno pozitivna soda funkcija zvončaste oblike in jo imenujemo funkcija oblike.

Podan je 2D ali 3D oblak točk $\{\vec{x}_1, \ldots \vec{x}_n\}$ in realne vrednosti $\{f_1, \ldots, f_n\}$. Napiši funkcijo, ki interpolira omenjene podatke s funkcijo oblike

\[F(\vec{x}) = \sum_i w_i\varphi(\|\vec{x}-\vec{x}_i\|).\]

To pomeni, da poiščeš vrednosti uteži $w_i$ tako, da bodo izpolnjene enačbe $F(\vec{x_i}) = f_i.$

Napiši dve funkciji:

$F(\vec{x})\sum_i w_i\varphi(\|\vec{x}-\vec{x}_i\|)$ za argument x, pri čemer je w vektor uteži $w_i$, x0 pa oblak točk, podan kot matrika.

Funkciji uporabi za interpolacijo točk v ranvini z implicitno podano krivuljo, kot je opisano v

Danes bomo spoznali

  1. kako napisatni sistem enačb za praktičen primer
  2. primerno izbiro metode za reševanje
  3. implementacija v programskem jeziku in težave

Opis krivulj z implicitno interpolacijo

Iz množice točk želimo rekonstruirati krivuljo, ki gre skozi te točke. Krivulje v ravnini lahko opišemo na različne načine

  1. eksplicitno: $y=f(x)$
  2. parametrično: $(x,y) = (x(t),y(t))$
  3. implicitno z enačbo $F(x,y)=0$

Tokrat se bomo posvetili implicitni predstavitvi krivulje.

Problem

Imamo točke v ravnini s koordinatami $(x_1,y_1),(x_2,y_2),\ldots, (x_n,y_n)$. Iščemo krivuljo, ki gre skozi vse točke. Po možnosti naj bo krivulja gladka, poleg tega ni nujno, da do zaporedne točke v seznamu, tudi zaporedne točke na krivulji. Krivuljo iščemo v implicitni obliki, torej v obliki enačbe

\[F(x,y) = 0.\]

Iskano krivuljo bomo zapisali kot ničto nivojnico neke funkcije $F(x,y)$. Iščemo torej funkcijo $F(x,y)$, za katero velja

\[F(x_i,y_i) = 0\quad i\le n.\]

Ta pogoj žal ne zadošča. Dodamo moramo še nekaj točk, ki so znotraj območja omejenega s krivuljo. Označimo jih z $(x_{n+1},y_{n+1}),\ldots,(x_m,y_m)$, v katerih predpišemo vrednost $1$

\[F(x_i,y_i) = 1\quad i\ge n+1.\]

Naloga

Napiši program, ki za dane točke poišče interpolacijsko funkcijo oblike

\[F(\mathbf{x})=\sum_i d_i\phi(\mathbf{x}-\mathbf{x}_i)+P(\mathbf{x}),\]

kjer so

\[\phi(r)=\frac{1}{1+r^{2p}}\]

Časovna in prostorska zahtevnost

RBF s kompaktnim nosilcem

Matrika sistema, če uporabimo klasične RBF iz prejšnjega razdelka je polna. Čeprav je večina členov izven diagonale zelo majhnih npr. pri gaussovi RBF. Zato so [Morse et. all]@ref(Povezave) prišli na idejo, da uporabijo RBF s kompaktnim nosilcem. V tem primeru je matrika precej bolj redka in se tako prostorska kot tudi časovna zahtevnost algoritmov bistveno zmanjšata.

Povezave