Zaawansowane algorytmy i struktury danych/Ćwiczenia 4: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Sank (dyskusja | edycje)
Sank (dyskusja | edycje)
Linia 33: Linia 33:
== Zadanie 2 (Obliczanie wielomianu interpolacyjnego) ==
== Zadanie 2 (Obliczanie wielomianu interpolacyjnego) ==


Dla danego zbioru <math>n</math> par
Dla danego zbioru <math>n</math> par <math>X = \{(x_0, y_0), (x_1, y_1), \ldots, (x_{n-1},y_{n-1})\}</math> takiego, że wszystkie wartości <math>x_i</math> są parami różne, znajdź wielomian interpolacyjny.
<math>X = \{(x_0, y_0), (x_1, y_1), \ldots,
(x_{n-1},y_{n-1})\}</math> takiego, że wszystkie wartości
<math>x_i</math> są parami różne, znajdź wielomian interpolacyjny.


<div class="mw-collapsible mw-made=collapsible mw-collapsed"> '''Wskazówka'''  
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> '''Wskazówka'''  
<div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible-content" style="display:none">


Podobnie jak w Zadaniu 1 należy sprowadzić problem do dwóch
Podobnie jak w Zadaniu 1 należy sprowadzić problem do dwóch mniejszych. Najpierw liczymy rekurencyjne wielomian <math>A^{[0]}(x)</math> stopnia <math>\frac{n}{2}</math> interpolujący zbiór punktów <math>X^{[0]} = \{(x_0, y_0), (x_1, y_1), \ldots,(x_{\frac{n}{2}-1},y_{\frac{n}{2}-1})\}</math>. Następnie obliczamy wartości <math>A^{[0]}(x)</math> dla zbioru punktów \{x_{\frac{n}{2}-1,\ldots, x_{n-1}}\} korzystając z wyników Zadania 1. Musimy teraz skonstruować następujący wielomian:
mniejszych. Najpierw liczymy rekurencyjne wielomian
<math>A^{[0]}(x)</math> stopnia <math>\frac{n}{2}</math>
interpolujący zbiór punktów <math>X^{[0]} = \{(x_0, y_0), (x_1,
y_1), \ldots,(x_{\frac{n}{2}-1},y_{\frac{n}{2}-1})\}</math>.
Następnie obliczamy wartości <math>A^{[0]}(x)</math> dla zbioru
punktów \{x_{\frac{n}{2}-1,\ldots, x_{n-1}}\} korzystając z wyników
Zadania 1. Musimy teraz skonstruować następujący wielomian:




Linia 57: Linia 47:




Ponownie korzystając z wyników Zadania 1 obliczamy wartości
Ponownie korzystając z wyników Zadania 1 obliczamy wartości <math>P(x)</math> dla zbioru punktów \{x_{\frac{n}{2}-1,\ldots, x_{n-1}}\}. Szukany wielomian skonstruujemy jako:
<math>P(x)</math> dla zbioru punktów \{x_{\frac{n}{2}-1,\ldots,
x_{n-1}}\}. Szukany wielomian skonstruujemy jako


<center><math>
<center><math>
Linia 66: Linia 54:




gdzie <math>A^{[1]}</math> to nieznany wielomian stopnia
gdzie <math>A^{[1]}</math> to nieznany wielomian stopnia <math>\frac{n}{2}</math>. Z konstrukcji wynika, że <math>A(x)</math> jest wielomianem interpolacyjnym dla zbioru <math>X^{[0]}</math>. Zauważmy, że aby znaleźć <math></math>musimy ponownie rozwiązać problem interpolacyjny. Dla <math>A^{[1]}(x)</math> musi zachodzić
<math>\frac{n}{2}</math>. Z konstrukcji wynika, że <math>A(x)</math>
jest wielomianem interpolacyjnym dla zbioru <math>X^{[0]}</math>.
Zauważmy, że aby znaleźć <math></math>musimy ponownie rozwiązać
problem interpolacyjny. Dla <math>A^{[1]}(x)</math> musi zachodzić




<center> <math>A^{[1]}(x_i) = \frac{y_i - A^{[0]}(x_i)}{P(x_i)}
<center> <math>A^{[1]}(x_i) = \frac{y_i - A^{[0]}(x_i)}{P(x_i)}</math> dla <math>i = frac{n}{2},\ldots,n-1</math>. </center>
</math> dla <math>i = \frac{n}{2},\ldots,n-1</math>. </center>




Musimy więc teraz ponownie rozwiązać problem rozmiaru
Musimy więc teraz ponownie rozwiązać problem rozmiaru <math>\frac{n}{2}</math>. Ostatecznie dostajemy algorytm o złożoności O(n \log^3 n).
<math>\frac{n}{2}</math>. Ostatecznie dostajemy algorytm o
złożoności O(n \log^3 n).


</div>
</div>

Wersja z 20:49, 20 lip 2006

Zadanie 1 (Obliczanie wartości wielomianu w n punktach)

Zaproponuj algorytm obliczający wartość wielomiany stopnia n w n dowolnych punktach w czasie O(nlogn2).

Wskazówka

Zadanie 2 (Obliczanie wielomianu interpolacyjnego)

Dla danego zbioru n par X={(x0,y0),(x1,y1),,(xn1,yn1)} takiego, że wszystkie wartości xi są parami różne, znajdź wielomian interpolacyjny.

Wskazówka

Zadanie 3 (Obliczanie wartości wielomianu dwóch zmiennych)

Dla danych zbiorów n punktów X={x0,,xn1} i Y={y0,,yn1}, oraz wielomianu A(x,y) dwóch zmiennych stopnia n, wyznacz wszystkie wartości A(xi,yj) dla i,j=0,,n1.

Wskazówka