StartAlgorytmyProcedury numeryczneInterpolacja wielomianowa
Baza Wiedzy
Wersja offline serwisu przeznaczona na urządzenia z systemem Android.

Darowizny
darowiznaWspomóż rozwój serwisu


Nagłówki RSS
Kanał artykuły
Kanał implementacje
Kanał komentarze
Kanał forum


Bookmarki









Sonda
Implementacji w jakim języku programowania poszukujesz?
 
Interpolacja wielomianowa
Ocena użytkowników:++++- / 7
SłabyŚwietny 
Wpisany przez Michał Ładanowski
poniedziałek, 28 lutego 2011 20:32
Gdy nasza znajomość funkcji ogranicza się do zbioru argumentów oraz odpowiadającego mu zbioru wartości to aby znaleźć wartości funkcji pomiędzy znanymi nam argumentami korzystamy z interpolacji. Szukanie wartości poza obszarem obejmującym zbiór argumentów nazywamy ekstrapolacją.

Innymi słowy nasza znajomość funkcji ogranicza się do postaci stabelaryzowanej:

x1x2...xn
f(x1)f(x2)...f(xn)

xi – węzły interpolacji
Cel: znalezienie wartości funkcji pomiędzy węzłami (interpolacja).

Jednym ze sposobów na osiągnięcie naszego celu jest interpolacja za pomocą wielomianów:
Nasza tabela wyznacza wielomian stopnia n-1:
an-1xn-1 + an-2xn-2 + ... + a1x + a0.

Czyli aby wyliczyć wartości funkcji pomiędzy węzłami potrzebujemy współczynników tego wielomianu, które łatwo otrzymamy podstawiając do wielomianu informacje z tabeli co stworzy nam układ równań, który zapisany w postaci macierzowej przyjmuje postać:

interpolacja wielomianowa - układ równań


Tak przygotowany układ można rozwiązać np. metodą eliminacji Gaussa.
Warto wspomnieć, że choć na ludzki rozum wydaję się, że im więcej węzłów tym lepiej, w rzeczywistości może prowadzić to jednak do znacznych wahań między węzłami – tzw. Oscylacje Rungego.

Przykład:
Załóżmy, że znamy 6 wartości funkcji:
xi2367810
f(xi)023512


Zatem będziemy obliczać układ 6 równań z 6 niewiadomymi.
a525 + a424 + a323 + a222 + a12 + a0 = 0
a535 + a434 + a333 + a232 + a13 + a0 = 2
a565 + a464 + a363 + a262 + a16 + a0 = 3
a575 + a474 + a373 + a272 + a17 + a0 = 5
a585 + a484 + a383 + a282 + a18 + a0 = 1
a5105 + a4104 + a3103 + a2102 + a110 + a0 = 2


Rozwiązaniem takiego układu są natępujące wartości:
a0 = -149.0000000000012
a1 = 178.68333333333408
a2 = -77.8583333333334
a3 = 15.566666666666668
a4 = -1.4416666666666667
a5 = 0.05


Zatem wielomian, z którego obliczać będziemy interpolowane wartości będzie miał postać:
0.05x5 + -1.4416666666666667x4 + 15.566666666666668x3 + -77.8583333333334x2 + 178.68333333333408x - 149.0000000000012

Poniżej przedstawiono wartości obliczonego wielomianu, oraz punkty na podstawie, których został on obliczony.
interpolacja wielomianowa - przykład



Autor Język programowania Komentarz Otwórz Pobierz Ocena
Michał Ładanowski Java
Implementacja w Java
Implementacja w Java
++++- / 3
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie



Poprawiony: wtorek, 21 czerwca 2011 17:47

Komentarze

 
photo
0 # ATMEL 2012-03-30 14:02
Rewelacyjny algorytm oraz bardzo zwięźle wytłumaczone.
Odpowiedz | Odpowiedz z cytatem | Cytować
 

Dodaj komentarz

Kod antysapmowy
Odśwież