Wpis z mikrobloga

#programowanie

Chcę napisać mały programik który na podstawie podanych punktów wygeneruje funkcję przechodzącą możliwie blisko nich. Coś jak linia trendu w excelu. Jakieś sugestie jak to ugryźć?
  • 21
  • Odpowiedz
@nvll: @Luxik: @rss: C#/Python/C++ w takim stopniu że zaimplementowanie nie będzie raczej problemem, nie mam tylko pomysłu jak się za to zabrać. Punktów jest wiele i niekonieczne układają się równo w ładną funkcję, chcę wygenerować funkcję która pokaże ogólny trend. Tak jak to http://imgur.com/ov8h02t

Kwadraciki to podane punkty a linia pokazuje ogólny trend
  • Odpowiedz
@Quavitor: Jest kilka możliwości poprowadzenia takiej linii, zobacz jak robią to programy do tworzenia wykresów i analizy danych statystycznych. Na pewno Plot na Maca posiada taką funkcję i tam można stworzyć taką funkcję na bodaj trzy sposoby (tzn. uzyskać trzy różne funkcje "przechodzącą możliwie blisko nic").
  • Odpowiedz
@Quavitor: Po tym co napisał @rss nie jestem pewien czy dobrze zrozumiałem o co Ci chodzi. Chcesz funkcję liniową, która odpowiada trendowi czy dowolną funkcję, która będzie przyjmowała wartości jak najbardziej zbliżone do wprowadzonych danych empirycznych?
  • Odpowiedz
@Quavitor: Regresja liniowa to najprostsza metoda. Jednak jeżeli ta funkcja jest np. podobna do wykładniczej, to może lepiej inna metodę wykorzystać? Już niestety nie pamiętam jak to się nazywało :(
  • Odpowiedz
@Quavitor: Kiedyś dla zabawy z algorytmami ewolucyjnymi wymyśliłem sobie program, który dla namazianej myszką linii szukał najlepszego wielomianowego przybliżenia. Jeśli chcesz pobawić się w algorytmy genetyczne lub inną optymalizację opartą o metody sztucznej inteligencji to jest to całkiem ciekawy problem.
  • Odpowiedz
@echelon_: jeśli masz n+1 punktów (i żadna para punktów nie ma takiego samego x i róznych y), to istnieje wielomian stopnia n który przejdzie przez każdy z nich. Suma minimalnych odległości krzywej od punktów = 0 i tego się nie da przebić :) Więc owszem - interpolacja a nie aproksymacja.

Inna sprawa, że taki wielomian nie będzie wyglądał "naturalnie" - będzie pofalowany między punktami przez które ma przejść. No i
  • Odpowiedz