algorytm.org

Interpolacja Lagrange’a

Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Interpolacja Lagrange’a
Ocena użytkowników:***** / 52
SłabyŚwietny 
Wpisany przez Michał Ładanowski, 01 marca 2011 20:20

Jest to interpolacja za pomocą wielomianów (interpolacja wielomianowa) z tym, że zamiast rozwiązywać układ równań w celu znalezienia współczynników wielomianu jak to robiliśmy w tamtym przypadku korzystamy ze wzoru interpolacyjnego. Załóżmy więc, że znamy wartość funkcji w n miejscach:

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


Wówczas wartość funkcji w dowolnym punkcie x wyznaczymy ze wzoru:
L(x)=\sum_{i=1}^{n}{y_{i}l_{i}(x)}

gdzie:
x – to argument, dla którego chcemy znaleźć wartość funkcji
yi – wartość funkcji odpowiadająca argumentowi xi, czyli f(xi)

Wartość wpółczynników li, wyznacza się ze wzoru:
l_{i}(x)=\prod_{0<j\leq n, j\neq i}{\frac{x-x_{j}}{x_{i}-x_{j}}}=\frac{x-x_{1}}{x_{i}-x_{1}}...\frac{x-x_{i-1}}{x_{i}-x_{i-1}}\frac{x-x_{i+1}}{x_{i}-x_{i+1}}...\frac{x-x_{n}}{x_{i}-x_{n}}


Interpolacja za pomocą wielomianów jest jednoznaczna, zatem wyniki otrzymane interpolacją Lagrange'a będą identyczne jak wyniki potrzymane interpolacją wielomianową z rozwiązaniem układu równań.

Przykład:

Załóżmy, że znamy 3 wartości funkcji:
xi2310
f(xi)021


Chcemy wyznaczyć wartość funkcji w punkcie x = 5.
L(x) = y1l1(x) + y2l2(x) + y3l3(x)
L(x) = y1((x-x2)/(x1-x2))*((x-x3)/(x1-x3)) + y2((x-x1)/(x2-x1))*((x-x3)/(x2-x3)) + y3((x-x1)/(x3-x1))*((x-x2)/(x3-x2))
L(5) = 0*((5-3)/(2-3))*((5-10)/(2-10)) + 2*((5-2)/(3-2))*((5-10)/(3-10)) + 1*((5-2)/(10-2))*((5-3)/(10-3))
L(5) = 0*(2/-1)*(-5/-8) + 2*(3/1)*(-5/-7) + 1*(3/8)*(2/7)
L(5) = 0 + 4.2857 + 0.10714
L(5) = 4.39284

Implementacje
AutorJęzyk
programowania
KomentarzOtwórzPobierzOcena
Michał ŁadanowskiJava
.java
.java
***** / 14
 
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: 02 października 2012 17:29
Komentarze
photo
-2 # dziękowac 2012-04-15 12:01
dzięki wielkie
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-1 # Apollo 2012-11-23 11:43
Widziałem jeszcze wytłumaczenie tego zagadnienia z zastosowaniem macierzy do obliczania li. Ale ten artykuł bardzo mi się podoba. Lubię jak jest po prostu podany wzór, który jest rozwijany, a następnie podstawia się do niego wszystkie zmienne wejściowe.
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-1 # Robert9879 2015-03-14 22:59
A jak za pomocą tych wzorów wyznaczyć wzór wielomianu, jak to było zrobione w poprzednim przykładzie?
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-1 # Tomasz Lubiński 2015-09-10 14:10
Interpolacja za pomocą wielomianów jest jednoznaczna - czyli wyniki są takie same jak w przypadku interpolacji wielomianowej - czyli wielomian jest taki sam.

To jest sposób na obliczenie wartości w zadanym punkcie bez konieczności wyliczania wielomianu.
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz