Temat: „ Czego nauczyłaś się na przedmiocie metody numeryczne?”
Analiza numeryczna zajmuje się tworzeniem, badaniem i analizą algorytmów. Zadaniem jej jest otrzymanie rozwiązań numerycznych zadań matematycznych. W jednej z książek spotkałam się z określeniem analizy numerycznej, jako matematyki obliczeń naukowych.
Postanowiłam, że w pracy przedstawię w rozdziałach tematy z tych zagadnień, które spotkały się z moim zainteresowaniem.
Liczby rzeczywiste i maszynowe.
Aby liczba była liczbą maszynową, musi spełniać pewne warunki. Dlatego nie każda liczba rzeczywista x jest liczba maszynową. Liczbę niebędącą liczbą maszynową można zastąpić jakąś bliską liczbą maszynową. Można ją wybrać na kilka sposobów.
W książce Kincaid’a i Cheney ’a pt. „Analiza numeryczna” jest napisane:
„ Załóżmy, że nasze x>0 oraz x =q×2m, gdzie 1<q<2, zatem:
x=(1.a1…)2×2m.
Nasze ai przyjmują wartości 0 albo 1. Jeśli mantysy liczb maszynowych mają t bitów po kropce, to bliska względem x taka liczba powstaje przez odrzucenie zbędnych bitów at+1,…. Taką operację nazywamy obcięciem. Następnie otrzymujemy poniższy wzór:
x-=(1.a1…at)2×2m,
Zwróćmy uwagę na to, że x-≤x. Inna bliska liczba maszynowa, która znajduje się na prawo od x, powstaje przez zaokrąglenie w górę. Wtedy niepotrzebne bity odrzucamy i do q dodajemy jedynkę na ostatniej wolnej pozycji. W ten sposób otrzymamy poniższy wzór:
x+=[(1.a1…at)2+2-t]× 2m.
Na końcu otrzymujemy, że:
x+-x-=2m-t.
Najbliższą dla x liczbą maszynową oznaczmy ją, jako fl(x), jest bliższa jej z liczb x- lub x+. Jeśli jako bliższą liczbę wybraliśmy fl(x)=x-, to mamy :
|x-fl(x)|≤$\frac{1}{2}$ |x+ - x-|= 2m-t-1
Analogiczny wzór mamy dla fl(x) =x+. Dla obu przypadków szacujemy podobny błąd względny reprezentacji maszynowej liczby x. Wygląda on następująco:
$$\frac{|x - fl\left( x \right)|}{|x|} \leq \frac{2^{m - t - 1}}{q2^{m}} = \frac{1}{q}2^{- t - 1} \leq 2^{- t - 1}''$$
Wykorzystajmy zdobyte wiadomości w praktyce, rozwiązują poniższe zadanie.
Zadanie
Jaka jest postać dwójkowa liczby x= $\frac{4}{5}$ w przykładowej arytmetyce, w której t=23? Znajdź błąd względny i bezwzględny.
Rozwiązanie:
x= $\frac{4}{5}$=0.110(0110)=1.10(0110)×2-1
Dla liczby x wyznaczamy bliskie liczby maszynowe:
x-=1.10(0110)…0×2-1 (gdzie na 23 miejscu znajduje się 0)
x+=1.10(0110)…1×2-1 (gdzie na 23 miejscu znajduje się 1)
Obliczmy teraz różnice:
Oznaczmy sobie x-=s i x+=k
|x+-x-|=2-24
x-x-=1.10(0110) ×2-1-s= $\frac{4}{5} \times$2-24
x+-x=x+-x- -(x-x-)=2-24-$\ \frac{4}{5} \times$2-24 =$\ \frac{1}{5} \times$2-24
Zatem nasz błąd bezwzględny wynosi: $\frac{1}{5} \times$2-24, czyli ostatecznie: |x-fl(x)|=$\frac{1}{5} \times$2-24.
Policzmy teraz błąd względny:
$$\frac{|x - fl\left( x \right)|}{|x|} = \frac{\frac{1}{5} \times 2^{- 24}}{\frac{4}{5}} = 2^{- 25}$$
Interpolacja wielomianowa
Do wyjaśnienia zagadnienia posłużę się zadaniem, które znalazłam w książce „Analiza numeryczna”: ” Znaleźć wielomian p najniższego stopnia taki, że dla danych n + 1 punktów (xi, yi) jest p(xi) = yi dla 0 ≤ i ≤ n.
Wtedy mówimy, że ten wielomian interpoluje wartości yk w węzłach xk. Jeśli są to wartości pewnej funkcji f, to mówimy, że p interpoluje f. Omawiając zadania interpolacji wielomianowej, symbolem $\prod_{}^{}n$, zbiór wszystkich wielomianów maksymalnie stopnia n.”
Postanowiłam także wykorzystać twierdzenie i dowód z książki Kincaid’a i Cheney ‘a:
Twierdzenie
Jeśli liczby x0, …,xn są parami różne , to istnieje dokładnie jeden wielomian pnnależący do $\prod_{}^{}n$, taki, że
pn(xi) = yi
dla 0 ≤ i ≤ n.
Dowód
Udowodnimy najpierw jednoznaczność tego wielomianu. Przypuśćmy, że dwa wielomiany pn, qn, z klasy $\prod_{}^{}n$, spełniają powyższe warunki. Wtedy ich różnica pn − qn znika w n+1 punktach xi. Ponieważ jednak wielomian z $\prod_{}^{}n$, nieznikający tożsamościowo ma, co najwyżej n zer, więc te wielomiany są tożsamością.
Istnienie wielomianu sprawdzamy przez indukcję. Dla n=0 jest oczywiste, że warunek jest spełniony. Wiedząc, ze dla pewnego k naturalnego istnieje wielomian pk − 1 należący do $\prod_{}^{}{}_{k - 1}$, taki, że ∖npk − 1(xi) = yi dla 0 ≤ i ≤ k − 1, próbujemy wyrazić pk w postaci:
pk(x) = pk − 1(x) + c(x−x0)(x−x1)…(x−xk − 1).
Dla każdej stałej c stopień tego wielomianu nie przewyższa k. Jest też oczywistością, że pk spełnia warunki interpolacyjne dla 0 ≤ i ≤ k − 1. Pozostaje wyznaczyć c tak, żeby było również pk(xk) = yk. Tak jest, gdy:
pk − 1(xk) + c(xk−x0)(xk−x1)…(xk−xk − 1) = yk,
A stąd można obliczyć c.
Zadanie
Rozwiąż metodą Lagrange’a.
x | 0 | 1 | 2 |
---|---|---|---|
f(x) | 3 | 4 | 5 |
Do rozwiązania naszego zadania, potrzebny będzie nam następujący wzór:
$$w\left( x \right) = \sum_{k = 0}^{n}y_{k}\frac{\ \prod_{j = 0,j \neq k}^{n}{(x - x_{\text{j\ \ }})}}{\prod_{j = 0,j \neq k}^{n}{(x_{k}} - x_{\text{j\ }})}$$
$w\left( x \right) = 3 \times \frac{\left( x - 1 \right)\left( x - 2 \right)}{\left( 0 - 1 \right)\left( 0 - 2 \right)}$+ 4 $\times \frac{\left( x - 0 \right)\left( x - 2 \right)}{\left( 1 - 0 \right)\left( 1 - 2 \right)}$ +5$\times \frac{\left( x - 0 \right)\left( x - 1 \right)}{\left( 2 - 0 \right)\left( 2 - 1 \right)}$
$$w\left( x \right) = \frac{1}{2}\{ 3 \times \left( x - 1 \right)\left( x - 2 \right) + 5x\left( x - 1 \right) - 8x\left( x - 2 \right)\}$$
$$w\left( x \right) = \frac{1}{2}(2x + 6)$$
Można sprawdzić czy wyliczenia się zgadzają, wstawiając do w(x) wartości x.
$$w\left( 0 \right) = \frac{6}{2} = 3$$
$$w\left( 1 \right) = \frac{8}{2} = 4$$
$$w\left( 2 \right) = \frac{10}{2} = 5$$
Metoda Newtona (metoda stycznej)
Wyjaśnienie powyższej metody oraz szereg twierdzeń, można znaleźć w książce „Analiza numeryczna”:
„Niech będzie dana funkcja f, której zera wyznaczamy numerycznie. Załóżmy sobie, że r jest takim naszym zerem, z kolei x jego przybliżeniem. Jeśli istnieje druga pochodna f, wtedy:
0 = f(r) = f(x+h) = f(x) + hf′(x) + O(h2),
Niech h = r − x. Dla x znajdującego się blisko r, pomijamy O(h2). Wtedy wyliczając h otrzymamy:
$$h = \frac{- f(x)}{f^{'}(x)}$$
Z kolei dla x, który jest przybliżeniem r, $x - \ \frac{f(x)}{f^{'}(x)}$, powinno być lepszym przybliżeniem zera. Zatem metoda Newtona zaczyna od przybliżenia x0 zera r i polega na rekurencyjnym stosowaniu wzoru:
$$x_{n + 1} = x_{n} - \ \frac{f(x_{n})}{f^{'}(x_{n})}$$
gdzie n ≥ 0.
Twierdzenie
Niech r będzie zerem pojedynczym funkcji f i niech jego druga pochodna będzie ciągła. Wtedy istnieje takie otoczenie punktu r i taka stała C, że jeśli metoda startuje z tego otoczenia, to kolejne punkty są coraz bliższe r i takie, że
|xn + 1 − r|≤|C(xn−r)2|
gdzie n ≥ 0, en = (xn−r) jest błędem.
Twierdzenie
Jeśli f należy do C2(R), jest rosnąca, wypukła i ma zero, to jest ono jedyne, a metoda Newtona daje ciąg do niego zbieżny dla dowolnego punktu początkowego.
Dowód
Wiemy, że funkcja f jest wypukła, jeśli druga jej pochodna jest większa od zera dla każdego x. Ponieważ funkcja ta, jest tez rosnąca, wiec jej pierwsza pochodna jest większa od zera w R. Zatem (xn + 1−r)>0, xn > r dla n ≥ 0. Wiemy także, żef(xn) > f(r) = 0. Dlatego xn + 1 − r < xn − r. Zatem ciągi {en} , {xn} są malejące i ograniczone z dołu (odpowiednio przez 0 i r). Dzięki temu granice e* = en, x*=xn istnieją. Czyli
$e^{*} = e^{*} - \frac{{f(x}^{*})}{f^{'}(x^{*})}$, zatem $f\left( x^{*} \right) = 0\ i\ x^{*} = r."$
Zadanie
∖n
f(x) = x2 − 15
x2 − 15 = 0
Wyliczamy h(x) ze wzoru:
$$h = \frac{- f(x)}{f^{'}(x)}$$
$$h\left( x \right) = \frac{- x^{2} + 15}{2x}$$
Następnie korzystając z poniższego wzoru wyliczamy kolejne wyrazy ciągu:
$$x_{n + 1} = x_{n} - \ \frac{x_{n}^{2\ } + 15}{2x_{n}}$$
Ustalmy, że x0=3, bo $3 < \sqrt{15} < 4$.
$$x_{1} = \frac{x_{0}}{2} + \frac{15}{2x_{0}}$$
x1 = 4
$$x_{2} = \frac{33}{8} = 4\frac{1}{8}$$
Metoda bisekcji (połowienia przedziału)
Do wyjaśnienia metody posłużę się twierdzeniami z wcześniej wskazanej książki.
Twierdzenie
Jeśli f jest funkcją ciągłą w przedziale [a, b] i f(a)f(b)<0, czyli zmieniony jest znak f w [a,b], to funkcja musi mieć zero w (a,b).
Powyższe twierdzenie wynika z własności Darboux dla funkcji ciągłych. Odgrywa ważną rolę w metodzie połowienie przedziału, ponieważ bazuje na jego własnościach.
Jeśli f(a) f(b) <0, wtedy obliczamy wartość $c = \frac{1}{2}$(a + b). Następnie musimy sprawdzić czy nasze f(a) f(b) są nadal mniejsze od 0. Gdy warunki te zostają spełnione, to f ma zero w [a, c] i w miejsce a wstawiamy c. Nowo powstały przedział [a, b] jest dwa razy krótszy od poprzedniego, posiada zero funkcji f i dlatego możemy powtórzyć całość.
Twierdzenie
Jeżeli przedziały [a0,b0], [a1,b1],…są tworzone metodą bisekcji to granice an i bn istnieją, są identyczne i równe zeru funkcji f.
Jeżeli:
r = cn gdzie $\text{\ \ \ \ \ \ \ }c_{n} = \frac{1}{2}$(an + bn) (*)
Wtedy:
|r − cn|≤2−(n + 1)(b0-a0) (**)
Zadanie
Niech metoda bisekcji startuje od przedziału [50,80]. Ile razy musimy wykonać metodę bisekcji, aby otrzymać wynik z błędem względnym naszego obliczenia mniejszym niż 10−20?
Rozwiązanie:
Wiemy, że a0 = 50, b0 = 80.
Skorzystajmy ze wzoru (*) do obliczenia c0, zatem jego wartość wynosi:
$c_{0} = \frac{(80 - 50)}{2}$= 15
Z treści zadania wartość błędu względnego ma być mniejsza od 10−20, więc:
$$\frac{|r - c_{n}|}{|r|}{< 10}^{- 20}$$
|r−cn|<10−20|r|
Teraz w wartość po lewej stronie wstawiamy (**), czyli:
2−(n+1)(80 − 50) <10−20|r|
$$\frac{30}{2^{n + 1}} < \frac{|r|}{10^{20}}$$
Przyjmijmy, że r jest początkiem przedziału, zatem r =50.
$$\frac{30}{2^{n + 1}} < \frac{50}{10^{20}}$$
Po wykonaniu kilku prostych przekształceń mamy:
$$n + 1 > \operatorname{}\frac{10^{20}30}{50}$$
n > 2010 + 30 − 50 − 1
Funkcja wielomianowa
Funkcja wielomianowa jest dana w postaci:
P(n) = anxn + … + a1x + a0 (***)
Po raz kolejny wykorzystam twierdzenia z podręcznika, do wyjaśnienia zagadnień, które okażą się pomocne do rozwiązania zadań.
Twierdzenie
Każdy wielomian różny od stałej ma, co najmniej jeden pierwiastek w ciele C liczb zespolonych.
Twierdzenie
Wielomian stopnia n ma dokładnie n pierwiastków na płaszczyźnie zespolonej, gdy każdy z nich jest liczony tule razy ile wynosi jego krotność.
Twierdzenie
Wszystkie pierwiastki wielomianu (***) leżą w kole otwartym o środku w punkcie 0 płaszczyzny zespolonej i promieniu
g = 1 + |an|−1|ak|
Dowód
Niech c =|ak|, stąd c|an|−1=g − 1. Jeśli c=0, to twierdzenie jest prawdziwe. W przeciwnym wypadku jest g > 1 i dla |z|≤g mamy nierówność
$$\left| p\left( z \right) \right| \geq \left| a_{n}z^{n} \right| - \left| a_{n - 1}z^{n - 1} + \ldots + a_{0} \right| \geq \left| a_{n}z^{n} \right| - c\sum_{k = 0}^{n - 1}{{|z|}^{k} >}$$
>|anzn| − c|z|n(|z|−1)−1 = |anzn|[1 − c|an|−1(|z|−1)−1]≥
≥|anzn|[1−c|an|−1(g−1)−1] = 0.
Zadanie
Oblicz promień koła na płaszczyźnie zespolonej o środku w punkcie (0,0) dla poniższego wielomianu:
P(z) = z3+2z-1
Rozwiązanie:
Wstawiamy do wzoru:
g = 1 + |a3|−1|ak|=3
Twierdzenie
Jeśli wszystkie pierwiastki wielomianu s leżą w kole |z| ≤ g, to wszystkie niezerowe pierwiastki wielomianu p leżą poza kołem|z| < g−1.
Zadanie
Znaleźć koło o środku w punkcie (0,0), w którym wielomian nie ma żadnego pierwiastka. Do zbudowania nowego wielomianu, skorzystaj ze wzoru na wielomian odwrotny dla poniższego wielomianu:
P(z) = z3+2z-1
Rozwiązanie:
Wzór na wielomian odwrotny wygląda następująco:
S(z) = a0xn + … + an − 1x + an
S(z) = −z3+2z+1
Promień dla wielomianu odwrotnego wynosi tyle samo, czyli:
g = 1 + |a3|−1|ak| = 3
|z|<g−1
$$\frac{1}{3} < |z| < 3$$
Wniosek: Otrzymane pierwiastki wielomianu P(z) leżą poza kołem.
Rozkład LU
Niech dana będzie macierz A o wymiarach n×n. Macierz A można rozłożyć na iloczyn dwóch macierzy.
Zatem:
A=LU
gdzie:
L- macierz trójkątna dolna
U- macierz trójkątna górna
Rys. Źródło Wikipedia
Zadanie
Rozłóż na macierz LU
$$\begin{bmatrix}
5 & 0 \\
0 & 4 \\
\end{bmatrix}$$
Rozwiązanie:
Do znalezienia rozkładu LU, musimy posłużyć się następującym algorytmem, który był omawiany na ćwiczeniach u mgr Marka Szczepańskiego:
For k=1 to n do
WYBRAĆ WARTOŚĆ NIEZEROWĄ DLA lkk LUB ukk
WYLICZYĆ DRUGĄ ZE WZORU
$$l_{\text{kk}}u_{\text{kk}} = a_{\text{kk}} - \sum_{s = 1}^{k - 1}{u_{\text{sk}}l_{\text{ks}}}$$
For j=k+1 to n
$$u_{\text{kj}} = (a_{\text{kj}} - \sum_{s = 1}^{k - 1}{l_{\text{ks}}u_{\text{sj}})/l_{\text{kk}}}$$
$$l_{\text{jk}} = (a_{\text{jk}} - \sum_{s = 1}^{k - 1}{l_{\text{js}}u_{\text{sk}})/u_{\text{kk}}}$$
End do
End do
Wybierzmy, jako pierwsza niezerową wartość dla l11 liczbę 5, a pozostałe wartości wyliczamy, korzystając z algorytmu.
5u11 = a11 = 5
u11 = 1
$$l_{21} = \frac{a_{21}}{u_{11}} = 0$$
Wybierzmy teraz dla l22 wartość 2, zatem:
$u_{12} = \frac{a_{12}}{l_{22}}$ =0
$$u_{22} = \frac{a_{22} - l_{21}u_{12}}{l_{22}} = 2$$
Zatem nasz rozkład LU wygląda następująco:
L= $\begin{bmatrix} 5 & 0 \\ 0 & 2 \\ \end{bmatrix}$
U=$\begin{bmatrix} 1 & 0 \\ 0 & 2 \\ \end{bmatrix}$
Możemy sprawdzić, czy otrzymany wynik jest prawidłowy wymnażając macierze L i U.
Bibliografia:
David Kincaid, Ward Cheney „Analiza numeryczna”.
Notatki z ćwiczeń u mgr. Marka Szczepańskiego.
Wikipedia.