|
|
Linia 7: |
Linia 7: |
| <div class="mw-collapsible-content" style="display:none"> | | <div class="mw-collapsible-content" style="display:none"> |
|
| |
|
| Pomysłem na rozwiązanie jest sprowadzenie problemu do dwóch mniejszych problemów. Można to zrobić wykorzystując algorytm | | Pomysłem na rozwiązanie jest sprowadzenie problemu do dwóch mniejszych problemów. Można to zrobić wykorzystując algorytm dzielenia wielomianów. Niech <math>X = \{x_0, \ldots, x_{n-1}\}</math> będzie zbiorem punktów w których chcemy obliczyć wartość wielomianu. Dla wielomianu <math>A(x)</math> zdefiniujmy dwa nowe wielomiany: |
| dzielenia wielomianów. Niech <math>X = \{x_0, \ldots, | |
| x_{n-1}\}</math> będzie zbiorem punktów w których chcemy obliczyć | |
| wartość wielomianu. Dla wielomianu <math>A(x)</math> zdefiniujmy dwa | |
| nowe wielomiany: | |
|
| |
|
|
| |
|
Linia 22: |
Linia 18: |
|
| |
|
|
| |
|
| wielomiany te są stopnia <math>\frac{n}{2}</math> i z własności | | wielomiany te są stopnia <math>\frac{n}{2}</math> i z własności dzielenia wynika, że |
| dzielenia wynika, że | |
|
| |
|
| <center> | | <center> |
Wersja z 20:48, 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
Pomysłem na rozwiązanie jest sprowadzenie problemu do dwóch mniejszych problemów. Można to zrobić wykorzystując algorytm dzielenia wielomianów. Niech będzie zbiorem punktów w których chcemy obliczyć wartość wielomianu. Dla wielomianu zdefiniujmy dwa nowe wielomiany:
wielomiany te są stopnia i z własności dzielenia wynika, że
dla
dla
Zadanie 2 (Obliczanie wielomianu interpolacyjnego)
Dla danego zbioru par
takiego, że wszystkie wartości
są parami różne, znajdź wielomian interpolacyjny.
Wskazówka
Podobnie jak w Zadaniu 1 należy sprowadzić problem do dwóch
mniejszych. Najpierw liczymy rekurencyjne wielomian
stopnia
interpolujący zbiór punktów .
Następnie obliczamy wartości 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:
Ponownie korzystając z wyników Zadania 1 obliczamy wartości
dla zbioru punktów \{x_{\frac{n}{2}-1,\ldots,
x_{n-1}}\}. Szukany wielomian skonstruujemy jako
gdzie to nieznany wielomian stopnia
. Z konstrukcji wynika, że
jest wielomianem interpolacyjnym dla zbioru .
Zauważmy, że aby znaleźć musimy ponownie rozwiązać
problem interpolacyjny. Dla musi zachodzić
dla .
Musimy więc teraz ponownie rozwiązać problem rozmiaru
. Ostatecznie dostajemy algorytm o
złożoności O(n \log^3 n).
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
Zauważmy, że wielomian jest postaci
(1)
gdzie wielomiany mają także stopnie
. W celu wyznaczenia wartości wielomianu
najpierw wyznaczamy dla każdego
jego wartości w punktach . Zajmuje nam to czas . Wartości te możemy wstawić do (1) otrzymując
wielomianów 'a, których wartości
musimy policzyć w punktach. Ponownie zajmuje nam to czas
.