Algorytm Shaw–Trauba Niech dany będzie wielomian w(x) = x3 +
Transkrypt
Algorytm Shaw–Trauba Niech dany będzie wielomian w(x) = x3 +
Algorytm Shaw–Trauba Niech dany będzie wielomian w(x) = x3 +2x2 +x−2. Wyznaczyć wartość wielomianu w punkcie p = 2 oraz wartości w0 (2) i w00 (2). Skorzystamy z algorytmu Shaw–Trauba. Mając wielomian w(x) w postaci naturalnej n X w(x) = ak x k k=0 stopnia n i szukając wartości kolejnych pochodnych w punkcie p 6= 0 definiujemy (po znalezieniu n + 1 = tq) dwie funkcje ( s(j) = (n − j) mod q r(j) = 0, j mod q 6= 0 q, j mod q = 0 j = 0, . . . , n oraz ciąg rekurencyjny według następujących reguł Ti−1 = an−i−1 · p s(i+1) Tii = an · p i = 0, . . . , n − 1 k−1 k Tik = Ti−1 + Ti−1 ·p r(i−k) gdzie m oznacza, że szukamy wartości w Tnk = s(0) i = 0, . . . , n k = 0, . . . , m i = k + 1, . . . , n (m) (p). Wówczas zachodzi wzór w(k) (p) ·p k! k mod q W naszym przypadku mamy n = 3, p = 2, a3 = 1, a2 = 2, a1 = 1, a0 = −2. Ponadto niech n + 1 = 4 = 2 · 2, a więc q = 2. j 0 1 2 3 s(j) 1 0 1 0 T0−1 = a3−0−1 · 2 s(0+1) Wartość T1−1 = a1 · 21 = 2 = a2 · 20 = 2 T00 = a3 · 21 = 2 j 0 1 2 3 r(j) 2 0 2 0 T10 = T0−1 + T00 · 2 T20 = T1−1 + T10 · 2 r(2−0) = 18 T30 jest podstawą do wyznaczenia T30 = T2−1 + T2−1 = a0 · 20 = −2 r(1−0) =4 T20 r(3−0) ·2 = 16 wartości wielomianu w punkcie 2 w(0) (2) · 2 0 mod 2 ⇒ w(2) = 16 0! Teraz wyznaczymy wartość w0 (2). Oczywiście T11 = T00 = 2 T30 = T21 = T10 + T11 · 2 r(1) = 4 + 2 · 20 = 6 T31 = T20 + T21 · 2 r(2) = 18 + 6 · 22 = 42 Podobnie jak wcześniej wyznaczamy w(1) (2) · 2 1 mod 2 ⇒ w0 (2) = 21 1! Pozostaje jeszcze obliczyć w00 (2). Mamy T22 = T00 = 2 oraz T31 = T32 = T21 + T22 · 2 I ostatecznie T32 = w(2) (2) ·2 2! r(1) 2 mod 2 = 6 + 2 · 20 = 8 ⇒ w00 (2) = 16 GRZEGORZ GIERLASIŃSKI