• Nie Znaleziono Wyników

Laboratorium komputerowe 8

N/A
N/A
Protected

Academic year: 2021

Share "Laboratorium komputerowe 8"

Copied!
5
0
0

Pełen tekst

(1)

1

Laboratorium komputerowe 8 Interpolacja Lagrange’a

Celem ćwiczenia jest wykonanie interpolacji za pomocą wielomianów Lagrange’a.

W pierwszym kroku rozpatrywany jest szczególny przypadek interpolacji 2-ego stopnia, a w kolejnym ogólna metoda dowolnego stopnia.

Uwaga:

Należy zapoznać się z wykładem z informatyki stosowanej dotyczącym interpolacji i aproksymacji funkcji, a w szczególności z interpolacją Lagrange’a. Warto przypomnieć sobie, jak oblicza się sumy i iloczyny skończone.

1. Wprowadzenie.

Ogólna postać funkcji interpolującej dana jest wzorem:

𝜑(𝑥) = 𝑎0𝜙0(𝑥) + 𝑎1𝜙1(𝑥)+ . . . +𝑎𝑛𝜙𝑛(𝑥) = ∑ 𝑎𝑖𝜙𝑖(𝑥)

𝑛

𝑖=0

gdzie 𝜙𝑖(𝑥), 𝑖 = 0,1, … , 𝑛 są funkcjami bazowymi oraz 𝑎𝑖 są współczynnikami liczbowymi.

W szczególnym przypadku interpolacji Lagrange’a wielomian interpolacyjny 𝑛-tego stopnia ma postać:

𝐿𝑛(𝑥) = 𝑓0 𝐿𝑛0(𝑥) + 𝑓1 𝐿𝑛1(𝑥)+ . . . +𝑓𝑛 𝐿𝑛𝑛(𝑥) = ∑ 𝑓𝑖 𝐿𝑛𝑖(𝑥)

𝑛

𝑖=0

gdzie 𝐿𝑛𝑖(𝑥), 𝑖 = 0,1, … , 𝑛 są funkcjami bazowymi Lagrange’a, a współczynniki 𝑓𝑖 są wartościami węzłowymi.

Funkcje bazowe Lagrange’a są wielomianami 𝑛-tego stopnia i dane są wzorem:

𝐿𝑛𝑖(𝑥) = (𝑥 − 𝑥0)(𝑥 − 𝑥1) . . . (𝑥 − 𝑥𝑖−1)(𝑥 − 𝑥𝑖+1) . . . (𝑥 − 𝑥𝑛)

(𝑥𝑖 − 𝑥0)(𝑥𝑖 − 𝑥1) . . . (𝑥𝑖− 𝑥𝑖−1)(𝑥𝑖− 𝑥𝑖+1) . . . (𝑥𝑖 − 𝑥𝑛)= ∏ (𝑥 − 𝑥𝑗) (𝑥𝑖− 𝑥𝑗)

𝑛

𝑗=0,𝑗≠𝑖

gdzie 𝑖 = 0,1, … , 𝑛 .

(2)

2 2. Implementacja interpolacji 2-ego stopnia.

Wielomian Lagrange’a 2-ego stopnia ma postać:

𝐿2(𝑥) = 𝑓0 𝐿20(𝑥) + 𝑓1 𝐿21(𝑥) + 𝑓2 𝐿22(𝑥) Funkcje bazowe:

𝐿2𝟎(𝑥) = (𝑥 − 𝑥1)(𝑥 − 𝑥2) (𝑥𝟎− 𝑥1)(𝑥𝟎− 𝑥2) 𝐿21(𝑥) = …

𝐿22(𝑥) = …

Rozpisać brakujące funkcje bazowe.

Zadanie 1

Dany jest dyskretny zbiór wartości węzłowych 𝑓𝑖 w węzłach 𝑥𝑖, 𝑖 = 0, 1, 2 :

𝑥𝑖 -1.5 1.5 5 𝑓𝑖 2 -1 1.2

Napisać skrypt, który zbuduje interpolację Lagrange’a 2-ego stopnia oraz wyświetli wykres funkcji interpolującej wraz z zaznaczonymi wartościami węzłowymi.

Uwaga

Zadanie rozwiązujemy numerycznie, a zatem należy wyznaczyć dyskretny zbiór wartości funkcji interpolującej 𝐿𝑛. Należy obliczyć dostatecznie dużo wartości, aby wyświetlony w kolejnym kroku wykres funkcji był odpowiednio gładki. Do narysowania wykresu można skorzystać z funkcji plot().

Przyjmujemy, że węzły interpolacji będą zapisane w wektorze x, a wartości węzłowe w wektorze f. Natomiast argumenty funkcji interpolującej zapisane zostaną w wektorze xx, a jej wartości w wektorze L.

Należy zwrócić uwagę na numerację węzłów. W przytoczonych wzorach matematycznych numeracja rozpoczyna się od węzła zerowego 𝑥0, a w Matlabie elementy wektora numerowane są od pierwszego: x(1).

