Zaawansowane algorytmy i struktury danych/Ćwiczenia 4: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
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 = | |||
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 punktach)
Zaproponuj algorytm obliczający wartość wielomiany stopnia w dowolnych punktach w czasie .
Wskazówka
Zadanie 2 (Obliczanie wielomianu interpolacyjnego)
Dla danego zbioru par takiego, że wszystkie wartości są parami różne, znajdź wielomian interpolacyjny.
Wskazówka
Zadanie 3 (Obliczanie wartości wielomianu dwóch zmiennych)
Dla danych zbiorów punktów i , oraz wielomianu dwóch zmiennych stopnia , wyznacz wszystkie wartości dla .
Wskazówka