Interpolacija

3. Interpolacija#

Problem interpolacije pripada u širu klasu problema aproksimacije zadane funkcije.

Zadana je funkcija \(f : X \to \R\), gdje je \(X \subseteq \R\). Problem aproksimacije funkcije \(f\) se sastoji od pronalaženja nove funkcije \(\varphi : X \to \R\) tako da je \(\varphi \approx f\), u nekom smislu, na skupu \(X\).

Koja je motivacija za zamjenu \(f\) sa \(\varphi\)? Postoje dva bitno različita scenarija.

Scenario 1. Funkcija \(f\) je poznata na cijelom skupu \(X\), ali je vrlo zahtjevno računati \(f(x)\) za puno vrijednosti \(x \in X\). Želimo pronaći \(\varphi\) koji ćemo moći puno efikasnije računati.

  • Ovdje možemo sami odabirati točke \(x\) u kojima računamo \(f(x)\) i na temelju njih odrediti \(\varphi\).

  • Kada odredimo \(\varphi\) možemo ocijeniti grešku na cijelom \(X\) jer je funkcija \(f\) poznata na cijelom skupu \(X\).

Primjer 3.1

Numeričke biblioteke trebaju biti u stanju brzo računati funkcije poput \(\sin\), \(\cos\), \(\exp\), \(\log\) i slične. Sklopovi u računalima mogu izvršavati samo 4 osnovne računske operacije.

Stoga je za takve funkcije potrebno odrediti aproksimacije koje koriste samo osnovne računske operacije. Tipično, navedene funkcije se aproksimiraju racionalnim funkcijama (tj. kvocijentima dvaju polinoma). Za računanje racionalnih funkcija potrebne su samo operacije \(+, -, \cdot, /\).

Primjer 3.2

Računanje integrala \(\int_a^b f(x) dx\) nije moguće za proizvoljnu funkciju \(f\). No ako nađemo polinom \(\varphi\) koji dobro aproksimira funkciju \(f\) na segmentu \([a, b]\), onda će i \(\displaystyle \int_a^b f(x) dx \approx \int_a^b \varphi(x) dx\) biti dobra aproksimacija. Više o ovome o poglavlju u numeričkoj integraciji.

Scenario 2. Funkcija \(f\) nije poznata na cijelom skupu \(X\), nego u samo nekim točkama. Potrebno je pronaći funkciju \(\varphi\) koja pripada nekoj unaprijed poznatoj familiji funkcija (na primjer, polinomi zadanog stupnja) i koja dobro aproksimira \(f\) u točkama u kojima je \(f\) poznata.

Ovakva situacija je vrlo česta u primjenama u kojima su eksperimentalno izmjereni neki podaci. Zadatak je odrediti parametre u teorijskom, matematičkom modelu koji opisuju mjerenu fizikalnu veličinu tako da model što je moguće bolje odgovara izmjerenim podacima.

Primjer 3.3

Funkcija \(f\) opisuje ovisnost jedne fizikalne veličine (na primjer, temperature) o drugoj (na primjer, vrijeme). Dostupna su mjerenja funkcija \(f\) samo u nekim točkama: \(y_1 = f(x_1), \ldots, y_n = f(x_n)\), te je poznato (na primjer, iz matematičkog modela) da se \(f\) dobro aproksimirati funkcijom oblika \(\varphi(x) = a_1 \varphi_1(x) + \ldots + a_m \varphi_m(x)\), pri čemu su funkcije \(\varphi_j(x)\) unaprijed poznate (na primjer, \(\varphi_j(x) = x^j\)).

Potrebno je pronaći nepoznate parametre \(a_1, \ldots, a_m\) tako da pripadna \(\varphi\) bude najbolja aproksimacija za \(f\) među svim funkcijama zadanog oblika. Korištenjem funkcije \(\varphi\) tada možemo aproksimirati funkciju \(f\) i u točkama u kojima ju nismo izmjerili.

Vrlo sličnu situaciju imamo i kod neuronskih mreža. Zamislimo funkciju \(f\) koja, na primjer, preslikava bilo koju sliku u broj 1 ako je na slici mačka, a u broj 0 ako nije. Ne znamo kako bismo napisali formulu za funkciju \(f\), ali imamo jako puno slika \(x_1, \ldots, x_n\) za koje znamo vrijednosti \(y_j = f(x_j)\), tj. je li na njima mačka ili nije. Funkciju \(f\) aproksimiramo neuronskom mrežom \(\varphi\) koja (nelinearno) ovisi o vrlo mnogo parametara \(\alpha_1, \ldots, \alpha_m\) koje nazivamo težine neuronske mreže. Te težine određujemo s ciljem da vrijedi \(\varphi(x_j) \approx f(x_j)\) za zadane trening podatke \(x_1, \ldots, x_n\). Nakon toga, vrijednost funkcije \(f\) za bilo koju sliku \(x\) aproksimiramo sa \(f(x) \approx \varphi(x)\), tj. pomoću vrijednosti koju daje neuronska mreža nakon treniranja.

U ovom poglavlju se bavimo problemom opisanom u Scenariju 1. Problem iz Scenarija 2 obrađujemo u poglavlju Problem najmanjih kvadrata i u poglavlju Optimizacija.