Interpolatie in meer dimensies
We zoeken een benadering van een gegeven functie en datapunten voor
We hebben eerder al gekeken naar interpolatie van functies met behulp van polynomen in het geval dat , waar de polynomen van graad waren. Als we precies punten hebben (dus ) kunnen we de coefficienten verkrijgen door een stelsel vergelijkingen op te lossen.
Als we dit willen uitbreiden naar hogere dimensies, moeten we geschikte basisfuncties vinden. Op basis van onze ervaring met lineaire interpolatie, kunnen we de interpolant in twee dimensies weergeven als
We noemen dit bilineaire interpolatie.
Er zijn echter ook nog andere mogelijkheden voor de basisfuncties. Een daarvan zijn de zogenaamde radiale basisfuncties
met
of
waarbij een te kiezen schalingsparameter is. Ook hier kunnen we een stelsel van vergelijkingen met onbekenden opstellen om de coefficiënten te vinden zodat .
Puntwolken
We kunnen de interpolatie ook gebruiken om oppervlakken in drie dimensies te construeren uit een puntwolk. We hebben in dat geval punten op het oppervlak een 3D lichaam. Zulke metingen komen vaak uit een laserscan. Om het oorspronkelijke lichaam te reconstrueren voor visualisatie gaan we als volgt te werk. Allereerst hebben op ieder punt ook de normaalvectoren nodig. We zoeken nu een functie zodat
waar een nader te kiezen parameter is, en definieren vervolgens het gereconstrueerde lichaam als de contour waar . We zoeken een functie van de vorm
waar een radiale basisfunctie is en voor de set punten voor is.
We kunnen nu een stelsel van vergelijkingen met onbekenden opstellen om de coefficienten te vinden.
Vragen voor het verslag
Basis
Voor een regelmatig rooster is kunnen we bilineare interpolatie zien als lineare interpolatie, toegepast in de twee richtingen. Geef in dit geval een uitdrukking voor de interpolatiefout en druk de interpolant uit in termen van Lagrange polynomen.
Breid voorgaande uit naar interpolatie van willekeurige graad in 2 dimensies.
Bekijk eens in 1D hoe de radiale basisfuncties het doen als je een gegeven functie wilt benaderen (test bijvoorbeeld op voor verschillende waarden van ). Gebruik in dat geval een regelmatig rooster van punten en stel een stelsel vergelijkingen op zodat , waar .
Test de precisie (voor welke orde polynoom de methode exact is) en orde (hoe snell de fout naar nul gaat als functie van ) van de interpolatie numeriek door de methode.
Beschrijf hoe de matrix eruit ziet en onderzoek de relevante eigenschappen als functie van .
Bespreek mogelijke voordelen van interpolatie met radiële basisfuncties ten opzichte van globale of stuksgewijs polynomiale interpolatie.
Extra
Test de methode uit in 2D op de bijgeleverde puntwolkendataset, probeer goede waarden voor de paramaters , te vinden
Zou je ook polynomen als basisfuncties kunnen gebruiken? Waarom wel of niet?
In de onderstaande code gaan we een bi-lineaire interpolant opstellen met steunpunten , , en en functiewaarden , , , . We doen dit door de coefficienten van het polynoom te bepalen.
In de onderstaande code gaan we een interpolant opstellen met behulp van radiale basisfuncties
Hieronder vind je code om een 2d puntwolken dataset in te lezen