MC, 20:53 sobota, 16.10.2010 r.
Ilustracja do artykułu: GNUplot: część 6. - Regresja, aproksymacja, fitowanie wykresów

GNUplot: część 6. - Regresja, aproksymacja, fitowanie wykresów

Bardzo częstym przypadkiem jest sytuacja, w której uzyskane doświadczalnie dane należy aproksymować do jakiejś funkcji, czy to liniowej, czy wykładniczej, czy jakiejkolwiek innej. Postaram się pokazać w tej części poradnika, jak w prosty, przyjemny i szybki sposób zrobić to w GNUplocie.

Regresja, aproksymacja i fitowanie - czyli o tym jak przybliżyć uzyskane dane do jakiejś funkcji

Za aproksymację danych do zadanej funkcji służy polecenie fit, które ma następująca składnię:

fit równanie_funkcji "adres_pliku_z_danymi" via parametry_funkcji

Czyli przykładowe polecenie, którym chcielibyśmy wykonać regresję liniową, może wyglądać:

fit a*x+b "adres_pliku_z_danymi" via a,b;

Po wydaniu takiego polecenia, GNUplot wyliczy dla jakich parametrów a i b, zadane równanie prostej będzie najbardziej przybliżało dane zawarte w pliku (podane będą także niepewności z jakimi zostały obliczone te paramatry). Zostanie również wygenerowany plik fit.log, w którym zostaną dodatkowo zapisane wszystkie wyliczone dane. Warto wiedzieć, że parametry a i b stają się zmiennymi z przypisanymi wyliczonymi wartościami, dla tego w prostu sposób możemy ich użyć podczas rysowania wykresu aproksymacji.

W takim razie jeszcze jeden prosty przykład na to jak przybliżyć jakieś dane do funkcji kwadratowej oraz narysować te dane razem z wyliczoną aproksymacją

fit a*x**2+b*x+c "adres_pliku_z_danymi" via a,b,c;
plot "adres_pliku_z_danymi" title "Dane doswiadczalne", a*x**2+b*x+c title "Wykres funkcji aproksymującej dane";

Co w przypadku gdy fitowanie nie działa?

Zdarza się, że dane które próbujemy dofitować do jakiejś funkcji, wychodzą poza zakres domyślnych możliwości obliczeniowych GNUplota. Objawia się to tym, ze funkcja aproksymująca, zupełnie nie pasuje do wprowadzonych danych, a najczęściej w ogóle przebiega w złą stronę. Dzieje się tak w przypadku np. dane liczbowa są bardzo niskiego lub bardzo wysokiego rzędu wielkości. Co w takiej sytuacji?
Na szczęście jeszcze nie wszystko stracone. Możemy jeszcze po manipulować przy zmiennej środowiskowej GNUplota FIT_LIMIT. Rzecz w tym, że trzeba odpowiedni zmniejszyć jej wartość i zobaczyć, czy już dane zostały odpowiednio dofitowane. Osobiście proponuję wydać następujące polecenie przed fitowaniem:
FIT_LIMIT = 1e-15;
Jeżeli po takich ustawieniach nadal funkcja aproksymująca będzie nieodpowiednia, należy wartość tej zmiennej jeszcze zmniejszyć.

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: