Wstęp
Podstawowym problemem interpolacji jest to, że stara się przeprowadzić funkcję przez wszystkie dane, które posiadamy (węzły). Ma to sens tylko i wyłącznie wtedy, gdy dane są dokładne i niezaburzone. Gdy jest inaczej — powinniśmy myśleć o jakimś ich uśrednieniu.
Aproksymacja
Aproksymacja to taka metoda „przybliżania" danych, w której zadaną funkcję stara się tak poprowadzić, żeby była jak najbliżej posiadanych punktów.
Osobną kwestią jest ustalenie co to znaczy „jak najbliżej"? Jeżeli mamy zestaw danych pomiarowych (par)
Tak postawione zadanie jest bardzo trudne — minimalizacja polega na wybraniu funkcji takiej, żeby… Znacznie prościej jest rozwiązywać zadanie następujące. Niech
Jego rozwiązanie jest stosunkowo proste — wystarczy wyliczyć pochodne cząstkowe
Zadanie dalej się upraszcza gdy przyjąć, że funkcja
Aproksymacja a interpolacja
W przypadku zadania interpolacji żądamy, aby funkcja interpolująca przeszła przez wszystkie punkty (węzły interpolacyjne).
Poniżej przedstawiam zestaw punktów (pomiary temperatury termometrem IR).
Krzywe interpolacyjne mogą wyglądać tak jak na kolejnym rysunku. Czerwonymi kropkami zaznaczone są węzły interpolacji. Zwracam uwagę, że różnica między interpolacją Hermite’a a krzywymi sklejanymi nie jest specjalnie wielka. Niepokojąco natomiast wyglądają różnice pochodnych — pochodna interpolacji splajnami sześciennymi jest gładka.
Aproksymacja — Mathematica
Do realizacji aproksymacji wykorzystać można w Mathematici funkcję Fit. Jej wywołanie jest następujące:
Fit[data, funs, vars]
gdzie data to zestaw danych (par punktów), funs funkcja lub wektor funkcji którymi przybliżamy. Na przykład:
Powyższy zestaw jednomianów w różnych potęgach można łatwo wygenerować automatycznie:
i dalej:
W przypadku bardziej skomplikowanych zadań wykorzystać można również funkcje:
- FindFit (funkcja aproksymująca nie musi liniowo zależeć od parametrów),
- LinearModelFit (tylko dla modeli liniowych) i chyba najogólniejszą:
- NonlinearModelFit.
Na poniższej ilustracji przykład aproksymacji dobowych zmian temperatury z termometru IR wielomianami stopnia 12 (zielony) i 4 (niebieski)).
Jak widać — cały problem sprowadza się do wyboru odpowiedniej funkcji aproksymacyjnej.
Matlab
Możliwości matlaba w zakresie aproksymacji wydają się być mniejsze. Toolbox Curve Fitting zawiera funkcję o nazwie fit
i wywołaniu:
fit(x,y,fitType)
fitType
podać należy łańcuch znaków określający rodzaj aproksymacji. Możliwości opisuje dokumentacja. Są tam wielomiany do stopnia 9 i parę innych funkcji.
Najprostsze użycie (korzystające z dostarczonych z matlabem danych przykładowych) wyglądać może tak:
load census;
f=fit(cdate,pop,'poly2')
census
to jeden ze standardowych, przykładowych danych (w tym wypadku statystycznych) MATLABa zawierających informacje dotyczące liczby ludności USA w latach 1790–1990.
f =
Linear model Poly2:
f(x) = p1*x^2 + p2*x + p3
Coefficients (with 95% confidence bounds):
p1 = 0.006541 (0.006124, 0.006958)
p2 = -23.51 (-25.09, -21.93)
p3 = 2.113e+04 (1.964e+04, 2.262e+04)
Funkcja
plot(f,cdate,pop)

Aproksymacja a regresja
Wyobraźmy sobie, że mamy
zatem
Wzór ten przypomina nam znany ze statystyki wzór na średnią.
Nie od rzeczy będzie wspomnieć, że aproksymacja ma bardzo wiele wspólnego ze znaną ze statystyki regresją. W pewnym sensie jest to to samo (choć nie należy mówić tego głośno) — w przypadku regresji jest cała otoczka związana z probabilistyką (w szczególności zakłada się, że
W technice wykorzystuje się średnią do „polepszania" wyników pomiarów.
Zakładamy, że wartość
Podobne interpretacje można zaprezentować również dla innych zadań, w których stosujemy aproksymację.
Zadanie do wykonania
Wybrać jakiś przebieg dobowy i przybliżyć go za pomocą jakiejś sprytnej funkcji (która dobrze będzie oddawała istotę zmienności przebiegu.
Uwagi:
Dane otrzymane z pomiarów zawierają bardzo duże wartości współrzędnych
. Może to stanowić problem podczas aproksymacji. Stanowczo więc zalecam przesunięcie czasu do zera (to znaczy pierwszy pomiar dokonywany jest w chwili 0, a następne co 300 sekund). Można to osiągnąć tak:
Można też porównać otrzymane wyniki z wynikami aproksymacji tylko wartości ( przyjmuje wartości 1,2,…):Jeżeli chodzi o wybór funkcji — sugeruję zacząć od wielomianów. Teoretycznie, im wyższy stopień wielomianu — tym przybliżenie lepsze. Tylko nie wiadomo czy sensowniejsze. Ambitni mogą wymyślić jakąś funkcję nieliniową lub złożyć z kawałków (patrz tutorial).