Radosław Dec
Informatyka, rok III.
Teoria aproksymacji
Projekt 2.4
Wykonaj program w MATLABie, który:
dokonuje interpolacji Lagrange’a krzywej x = t − 0.5sint, y = 1 − 0.5cost, t ∈ [0, 4π] na równomiernej siatce węzłów o danej liczbie przedziałów n w przedziale [0, 4π].
dokonuje aproksymacji tej krzywej krzywą Béziera na równomiernej siatce węzłów o danej liczbie przedziałów n w przedziale [0, 4π].
wykonuje wykresy rozpatrywanych krzywych dla 4 wartości n oraz wyznacza normy || ||1 oraz || ||2 dla błędu aproksymacji wykorzystując metodę trapezów.
W interpolacji Lagrange’a wykorzystałem m.in. macierz Vandermonde'a, która posłużyła mi do wyliczania współczynników wielomianu interpolacyjnego. Samą interpolacje Lagrange’a zaimplementowałem na podstawie wzoru:
$$L\left( x \right) = \ \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:
Do aproksymacji krzywej krzywą Béziera posłużyłem się wzorami zaczerpniętymi z sieci:
$$x(k) = \sum_{j = 0}^{n}{\left( \frac{n}{j} \right)*k^{j}*{(1 - k)}^{n - j}{*x}_{i}}$$
$$y\left( k \right) = \sum_{j = 0}^{n}{\left( \frac{n}{j} \right)*k^{j}*\left( 1 - k \right)^{n - j}{*y}_{i}}$$
x(t), y(t) – współrzędne punktów na krzywej Béziera
k ∈ [0, 1]∖n
xi, yi – współrzędne kolejnego punktu pomiarowego.
Jako efekt działania programu przedstawiam cztery wykresy funkcji f(x), funkcji interpolowanej oraz wyniku aproksymacji dla czterech różnych wartości n. Wszystkie 4 interpolacje zostały wykonane dla jednakowym przedziale t ∈ [0, 4π]. Liczba węzłów interpolacyjnych wynosiła:
Wykres 1 – 10 węzłów,
Wykres 2 – 20 węzłów,
Wykres 3 – 30 węzłów,
Wykres 4 – 40 węzłów,
Wykres numer 1:
Interpolacja Lagrange’a
Funkcja interpolowana
Aproksymacja Beziera
Wykres numer 2:
Interpolacja Lagrange’a
Funkcja interpolowana
Aproksymacja Beziera
Wykres numer 3:
Interpolacja Lagrange’a
Funkcja interpolowana
Aproksymacja Beziera
Wykres numer 4:
Interpolacja Lagrange’a
Funkcja interpolowana
Aproksymacja Beziera
Wzory na użyte normy:
∥f1∥ = ∫ab|f(x)|dx
$$\left\| f_{2} \right\| = \sqrt[2]{\int_{a}^{b}{f^{2}(x)\text{dx}}}$$
Otrzymane wyniki dla błędu aproksymacji zostały przedstawione w tabeli poniżej.
N – liczba węzłów
Błąd dla interpolacji dla Lagrange’a:
N=10 | N=20 | N=30 | N=40 | |
---|---|---|---|---|
∥f1∥ |
0.0461 | 9.8053e-008 | 6.6954e-009 | 1.5633e-012 |
∥f2∥ |
0.6708 | 7.9999e-004 | 3.3014e-004 | 5.01e-005 |
Błąd dla interpolacji dla Bezier’a:
N=10 | N=20 | N=30 | N=40 | |
---|---|---|---|---|
∥f1∥ |
2.8352 | 1.9267 | 1.4436 | 1.1518 |
∥f2∥ |
7.6682 | 6.3961 | 5.5727 | 4.9988 |