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