Metody Numeryczne Laboratorium 9 Interpolacja wielomianowa Zadanie
Dla danego zbioru punktów pomiarowych
{(−1, 3), (0, 0), (1, 3), (2, 0)}
prosz¸e skonstruować wielomian interpolacyjny (a) w bazie pot¸egowej;
(b) w bazie Lagrange;
(c) w bazie Newtona.
Prosz¸e pokazać r¸ecznie i za pomoc¸a programów vandermonde.m,lagrange.m i divdifrence.m oraz instrukcji wewn¸etrznej OCTAVE polyfit, że te trzy reprezentacje baz daj¸a ten sam wielomian interpolacyjny.
Rozwi¸azanie
a. Przypomnijmy co to jest baza pot¸egowa.
Bazę pot¸egow¸a tworz¸a jednomiany
{t0, t1, t2, . . . , tn}
Znajdujemy wielomian interpoluj¸acy w tej bazie
w(t) = c0t0+ c1t1+ c2t2+ c3t3
Z warunków interpolacji
w(tj) = f (xj) dla 0 ≤ j ≤ 3
otrzymujemy nast¸epuj¸acy układ równań na nieznane współczynniki ci, 0 ≤ i ≤ 3:
c0(−1)0+ c1(−1)1 + c2(−1)2+ c3(−1)3 = 3 c0(0)0 + c101+ c2(0)2+ c3(0)3 = 0 c0(1)0 + c111+ c2(1)2+ c3(1)3 = 3 c0(2)0 + c121+ c2(2)2+ c3(2)3 = 0 Postać macierzowa tego układu
1
1 −1 1 −1
1 0 0 0
1 1 1 1
1 2 4 8
c0 c1 c2 c3
=
3 0 3 0
Do rozwi¸azania tego układu o macierzy Vandermonde V piszemy prosty skrypt OCTAVE o nazwie vandermonde.m
» diary on
» V = [1 − 1 1 − 1; 1 0 0 0; 1 1 1 1; 1 2 4 8];
» y = [3 0 3 0];
» c = V \(y)0 c =
0 2 3 -2
» diary off St¸ad
w3(x) = 0 + 2x + 3x2− 2x3
jest poszukiwanym wielomianem interpolacyjnym w bazie pot¸egowej.
b. Skonstrujemy teraz baz¸e Lagrange Baz¸e Lagrange tworz¸a wielomiany postaci
lj(x) = (x − x0)(x − x1) . . . (x − xj−1)(x − xj+1) . . . (x − xn) (xj − x0)(xj− x1) . . . (xj − xj−1)(xj − xj+1) . . . (xj− xn). Zauważmy że każdy wielomian lj jest stopnia dokładnie n oraz
lj(xi) = 0 i 6= j, 1 i = j.
St¸ad
l0(x) = a(x − 0)(x − 1)(x − 2), bo musi si¸e zerować w punktach x = 0, x = 1 x = 2.
Ż¸adaj¸ac l0(−1) = 1 - otrzymujemy równanie na nieznany współczynnik a, a(−1 − 0)(−1 − 1)(−1 − 2) = 1,
a = −16
i l0(x) = −16(x − 0)(x − 1)(x − 2).
Podobnie konstruujemy l2(x) = −12x(x + 1)(x − 2).
Zauważmy, że nie musimy określać wielomianów l1(x), i l3(x), ponieważ y1 = y3 = 0.
St¸ad otrzymujemy nast¸epuj¸ac¸a postać wielomianu Lagrange:
w3(x) = 3l0(x) + 3l2(x) = 2x + 3x2− 2x3 2
Prosz¸e sprawdzić.
c. Znajdujemy baz¸e Newtona.
W tym celu obliczamy różnice dzielone odpowiadaj¸ace poszczególnym w¸ezłom:
f [x0, x1] = f [xx1]−f [x0]
1−x0 = 0−30+1 = −3 f [x1, x2] = f [xx2]−f [x1]
2−x1 = 3−01−0 = 3 f [x2, x3] = f [xx3]−f [x2]
3−x2 = 0−32−1 = −3 f [x0, x1, x2] = f [x1,xx2]−f [x1,x0]
2−x0 = 3+31+1 = 3 f [x1, x2, x3] = f [x2,xx3]−f [x1,x2]
2−x0 = −3−32−0 = −3 f [x0, x1, x2, x3] = f [x1,x2,xx3]−f [x0,x1,x2]
3−x0 = −3−32−1 = −2.
Na podstawie tych obliczeń - wielomian interpolacyjny Newtona ma postać : w3(x) = 3 − 3(x + 1) + 3(x + 1)x − 2(x + 1)x(x − 1) = 2x + 3x2− 2x3. Prosz¸e sprawdzić.
Tym samym udowodniliśmy że dla różnych baz otrzymaliśmy tak¸a sam¸a postać wie- lomianu interpolacyjnego w3(x).
Zał¸aczniki:
Zał¸acznik 1 - wynik uzyskany za pomoc¸a programu lagrange.
Zał¸acznik 2 - wynik uzyskany za pomoc¸a programu divdifrence .
Zał¸acznik 3 - wynik uzyskany za pomoc¸a instrukcji wewn¸etrznej OCTAVE polyfit.
3