Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 2504 razy

Interpolacja polega na niczym innym jak na znalezieniu takiej funkcji f(x), która przechodzi przez zadane punkty interpolacyjne p1, p2, ..., pn. W tym przypadku zajmiemy się wyznaczaniem funkcji wielomianowej, która będzie przechodziła przez zadane punkty.

Wielomianem nazywamy funkcję, którą można zapisać ogólnym wzorem:

Równanie [1] [1]

Zapis wyrażenia w formacie TeX-a:

f(x)=a_1\cdot x^0+a_2\cdot x^1+...+a_n\cdot x^n

lub w postaci:

Równanie [2] [2]

Zapis wyrażenia w formacie TeX-a:

f(x)=\sum_{i=1}^{n}a_i\cdot x^{i-1}

Znając wcześniej już wspomniane punkty p1, p2, ..., pn można ułożyć n równań, w których jedynymi niewiadomymi są współczynnik a1, a2, ..., an. Układ takich równań będzie prezentował się więc następująco:

Równanie [3] [3]

Zapis wyrażenia w formacie TeX-a:

\begin{cases}y_1=a_1\cdot x_1^0+a_2\cdot x_1^1+...+a_n\cdot x_1^n \\ y_2=a_1\cdot x_2^0+a_2\cdot x_2^1+...+a_n\cdot x_2^n \\ \; \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\vdots \\y_n=a_1\cdot x_n^0+a_2\cdot x_n^1+...+a_n\cdot x_n^n\end{cases}

lub w postaci:

Równanie [4] [4]

Zapis wyrażenia w formacie TeX-a:

\begin{cases}y_1=\sum_{i=1}^n a_i\cdot x_1^{i-1} \\ y_2=\sum_{i=1}^n a_i\cdot x_2^{i-1} \\ \;\;\;\;\;\;\;\;\;\;\;\;\;\vdots \\ y_n=\sum_{i=1}^n a_i\cdot x_n^{i-1}\end{cases}

gdzie:

  • yk - współrzędna y punktu interpolacyjnego Pk
  • xk - współrzędna z punktu interpolacyjnego Pk

Rozwiążmy więc jakieś proste zadanie:

Dane są punkty interpolacyjne: P1={0; 100}; P2={2; 228}; P3={8; 1092}; P4={4; 564}. Wyznacz interpolację wielomianową tych punktów.

Rozwiązanie:

Naj sam przód trzeba nam zapisać układ równań:

Równanie [5] [5]

Zapis wyrażenia w formacie TeX-a:

\begin{cases}a_1\cdot x_1^0+a_2\cdot x_1^1+a_3\cdot x_1^2+a_1\cdot x_1^3=y_1 \\ a_1\cdot x_2^0+a_2\cdot x_2^1+a_3\cdot x_2^2+a_1\cdot x_2^3=y_2 \\ a_1\cdot x_3^0+a_2\cdot x_3^1+a_3\cdot x_3^2+a_1\cdot x_3^3=y_3 \\ a_1\cdot x_4^0+a_2\cdot x_4^1+a_3\cdot x_4^2+a_1\cdot x_4^3=y_4\end{cases}=\begin{cases}a_1=100 \\ a_1+a_2\cdot 2+a_3\cdot 2^2+a_4\cdot 2^3=228 \\ a_1+a_2\cdot 8+a_3\cdot 8^2+a_4\cdot 8^3=1092 \\ a_1+a_2\cdot 4+a_3\cdot 4^2+a_4\cdot 4^3=564\end{cases}

Tera robimy macierz:

Równanie [6] [6]

Zapis wyrażenia w formacie TeX-a:

\begin{bmatrix} 1 && 0 && 0 && 0 && 100 \\ 1 && 2 && 4 && 8 && 228 \\ 1 && 8 && 64 && 512 && 1092 \\ 1 && 4 && 16 && 64 && 564 \end{bmatrix}

a ponieważ tak się dziwnie składa, że kiedyś napisałem sobie mały konsolowy programik, który rozwiązuje układy równań metodą eliminacji Gaussa, wystarczy mu podać na wejście takie oto dane:

4 1 0 0 0 100 1 2 4 8 228 1 8 64 512 1092 1 4 16 64 564

Aby program w ramach rekompensaty wypluł na ekran rozwiązanie:

Przeliczanie macierzy do postaci macierzy jednostkowej: 1 0 0 0 100 1 2 4 8 228 1 8 64 512 1092 1 4 16 64 564 Etap 1: 1 0 0 0 100 1 2 4 8 228 1 8 64 512 1092 1 4 16 64 564 1 0 0 0 100 0 2 4 8 128 0 8 64 512 992 0 4 16 64 464 Etap 2: 1 0 0 0 100 0 1 2 4 64 0 8 64 512 992 0 4 16 64 464 1 0 0 0 100 0 1 2 4 64 0 0 48 480 480 0 0 8 48 208 Etap 3: 1 0 0 0 100 0 1 2 4 64 0 0 1 10 10 0 0 8 48 208 1 0 0 0 100 0 1 0 -16 44 0 0 1 10 10 0 0 0 -32 128 Etap 4: 1 0 0 0 100 0 1 0 -16 44 0 0 1 10 10 -0 -0 -0 1 -4 1 0 0 0 100 0 1 0 0 -20 0 0 1 0 50 -0 -0 -0 1 -4

Rozwiązanie naszego układu równań jest więc następujące:

Równanie [7] [7]

Zapis wyrażenia w formacie TeX-a:

\begin{cases} a_1=100 \\ a_2=-20 \\ a_3=50 \\ a_4=-4 \end{cases}

Szukana funkcja ma więc następującą postać:

Równanie [8] [8]

Zapis wyrażenia w formacie TeX-a:

f(x)=-4\cdot x^3+50\cdot x^2-20\cdot x+100

Na poniższym wykresie można sprawdzić czy nasza funkcja f(x) pokrywa się z punktami, które ma ona interpolować.

Interpolacja punktów020040060080010001200-10123456789f(x) = 4·x3 +50·x2 -20·x+100Punkty interpolowane
Rys. 1
Wykres funkcji f(x) interpolującej zadane punkty.
Źródło:
Wykres wygenerowany przez skrypt PHP autora strony opisany na stronie Programowanie → Skrypty PHP → Skrypt PHP generujący wykres funkcji 2W

Załączniki:

Napisany przeze mnie program RownaniaLiniowe
Layout wykonany przez autora strony, wszelkie prawa zastrzeżone. Jakiekolwiek użycie części lub całości grafik znajdujących się na tej stronie bez pisemnej zgody jej autora surowo zabronione.