Aproksymacja wielomianowa(?) (funkcji dyskretnej)- pomoc w zrozumieniu koncepcji

0

Witam :)
Próbuję napisać algorytm, który znajdzie dla współczynniki wielomianu tak, aby pasowała do pewnych danych. (Aby można było narysować ich wykres).

Na osi X mam datę pomiaru temperatury, a na osi Y mam wartość tej temperatury dla danej daty. Aby narysować ich wykres, to muszę wyznaczyć jakąś funkcję. Wybrałem wielomian jakiegoś rozsądnego stopnia (~10% z liczby punktów, które aproksymuję chyba będzie OK). Pozostaje dobrać współczynniki. I tutaj się zatrzymałem, no bo mogę wyznaczyć funkcję, która jest sumą odległości wartości funkcji aproksymującej od aproksymowanej w poszczególnych punktach (i ją zminimalizować, współczynniki tutaj byłyby zmiennymi decyzyjnymi). Jednakże wykładowca coś wspominał o rozwiązywaniu układu równań np. minimalizacją Gaussa, z którego miałyby wyjść dokładne współczynniki- tego nie rozumiem, skąd wziąć ten układ równań?

Czy może to olać i zastosować algorytm sympleks? Jak takie rzeczy się robi?

Aha, jeszcze jedno- skoro argumentami są daty (obiekty DateTime, piszę ten progs w C#), to muszę je zamienić na wartości liczbowe, proporcjonalne do odległości czasowych (poczynając od zera)?

0

Nie bardzo rozumiem pytanie. Masz równanie ogólne wielomianu n-tego stopnia. Znasz n punktów przez które chcesz żeby przechodził ten wielomian. Zapisujesz więc n równań, po jednym dla każdego z punktów. Rozwiązujesz uzyskany układ i uzyskujesz w ten sposób współczynniki dla twojego wielomianu.

Ale tak generalnie aproksymacja wielomianowa jakoś specjalnie dobra nie jest i ja bym jednak myślał o jakichś funkcjach sklejanych na przykład.

0

Przechodził to niekoniecznie, bo to już interpolacja chyba jest, a Pan Wykładowca sobie aproksymację zażyczył. :)

Ale tak jak piszesz- mam n punktów, które znam, i mam znaleźć funkcję, która będzie takim ich uśrednieniem.

Załączyłem przykładzik (wybaczcie Painta :) ).

D(xi) oznacza różnicę (odległość) między wartościami wielomianu aproksymującego, a punktami aproksymowanymi. Suma tych odległości powinna być jak najmniejsza.

0

Interpolacja jest szczególnym przypadkiem aproksymacji kiedy różnica w zadanych punktach wynosi 0 ;) A skoro wykładowca zasugerował że masz uzyskać "dokładne współczynniki" z układu równań to dość mocno sugeruje właśnie interpolowanie tego.

0

No tak, to też nam powiedział. Ale na tablicy narysował to w podobny do mojego sposobu, i wspomniał, że funkcja nie powinna przechodzić przez te punkty, bo pomiary też nie są w 100% dokładne, więc lepiej jest to przybliżyć. Kiedy dopytałem się go o ten temat na następnych zajęciach, to wspomniał właśnie o rozwiazaniu układu równań i się pogubiłem, no bo cały czas czytam o aproksymacji, a tam o równaniach zbyt wiele nie ma. Może jemu też się coś "pomyrdoliło". ;) No ale mniej więcej zaczynam wiedzieć, na czym stoję. :)

0

Dla wielomianu trzeciej potęgi ze współczynnikami V {a,b,c,d}:
Macierz A:
x13 x12 x11 x10
x23 x22 x21 x20
x33 x32 x31 x30
...
xn3 xn2 xn1 xn0
Kolumna Y:
y1
y2
y3
...
yn
Więc: Y=A*V.
Stąd: V=(ATA)-1*AT*Y

0

Dragon, teraz mi wszystko popsułeś, nie rozumiem. :)
Metoda najmniejszych kwadratów kojarzy mi się z minimalizacją tych odległości (kwadratów odległości), o których wspomniałem wcześniej. To o to chodzi? W tych równaniach co napisałeś... w którym miejscu ta metoda najmniejszych kwadratów jest zawarta?

Nie rozumiem jednej koncepcji- w jaki sposób, równania, dające jakieś dokładne wyniki, pomogą mi "uśrednić" wykres.
Skoro ułożę układ równań n (n - 1) równań, gdzie n to ilość aproksymowanych punktów, to znaczy, że mam wielomian n-tego stopnia i funkcja aproksymująca, będzie przechodzić przez te punkty, czyli będzie interpolacją.

