Egzamin z Metod Numerycznych ZSI, 06.2007. Egzamin, Gr. A Imię i nazwisko: Nr indeksu: Section 1. Test wyboru, max 33 pkt Zaznacz prawidziwe odpowiedzi literą T, a fałszywe N. Każda prawidłowa odpowiedź jest warta 1 punkt. 1. Rozważamy zadanie rozwiązywania układu równań liniowych z macierzą nieosobliwą. Algorytm eliminacji Gaussa z wyborem elementu głównego może dać niedokładne rozwiązanie, gdy macierz jest źle uwarunkowana Wybór elementu głównego w algorytmie eliminacji Gaussa jest niepotrzebny, gdy macierz jest dobrze uwarunkowana Algorytm eliminacji Gaussa z wyborem elementu głównego należy stosować do rozwiązania zadania interpolacji wielomianowej 2. Mamy stablicowane N + 1 wartości funkcji f w węzłach x, przy czym x 0 < x 1 <... < x N. Wyjaśnij, co robi poniższy kod g = 0. 0 ; f o r ( i = 0 ; i <= N; i ++) g = g + f [ i ] ( x [ i +1] x [ i ] ) ; wyznacza wielomian interpolacyjny dla stablicowanej funkcji f w węzłach x 0,..., x N wyznacza przybliżenie miejsca zerowego pochodnej funkcji f na odcinku (x 0, x N ) oblicza przybliżenie całki x N x 0 f(x) 3. Rozwiązujemy równanie nieliniowe x 3 x = a metodą Newtona. Wzór na kolejną iterację metody to x k+1 = 2x3 k 3x 2 k + 1 Niezależnie od a, mała wartość residuum gwarantuje, że uzyskane rozwiązanie przybliżone będzie obarczone małym błędem względnym Dla a = 0 i x 0 = 10 2, metoda Newtona będzie zbieżna kwadratowo do x = 0. 4. Dobre uwarunkowanie zadania powoduje, że numerycznie poprawny algorytm jego wykonania w arytmetyce zmiennoprzecinkowej podwójnej precyzji da wynik o bardzo dużej dokładności rozwiązanie można wyznaczyć kosztem co najwyżej wielomianowym względem liczby danych rozwiązanie można wyznaczyć kosztem co najwyżej liniowym względem liczby danych 1
5. Algorytm Hornera: Przydaje się do znajdowania miejsca zerowego wielomianu stopnia n metodą bisekcji. Przydaje się do obliczania wartości wielomianu stopnia n i wymaga n 2 /2 mnożeń Przydaje się do mnożenia dwóch wielomianów stopnia n i wymaga n log 2 n mnożeń 6. Liczba x = 0.1 nie jest reprezentowana dokładnie w arytmetyce podwójnej precyzji. Błąd względny reprezentacji tej liczby: f l(x) x / x jest równy około 10 14 około 10 16 około 10 18 7. Jest nieskończenie wiele funkcji interpolujących zadane n wartości w n zadanych (parami różnych) węzłach Im więcej jest węzłów interpolacji wielomianowej Lagrange a, tym mniejszy musi być błąd aproksymacji funkcji, której wartości są interpolowane. Współczynniki wielomianu interpolacyjnego Lagrange a daje się wyznaczyć kosztem co najwyżej O(n 2 ), a jego wartość w zadanym punkcie kosztem co najwyżej O(n), gdzie n to liczba węzłów. 8. Niech macierz A ma n wierszy i m kolumn, przy czym n > m oraz wszystkie kolumny A są liniowo niezależne. Liniowe zadanie najmniejszych kwadratów Polega na znalezieniu wektora x takiego, że Ax b 2 jest możliwie najmniejsza Zaleca się rozwiązywać korzystając z rozkładu QR macierzy A Można rozwiązywać korzystając z rozkładu Cholesky ego macierzy A T A, choć zwykle są lepsze sposoby. 9. Złożona kwadratura trapezów polega na wyznaczeniu dokładnej wartości całki z liniowego splajnu interpolującego funkcję podcałkową Jeden krok metody siecznych polega na znalezieniu miejsca zerowego wielomianu interpolującego funkcję, której miejsca zerowego poszukujemy Algorytm FFT wyznacza wynik mnożenia zadanego wektora przez pewną macierz symetryczną 10. Dla zapamiętania macierzy rzadkiej wystarczy 2 N Z miejsc w pamięci, gdzie N Z to liczba niezerowych elementów macierzy. Format AIJ (inaczej: współrzędnych) wymaga dwóch tablic liczb całkowitych, każda długości N Z Macierz trójdiagonalną można traktować jako macierz rozrzedzoną 2
11. Jaki będzie wynik x, y wykonania poniższego fragmentu kodu: double j, k, x, y ; j = 1 e12 ; y = pow((1+ 1/ j ), j ) ; k = 1 e26 ; x = pow((1+ 1/ k ), k ) ; Funkcja double pow(double x, double y) zwraca liczbę x y. Wskazówka: lim n (1 + 1 n )n = e 2.71. x = 1, y = 1 x = 1, y 2.71 x 2.71, y 2.71 Section 2. Zadania (pół)otwarte, max. 30 pkt Uzupełnij wolne miejsca lub zapisz wymagane rozwiązania. W razie potrzeby skorzystaj z dodatkowej kartki, zaznaczając numer zadania, które tam rozwiązujesz. Każde prawidłowo rozwiązane zadanie jest warte 5 punktów. 1. W wyszukiwarce Google wykorzystuje się metodę potęgową dla znajdowania dominującej wartości własnej macierzy A + uu T, gdzie A jest zadaną macierzą rzadką, a u zadanym wektorem. Zapisz szczegółowy algorytm wykonujący tę metodę, wskazując, w których jego miejscach można byłoby skorzystać z procedur BLAS. Oceń jego koszt w zależności od rozmiaru macierzy. 2. Wymień przynajmniej dwa zadania numeryczne w których wykorzystuje się interpolację wielomianową:,,, 3. Podaj po jednym przykładzie zadania obliczeniowego: dobrze uwarunkowanego: źle uwarunkowanego 3
podane przykłady mają pożądane własności. Krótko uzasadnij, że 4. Wskaż trzy sytuacje, gdy do rozwiązywania równania nieliniowego lepiej stosować metodę bisekcji aniżeli metodę stycznych. 5. Podaj wzór na przybliżoną wartość całki 1 0 x3 dx, korzystając z kwadratury prostokątów P (f), z kwadratury trapezów T (f): Wykorzystaj różnicę między P (f) i T (f) do wyprowadzenia wzoru na estymator błędu popełnionego przez kwadraturę prostokątów. 6. Napisz w C procedurę, której parametrami będą m.in. macierz dwudiagonalna górna U oraz wektor f, rozwiązującą układ równań Ux = f. W komentarzach zaznacz, jak interpretujesz przekazywane parametry i jak zwracasz rozwiązanie. 4
Answer Key for Exam A Section 1. Test wyboru, max 33 pkt Zaznacz prawidziwe odpowiedzi literą T, a fałszywe N. Każda prawidłowa odpowiedź jest warta 1 punkt. 1. Rozważamy zadanie rozwiązywania układu równań liniowych z macierzą nieosobliwą. Algorytm eliminacji Gaussa z wyborem elementu głównego może dać niedokładne rozwiązanie, gdy macierz jest źle uwarunkowana Wybór elementu głównego w algorytmie eliminacji Gaussa jest niepotrzebny, gdy macierz jest dobrze uwarunkowana Algorytm eliminacji Gaussa z wyborem elementu głównego należy stosować do rozwiązania zadania interpolacji wielomianowej 2. Mamy stablicowane N + 1 wartości funkcji f w węzłach x, przy czym x 0 < x 1 <... < x N. Wyjaśnij, co robi poniższy kod g = 0. 0 ; f o r ( i = 0 ; i <= N; i ++) g = g + f [ i ] ( x [ i +1] x [ i ] ) ; wyznacza wielomian interpolacyjny dla stablicowanej funkcji f w węzłach x 0,..., x N wyznacza przybliżenie miejsca zerowego pochodnej funkcji f na odcinku (x 0, x N ) oblicza przybliżenie całki x N x 0 f(x) 3. Rozwiązujemy równanie nieliniowe x 3 x = a metodą Newtona. Wzór na kolejną iterację metody to x k+1 = 2x3 k 3x 2 k + 1 Niezależnie od a, mała wartość residuum gwarantuje, że uzyskane rozwiązanie przybliżone będzie obarczone małym błędem względnym Dla a = 0 i x 0 = 10 2, metoda Newtona będzie zbieżna kwadratowo do x = 0. 4. Dobre uwarunkowanie zadania powoduje, że numerycznie poprawny algorytm jego wykonania w arytmetyce zmiennoprzecinkowej podwójnej precyzji da wynik o bardzo dużej dokładności rozwiązanie można wyznaczyć kosztem co najwyżej wielomianowym względem liczby danych rozwiązanie można wyznaczyć kosztem co najwyżej liniowym względem liczby danych 1
5. Algorytm Hornera: Przydaje się do znajdowania miejsca zerowego wielomianu stopnia n metodą bisekcji. Przydaje się do obliczania wartości wielomianu stopnia n i wymaga n 2 /2 mnożeń Przydaje się do mnożenia dwóch wielomianów stopnia n i wymaga n log 2 n mnożeń 6. Liczba x = 0.1 nie jest reprezentowana dokładnie w arytmetyce podwójnej precyzji. Błąd względny reprezentacji tej liczby: f l(x) x / x jest równy 7. około 10 14 około 10 16 około 10 18 Jest nieskończenie wiele funkcji interpolujących zadane n wartości w n zadanych (parami różnych) węzłach Im więcej jest węzłów interpolacji wielomianowej Lagrange a, tym mniejszy musi być błąd aproksymacji funkcji, której wartości są interpolowane. Współczynniki wielomianu interpolacyjnego Lagrange a daje się wyznaczyć kosztem co najwyżej O(n 2 ), a jego wartość w zadanym punkcie kosztem co najwyżej O(n), gdzie n to liczba węzłów. 8. Niech macierz A ma n wierszy i m kolumn, przy czym n > m oraz wszystkie kolumny A są liniowo niezależne. Liniowe zadanie najmniejszych kwadratów 9. Polega na znalezieniu wektora x takiego, że Ax b 2 jest możliwie najmniejsza Zaleca się rozwiązywać korzystając z rozkładu QR macierzy A Można rozwiązywać korzystając z rozkładu Cholesky ego macierzy A T A, choć zwykle są lepsze sposoby. Złożona kwadratura trapezów polega na wyznaczeniu dokładnej wartości całki z liniowego splajnu interpolującego funkcję podcałkową Jeden krok metody siecznych polega na znalezieniu miejsca zerowego wielomianu interpolującego funkcję, której miejsca zerowego poszukujemy Algorytm FFT wyznacza wynik mnożenia zadanego wektora przez pewną macierz symetryczną 10. Dla zapamiętania macierzy rzadkiej wystarczy 2 N Z miejsc w pamięci, gdzie N Z to liczba niezerowych elementów macierzy. Format AIJ (inaczej: współrzędnych) wymaga dwóch tablic liczb całkowitych, każda długości N Z Macierz trójdiagonalną można traktować jako macierz rozrzedzoną 2
11. Jaki będzie wynik x, y wykonania poniższego fragmentu kodu: double j, k, x, y ; j = 1 e12 ; y = pow((1+ 1/ j ), j ) ; k = 1 e26 ; x = pow((1+ 1/ k ), k ) ; Funkcja double pow(double x, double y) zwraca liczbę x y. Wskazówka: lim n (1 + 1 n )n = e 2.71. x = 1, y = 1 x = 1, y 2.71 x 2.71, y 2.71 Section 2. Zadania (pół)otwarte, max. 30 pkt Uzupełnij wolne miejsca lub zapisz wymagane rozwiązania. W razie potrzeby skorzystaj z dodatkowej kartki, zaznaczając numer zadania, które tam rozwiązujesz. Każde prawidłowo rozwiązane zadanie jest warte 5 punktów. 1. W wyszukiwarce Google wykorzystuje się metodę potęgową dla znajdowania dominującej wartości własnej macierzy A + uu T, gdzie A jest zadaną macierzą rzadką, a u zadanym wektorem. Zapisz szczegółowy algorytm wykonujący tę metodę, wskazując, w których jego miejscach można byłoby skorzystać z procedur BLAS. Oceń jego koszt w zależności od rozmiaru macierzy. while not stop alpha = ddot(v,x); x = dgmv(a,x); x = daxpy(x,u,alpha); end while gdzie ddot iloczyn skalarny dwóch wektorów, dgmv mnożenie macierz-wektor, daxpy operacja Koszt oczywiście liniowy 2. Wymień przynajmniej dwa zadania numeryczne w których wykorzystuje się interpolację wielomianową: metoda siecznych (interpolacja Lagrange a wielom. stopnia 1), stycznych (wielomianem Hermite a stopnia 1), kwadratury interpolacyjne, aproksymacja funkcji 3. Podaj po jednym przykładzie zadania obliczeniowego: dobrze uwarunkowanego: Obliczenie sumy dwóch liczb tego samego znaku. Omawiane na wykładzie. źle uwarunkowanego 3
Rozwiązywanie układu równań liniowych z macierzą Hilberta dużego wymiaru. Omawiane na wykładzie. Krótko uzasadnij, że podane przykłady mają pożądane własności. 4. Wskaż trzy sytuacje, gdy do rozwiązywania równania nieliniowego lepiej stosować metodę bisekcji aniżeli metodę stycznych. Gdy funkcja nie jest różniczkowalna lub jej pochodna jest kosztowna w wyliczeniu Gdy nie znamy dobrego przybliżenia rozwiązania Gdy zero jest wielokrotne o nieparzystej krotności 5. Podaj wzór na przybliżoną wartość całki 1 0 x3 dx, korzystając z kwadratury prostokątów P (f), z kwadratury trapezów T (f): P (x 3 ) = (1/2) 3 T (x 3 ) = (0 + 1 3 )/2 = 1/2 Wykorzystaj różnicę między P (f) i T (f) do wyprowadzenia wzoru na estymator błędu popełnionego przez kwadraturę prostokątów. Skoro I P Ch 2 /24 oraz I T Ch 2 /12, to 2I 2P Ch 2 2P +T /12 T I, skąd I 3. Przy okazji: jest to akurat kwadratura Simpsona! Zatem estymator błędu dla P to I P T P 3. 6. Napisz w C procedurę, której parametrami będą m.in. macierz dwudiagonalna górna U oraz wektor f, rozwiązującą układ równań Ux = f. W komentarzach zaznacz, jak interpretujesz przekazywane parametry i jak zwracasz rozwiązanie. 4