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:
Wówczas wartość funkcji w dowolnym punkcie x wyznaczymy ze wzoru:
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:
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ń.
Załóżmy, że znamy 3 wartości funkcji:
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
x1 | x2 | ... | 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:
xi | 2 | 3 | 10 |
f(xi) | 0 | 2 | 1 |
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
Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
Michał Ładanowski | Java | .java | .java | ***** / 21 |
Poprawiony: 28 listopada 2019 13:37
To jest sposób na obliczenie wartości w zadanym punkcie bez konieczności wyliczania wielomianu.