Ja chcę użyć stopnia niższego (dużo niższego), niż ilość aproksymowanych punktów. Jak wtedy ułożyć równania, skoro współczynników do policzenia jest mniej niż punktów aproksymowanych?

Mam nadzieję, że nie chrzanię jakoś bardzo. :)

0

Tak, minimalizujesz kwadraty odległości.
Metoda najmniejszych kwadratów jest zawarta w jednym jedynym ostatnim równaniu (reszta to deklaracja zależności).
Nie musisz rozumieć, na tym polega metoda najmniejszych kwadratów.
Równań możesz dać tyle ile chcesz, grunt aby było ich co najmniej o jeden więcej niż stopień wielomianu może być nawet milion.
Powinieneś najpierw wyczytać różnicę pomiędzy aproksymacją a interpolacją.
Tak, nawet więcej niż bardzo.

0
_13th_Dragon napisał(a):

Metoda najmniejszych kwadratów jest zawarta w jednym jedynym ostatnim równaniu (reszta to deklaracja zależności).

Nie wiem, skąd to ostatnie równanie wyniknęło, przyznaje się bez bicia. Chwilowo przyjmę, że tak po prostu jest.

_13th_Dragon napisał(a):

Nie musisz rozumieć, na tym polega metoda najmniejszych kwadratów.

Nie rozumiem. :)

_13th_Dragon napisał(a):

Równań możesz dać tyle ile chcesz, grunt aby było ich co najmniej o jeden więcej niż stopień wielomianu może być nawet milion.

Tyle ile chcę, znaczy tyle, ile mam punktów? :)

_13th_Dragon napisał(a):

Powinieneś najpierw wyczytać różnicę pomiędzy aproksymacją a interpolacją.

Funkcja interpolująca przyjmuje w węzłach takie wartości jakie zadamy i jest szczególnym przypadkiem aproksymacji. Tak rzekł Shalom, Wikipedia i ktoś z forum matematycznego.
Coś jeszcze powinienem wiedzieć? Czy powyższe nie jest zgodne z prawdą?

Jeszcze trochę "bardzo pochrzanię". :)

Dotarło do mnie natomiast, że wielomian nie musi być stopnia równego ilości punktów, żeby ułożyć równania, nie wiem, dlaczego tak pomyślałem.

1

Na ile ja pamiętam matematykę interpolacja - to na podstawie istniejących danych szukanie nowych danych (pomiędzy istniejącymi lub dalej), za pomocą aproksymacji istniejących danych (dokładnie przechodzącej przez istniejące dane bądź niekoniecznie) z użyciem jakieś funkcji lub serii funkcji (czyli funkcji sklejanej).
Czasami Wikipedia bzdury chrzani, zajrzyj do wersji angielskiej tejże interpolacji, mimo że niby to samo, ale wyraźnie podane że interpolacje = szukanie nowych danych.

Tu masz opisane w miarę prosto: http://www.ekonometria.4me.pl/metoda-najmniejszych-kwadratow/
Właśnie zauważyłem że jest błąd na tej stronie, więc wyprowadzam wzór tu:
Y=A*V - nie możemy odwrócić A ponieważ nie jest kwadratowa, więc mnożymy obie strony przez AT
AT*Y=ATAV - zauważamy że AT*A - to macierz kwadratowa
AT*Y=(AT*A)*V - więc możemy ją odwrócić i przenieść na drugą stronę
(AT*A)-1*AT*Y=V - teraz tylko ładnie zapiszmy wymieniając miejscami strony
V=(AT*A)-1*AT*Y

0

Ok, myślę, że to powinno mi wystarczyć. Serdecznie ci dziękuję, Dragon. :)

0
_13th_Dragon napisał(a):

Na ile ja pamiętam matematykę interpolacja - to na podstawie istniejących danych szukanie nowych danych (pomiędzy istniejącymi lub dalej)
Ja bym się trochę przyczepił do tej frazy istniejącymi lub dalej Generalnie interpolacja to jest szukanie danych pomiędzy istniejącymi. Chodzi o to, że mamy jakieś dane w zakresie x <-1,100> to jeśli szukamy nowych wartości w tym przedziale to jest interpolacja, jeśli szukamy nowych wartości w przedziale <-inf,-1) lub (100,+inf> to się nazywa ekstrapolacja. Tak przynajmniej pamiętam ze studiów ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1