W przypadku operacji na elementach wektorów pamiętać o operatorach z kropką.

(3)

3

Zarys skryptu znajduje się poniżej. Uzupełnić skrypt lub przygotować całkowicie własny (oczywiście nie trzeba korzystać z przedstawionego schematu).

x = [-1.5, 1.5, 5]; % węzły interpolacji

f = [2, -1, 1.2]; % wartości węzłowe

xx = x(1):0.01:x(end); % argumenty funkcji

% interpolującej

% wartości funkcji bazowej L0

L0 = (xx-x(2)).*(xx-x(3)) / ( (x(1)-x(2))*(x(1)-x(3)) );

% wartości funkcji bazowej L1 L1 = ...

% wartości funkcji bazowej L2 L2 = ...

% wartości funkcji interpolującej L L = ...

% narysowanie wykresu L oraz wartości węzłowych ...

Przykładowy wynik działania skryptu znajduje się poniżej.

(4)

4 3. Implementacja interpolacji dowolnego stopnia.

Krótkie przypomnienie Jak obliczyć sumę skończoną

𝑆 = ∑𝒇(𝑖)

𝒃

𝑖=𝒂

dla dowolnego wyrażenia 𝑓(𝑖) oraz dowolnych 𝑎 i 𝑏 ? Możemy skorzystać z poniższego skryptu:

s = 0;

for i=a:b

s = s + f(i);

end

Analogicznie możemy obliczyć iloczyn skończony:

𝑆 = ∏𝒇(𝑖)

𝒃

𝑖=𝒂

dla dowolnego wyrażenia 𝑓(𝑖) oraz dowolnych 𝑎 i 𝑏 : s = 1;

for i=a:b

s = s * f(i);

end

Na funkcję interpolującą Lagrange’a możemy spojrzeć w ten sam sposób – jest to suma skończona, której wyrazy (funkcje bazowe) są iloczynami skończonymi:

𝐿𝑛(𝑥) = ∑ 𝑓𝑖 𝐿𝑛𝑖(𝑥) , 𝑔𝑑𝑧𝑖𝑒:

𝑛

𝑖=0

𝐿𝑛𝑖(𝑥) = ∏ (𝑥 − 𝑥𝑗) (𝑥𝑖 − 𝑥𝑗)

𝑛

𝑗=0,𝑗≠𝑖

Zadanie 2

Napisać skrypt, który – analogicznie do interpolacji 2-ego stopnia – wyświetli wykres funkcji interpolującej wraz z zaznaczonymi wartościami węzłowymi. W tym przypadku mamy jednak mieć możliwość utworzenia interpolacji dowolnego stopnia.

(5)

5

Na początku skryptu definiujemy dowolnie wiele węzłów interpolacji, zapisując je w dwóch wektorach, podobnie jak w przypadku interpolacji 2-ego stopnia:

x = [ ];

f = [ ];

Interpolacja ma zostać zbudowana automatycznie, niezależnie od liczby węzłów. Można skorzystać z dwóch zagnieżdżonych pętli for, w wewnętrznej tworzymy i-tą funkcję bazową (iloczyn skończony), a w zewnętrznej dodajemy funkcje bazowe wymnożone przez odpowiednie współczynniki (suma skończona).

Przykładowy wynik działania skryptu dla danych:

x = [-4.1, -1.5, 1.5, 5, 7.7];

f = [-0.5, 2, -1, 1.2, 0.3];

znajduje się poniżej.

Cytaty

Powiązane dokumenty

Napisać nowy skrypt, który z wykorzystaniem własnej funkcji do wyznaczania liczby

Interpolacja Lagrange’a 2-ego stopnia... Interpolacja Lagrange’a

Korzystając z arkusza http://zsi.tech.us.edu.pl/~nowak/ASI_lab2.xlsx (zakładka „Naiwny klasyfikator Bayesa”) wykonaj wszelkie obliczenia z komentarzami aby odpowiedzieć na

Absolwent studiów II stopnia w zależności od wybranej specjalności: -posiada przygotowanie do zajmowania stanowisk pracy wymagających umiejętności samokształcenia z

Jest to więc przykład poszukiwania teoretycznej objętości robo- czej q Pt na obrót wału pompy oraz oceny podziału natężenia q Pv strat objętościowych na obrót wału na

Przypomnijmy też, że pod- stawowa idea przedstawionych wyżej założeń jest taka, że po ich przyjęciu można formalnie udowodnić, że pojęcie wiarygodności jest równoważne

Już w marcu tego roku do dzielnicy żydowskiej udali się dwaj ławnicy, woźny sądowy i dwóch szlachciców, którzy zostali wysłani przez urząd grodzki i

Ten wielomian jest rosnący, bo pochodna jest stale dodatnia 2017x 2016 +1, wiec pierwiastek jest tylko jeden.. Nie ma takiego wielomianu, bo jeśli wielomian parzystego stopnia