Metody numeryczne – Wykład 2 – proste algorytmy numeryczne
Marek Bazan
III rok - Elektornika
Semestr zimowy 2020/2021
Plan zajęć
1. Kilka pojęć związanych z zadaniami numerycznymi 2. Pojęcia związane z algorytmami
3. Algorytm wyznaczania wartości wielomianu wprost 4. Obliczanie wartości wielomianu – schemat Hornera
5. Szukanie miejsc zerowych wielomianu - dzielenie wielomianu przez dwumian schematem Hornera
Zadania numeryczne
Definicja: Zadanie numeryczne z jest problemem polegającym na wyznaczeniu wektora wyników w ∈ Rm na podstawie danych x ∈ Rn.
Definicja: Mówimy, że zadanie z jest dobrze postawione, jeśli wektor w jest jednoznacznie określony dla przyjętego wektora danych x.
Przykład: Przykładem zadania, które nie jest zadaniem dobrze postawionym, jest na przykład szukanie rozwiązania
niedookreślonego układu równań liniowych.
Zastosowanie: np. obliczanie macierzy przepływów w ruchu drogowym.
Zadania numeryczne (2)
Definicja: Niech D ⊂ Rn oznacza zbiór danych x dla, któch zadanie jest dobrze postawione. Na tym zbiorze istnieje więc przekształcenie w = z(x).
Algorytm numeryczne ogólnie (2)
Definicja: Niech ˆw oznacza obliczony numerycznie wektor wyników. Algorytm A określa odwzorowanie WN takie, że ˆ
w = WN(x, ), gdzie związane jest z dokładnością arytmetyki zmiennopozycyjnej użytej do reprezentacji danych i wyników.
Algorytm A będzie poprawnie sformułowany wtedy, gdy liczba niezbędnych działań będzie skończona (choć może zależeć od wektora danych x)
Oznaczenie: Przez DN oznaczamy zbiór, na którym określone jest przekształcenie WN(x, ). Zauważmy, że D ∩ DN 6= ∅.
Algorytm numeryczne stabilne
Definicja: Mówimy, że algorytm jest numerycznie stabilny, jeżeli dla dowolnie wybranych danych x0 ∈ D istnieje taka dokładność obliczeń 0, że dla < 0 mamy x0∈ DN(0) oraz
→0limWN(x0, ) = z(x0) (1)
Interpretacja: Algorytm jest numerycznie stabilny wtedy, gdy zwiększając dokładność obliczeń można wyznaczyć (i to z dowolną dokładnościa) dowolne istniejące rozwiązanie zadania.
Algorytm wyznaczania wartości wielomianu wprost
Dane są współczynniki: a0, a1, . . . , an oraz dane x . Chcemy wyznaczyć wartość:
W (x ) = anxn+ an−1xn−1+ an−2xn−2+ . . . a1x + a0 Jak to zrobić?
Algorytm ”naiwny”/”głupi”
Dane są współczynniki: a0, a1, . . . , an oraz dane x . Chcemy wyznaczyć wartość:
W (x ) = anxn+ an−1xn−1+ an−2xn−2+ . . . a1x + a0
Algorytm: w literaturze nazywany naiwny – przeze mnie nazywany jest ”głupim” ew. ”bardzo naiwny”.
NIE TRZEBAkorzystając z powyższego wzoru wykonywać 12n2 mnożeń i n − 1 dodawań aby obliczyć wartość tego wilomianu w punkcie x .
Algorytm ”wprost”
Dane są współczynniki: a0, a1, . . . , an oraz dane x . Chcemy wyznaczyć wartość:
W (x ) = anxn+ an−1xn−1+ an−2xn−2+ . . . a1x + a0
Algorytm: po prostu efektywna implementacja powyższego wzoru – złożoność O(n) mnożeń i dodwań.
Algorytm – schemat Hornera
Dane są współczynniki: a0, a1, . . . , an oraz dane x . Chcemy wyznaczyć wartość:
W (x ) = anxn+ an−1xn−1+ an−2xn−2+ · · · + a1x + a0 Algorytm:
W (x ) = anxn+ an−1xn−1+ an−2xn−2+ . . . a1x + a0
= x (anxn−1+ an−1xn−2+ an−2xn−3+ . . . a1) + a0
= x (x (anxn−2+ an−1xn−3+ an−2xn−4+ · · · + a2) + a1) + a0 ...
= x (x (x (. . . x (anx + an−1) + an−2) · · · + a2) + a1) + a0
Dzielenie wielomianu przez dwumian
Dane są współczynniki wielomianu
W (x ) = anxn+ an−1xn−1+ · · · + a1x + a0
oraz wiemy, że c jest miejscem zerowym wielomianu W (x ).
Chcemy wyznaczyć wielomian
B(x ) = bn−1xn−1+ bn−2xn−2+ · · · + b1x + b0 (jego współczynniki) taki, że
W (x ) = (x − c)B(x )
Algorytm: schemat Hornera do dzielenia wielomianu przez wielomian.
Dzielenie wielomianu przez dwumian
Dane są współczynniki wielomianu
W (x ) = anxn+ an−1xn−1+ · · · + a1x + a0 oraz dwumian x − c.
Zadanie: wyznaczyć taki wielomian bn−1xn−1+ · · · + b1x + b0, że:
anxn + an−1xn−1+ · · · + a1x + a0 =
= (x − c)(bn−1xn−1+ bn−2xn−2+ · · · + b1x + b0) Po wymnożeniu i pogrupownaniu współczynników przy tych samych potęgach mamy
bn−1 = an
bn−2 = an−1+ c · bn−1 bn−3 = an−2+ c · bn−2
...
b0 = a1+ c · b1
r = a0+ c · b0
Dzielenie wielomianu przez dwumian - zastosowania
Szukanie miejsc zerowych wielomianów.
1. Twierdzenie 1 Wielomian
W (x ) = anxn+ an−1xn−1+ · · · + a1x + a0 gdzie an 6= 0 ma dokładnie n miejsc zerowych.
2. Twierdzenie 2
Jeżeli współczynniki wielomianu W (x ) są liczbami całkowitymi i wielomian ma miejsce zerowe c, to c jest dzielnikiem wyrazu wolnego a0.
3. Gdy wielomian nie ma zer całkowitych - szukamy jednego z miejsc zerowych rzeczywistych za pomocą metod iteracyjnych przyjmując jako przedział startowy spektrum zer wielomianu.