Ik ben in het bezit van een rij waarden x en y. Nu moet ik een vergelijking opstellen voor een ellipsoide om zo via de kleinste kwadraten methode de ligging en de grootte van de ellips te bepalen. Hoe wordt dit opgelost mbv Matlab?Mark
30-6-2004
dag Mark,
Uit de losse pols zou ik het volgende willen voorstellen.
Ik ga er dan wel van uit, dat de gegeven punten min of meer gelijkmatig verdeeld zijn rond de hele ellips.
Verplaats eerst alle punten tot het centrum (zeg maar: het zwaartepunt, ofwel gemiddelde van alle punten) in de oorsprong ligt.
Bereken dan (met lineaire regressie) de richting van de lange as van de ellips.
Roteer vervolgens alle punten zodat de lange as langs de x-as komt te liggen.
Dan kun je gebruik maken van de algemene formule van de ellips: x2/a2 + y2/b2 = 1
ofwel: y2 = b2 - (b2/a2)·x2
Herschrijf dit tot
y2 = p + q·x2
Hierin zijn p = b2 en q = -b2/a2 de onbekenden.
Deze kun je berekenen met de kleinste kwadratenmethode.
In Matlab gaat dat als volgt:
Je hebt een (kolom)vector X van alle x-waarden en een (kolom)vector Y van alle bijbehorende y-waarden.
Maak hieruit de vector Y2 van alle kwadraten van y-waarden.
Maak een matrix C met in de eerste kolom alle waarden gelijk aan 1, en in de tweede kolom alle kwadraten van x-waarden.
Dan geldt:
= (C'*C)\C'*Y2
en met p en q kun je a en b weer achterhalen.
Daarna kun je de zaak weer terugroteren en transleren.
Maar nogmaals: dit is tamelijk intuïtief. Wellicht zijn er geavanceerdere technieken mogelijk.
groet,
Anneke
1-7-2004
#25926 - Lineair programmeren - Student universiteit