Interpolacja – poszukuje funkcji interpolacyjnej, która przyjmuje określone wartości w ustalonych punktach (węzłach)

Aproksymacja punktowa, regresja, dopasowanie krzywej - przybliżenie zbioru punktów funkcją ciągłą.

Interpolacja wielomianowa, dla węzłów budujemy wielomian stopnia

Dla dwóch punktów otrzymujemy równanie prostej

Dla przybliżenie parabolą, itd.

double lagrange(double x, double xw[], double yw[], int n) { double y = 0.0, l, m, xi; int i, j; for (i = 0; i <= n; i++) { l = 1.0; m = 1.0; xi = xw[i]; for (j = 0; j <= n; j++) { if (i == j) continue; l *= x - xw[j]; m *= xi - xw[j]; } y += yw[i] * l / m; } return y; }

Przykładowy program: lagrange.c

Pogarszanie się przybliżenia na krańcach przedziału dla wielomianów wysokiego stopnia

Wielomian interpolacyjny

Wartość może być wyznaczona efektywnie w sposób rekurencyjny

Wprowadźmy oznaczenia

Rozwiązanie przechodzące przez węzły daje

double newton(double x, double xw[], double yw[], int n) { double y, a[MAX]; int i, k; for (i = 0; i <= n; i++) a[i] = yw[i]; for (i = 1; i <= n; i++) for (k = i; k <= n; k++) a[k] = (a[k] - a[i-1]) / (xw[k] - xw[i-1]); y = a[n]; for (k = n-1; k >= 0; k--) y = y *(x-xw[k]) + a[k]; return y; }

Metoda Newtona ma 2 kroki:

wyznaczenie współczynników ,

wyznaczenie wartości wielomianu .

Umożliwia szybkie wyznaczenie kolejnych wartości dla tych samych węzłów.

Metoda Neville'a: modyfikacja metody Newtona, przyśpiesza wyznaczenie pojedynczej wartości bez zapamiętywania współczynników

Zależność rekurencyjna na wielomian stopnia przechodzący przez punktów

gdzie

Jeżeli tablica P[i] zawiera wartości w węzłach xw[i] to po wykonaniu algorytmu

for k in 1..n-1 for i in 0..n-k P[i] = ((x-xw[i+k])*P[i] - (x-xw[i])*P[i+1]) / (xw[i]-xw[i+k])

wartość interpolowana dla puntu x zawarta będzie w P[0]

Ciepło właściwe aluminium zależy od temperatury w nastepujący sosób:

−250	−200	−100	0	100	300
16.3	318	699	870	941	1040

Napisz program, który za pomocą metody Neville'a wyznaczy wartość ciepła właściwego dla dowolnej (podanej przez użytkownika) wartości temperatury w zakresie od do .

Ćw. 1

Oblicz analitycznie wartość za pomocą wzoru interpolacyjnego Lagrange'a dla funkcji i węzłów interpolacyjnych . Napisz program, który korzystając z tych węzłów pozwoli wyznaczyć wartość dla z zakresu od 100 do 144. Porównaj wynik z wartością dokładną wyznaczoną za pomocą funkcji sqrt() i wyznacz błąd względny.