Stronę tą wyświetlono już: 10341 razy
Opis matematyczny aproksymacji metodą najmniejszych kwadratów.
Niechaj istnieje taki zbiór punktów P1, P2, ..., Pm, dla których szukana jest funkcja w postaci wielomianu n-tego stopnia, gdzie n ≤ m-1. Punkty P1, P2, ..., Pm można zapisać w następującej postaci:
[1] |
sam zaś wielomian funkcji aproksymującej zadane punkty, będzie wyglądał w następujący sposób:
[2] |
co z kolei można w prostszy sposób zapisać:
[3] |
Zaprawdę powiadam wam, że można wyznaczyć współczynniki a0, a1, ..., an wielomianu fapr(x) układając następującą macierz:
[4] |
gdzie współczynniki kolumn od 0 do n przyjmują wartości według następującego wzoru:
[5] |
dla ostatniej kolumny zaś, wartości współczynników obliczyć z wzoru:
[6] |
Po wyliczeniu współczynników macierzy, należy niezwłocznie przejść do jej rozwiązania np. metodą Gaussa lub metodą Gaussa-Jordana.
Przykład rozwiązania
Niechaj podane będą następujące punkty: {1; 6}; {2; 8}; {4; 4}; {6; 2}; {8; 0}; {10; 2}. Wyznaczyć wielomian 2-giego stopnia aproksymujący te punkty.
Nie będzie wielkim rozwiązaniem tajemnicy, gdy stwierdzę, że konieczne jest utworzenie macierzy o rozmiarach n×n+1. Dla świętego spokoju rozpiszę tą macierz poniżej:
[7] |
Wyznaczenie współczynników o indeksach kolumn od 0 do 2 (czyli do n):
[8] |
[9] |
[10] |
[11] |
[12] |
[13] |
[14] |
[15] |
[16] |
Współczynniki ostatniej kolumny macierzy:
[17] |
[18] |
[19] |
Najwyższy czas poskładać do kupy macierz:
[20] |
Nie będę tutaj rozwiązywał tej macierzy, powiem tylko, że jej rozwiązanie daje w wyniku następujące wartości współczynników szukanego wielomianu:
[21] |
Funkcja fapr(x)=a0·x0+a1·x1+a2·x2=9,2196044712-1,7613069647·x+0,0963026655·x2 nie należy do najpiękniejszych, ale jak wynika z poniższego wykresu, działa ona bez zarzutu.
Wykres wygenerowany został w programie wxMaxima za pomocą następującego kodu:
I edytowany w programie Inkscape
A na co to komu?
Stosuje się do uzyskania wzoru w postaci prostej funkcji wielomianowej punktów uzyskanych w wyniku przeprowadzanych pomiarów.
Program Aproksymator.exe
Pewnego dnia obudziłem się z przemożną chęcią napisania programu, który po podaniu odpowiednich danych na wejście wypluje mi na powierzchnię ekranu funkcję aproksymującą zadane punkty wielomianem stopnia, który ja podałem. Toteż i zakasałem rękawy i zrobiłem taki właśnie mały programik o dźwięcznej nazwie Aproksymator.exe.
Pragnę nadmienić, że program ten rozwiązanie zapisuje do pliku tekstowego aproksymacja.txt, gdzie w perfidny (żeby nie powiedzieć, że przebiegły) sposób program zapisuje dane wejściowe, funkcję aporoksymującą oraz (jakby tego było mało) kod niezbędny do wygenerowania wykresu punktów i funkcji aproksymującej w programie wxMaxima.
Przykład, rozwiązania wygenerowanego przez mój program rozwiązania dla wcześniej rozwiązywanego zadania z najdzikszą wręcz rozkoszą zamieszczam poniżej:
Poniżej krótki filmik pokazujący działanie programu.