Metody numeryczne - laboratorium, część 3
Transkrypt
Metody numeryczne - laboratorium, część 3
Metody numeryczne - laboratorium, część 3 1 Rozwiązywanie układów liniowych 1. Zaprogramuj funkcję zwracającą macierz An [diag] 2 −1 0 0 −1 2 −1 0 0 −1 2 . . . An = .. .. 0 . . 0 0 0 0 −1 0 0 0 0 w zależności od wymiaru n 0 0 0 −1 2 −1 0 0 0 0 −1 2 (1) 2. Zaprogramuj funkcję zwracającą macierz An w postaci rzadkiej. [sparse] 3. Zaprogramuj funkcje rozwiązujące układy równań Ax = f z dowolną macierzą A i prawą stroną f : (a) metodą x = A−1 f , [inv] (b) używając operatora \, (c) metodą LU, używając \ do rozwiązywania układów z macierzami trójkątnymi. [lu,matrix type] 4. Wykonaj funkcję, która dla danego A i f rozwiąże układ Ax = f każdą z tych trzech metod. Funkcja ma wyświetlić czas działania każdej metody oraz normę uzyskanego residuum kAx − f k2 . [tic, toc] 5. Porównaj czasy rozwiązywania układu równań An x = f dla n > 100 z gęstą postacią macierzy A i dowolnie wybraną prawą stroną. Uzyskaj odpowiedzi na poniższe pytania: (a) Która metoda daje największy błąd? (b) Jaka jest złożoność czasowa każdej z metod w zależności od parametru n? (c) Z czego wynikają takie złożoności czasowe? (d) Jakie jest największe n, dla jakiego można wykonać obliczenia każdą metodą? 6. Powtórz powyższe zadanie używając losowo wygenerowanych macierzy. [rand] 1 7. Porównaj czasy rozwiązywania układu równań An x = f dla n > 100 z rzadką postacią macierzy A i dowolnie wybraną prawą stroną. Uzyskaj odpowiedzi na poniższe pytania: (a) Jaka jest złożoność czasowa każdej z metod w zależności od parametru n? (b) Z czego wynikają takie złożoności czasowe? (c) Jakie jest największe n, dla jakiego można wykonać obliczenia każdą metodą? 2