Zadanie z macierzami
-
- Użytkownik
- Posty: 11
- Rejestracja: 27 sty 2006, o 18:23
- Płeć: Mężczyzna
- Lokalizacja: Kielce
- Podziękował: 3 razy
Zadanie z macierzami
Proszę o pomoc w rozwiązaniu zadania:
Jeśli A jest macierzą symetryczną to jej największą co do wartości bezwzględnej wartość własną λ można otrzymać z następującej procedury iteracyjnej.
1. Wybieramy losowy wektor \(\displaystyle{ \vec{y}_{0}}\) i podstawiamy \(\displaystyle{ \vec{x}_{1}}\) := \(\displaystyle{ \frac{1}{|\vec{y}_{0}|} \vec{y}_{0}}\)
2. Kontynuujemy biorąc \(\displaystyle{ \vec{y}_{i} := A\vec{x}_{i}}\), \(\displaystyle{ \vec{x}_{i+1} := \frac{1}{|\vec{y}_{i}|} \vec{y}_{i}}\)
W granicy dostajemy \(\displaystyle{ A\vec{x}_{n}}\) ≈ λ\(\displaystyle{ \vec{x}_{n}}\)
Napisać program, który znajduje dominującą wartość własną i jej wektor własny dla macierzy:
a) \(\displaystyle{ \left[\begin{array}{ccc}6&4&4&1\\4&6&1&4\\4&1&6&4\\1&4&4&6\end{array}\right]}\)
b) \(\displaystyle{ \left[\begin{array}{ccc}2&1&3&4\\1&-3&1&5\\3&1&6&-2\\4&5&-2&-1\end{array}\right]}\)
poprzez wyznaczenie \(\displaystyle{ {x}_{50}}\).
Jeśli A jest macierzą symetryczną to jej największą co do wartości bezwzględnej wartość własną λ można otrzymać z następującej procedury iteracyjnej.
1. Wybieramy losowy wektor \(\displaystyle{ \vec{y}_{0}}\) i podstawiamy \(\displaystyle{ \vec{x}_{1}}\) := \(\displaystyle{ \frac{1}{|\vec{y}_{0}|} \vec{y}_{0}}\)
2. Kontynuujemy biorąc \(\displaystyle{ \vec{y}_{i} := A\vec{x}_{i}}\), \(\displaystyle{ \vec{x}_{i+1} := \frac{1}{|\vec{y}_{i}|} \vec{y}_{i}}\)
W granicy dostajemy \(\displaystyle{ A\vec{x}_{n}}\) ≈ λ\(\displaystyle{ \vec{x}_{n}}\)
Napisać program, który znajduje dominującą wartość własną i jej wektor własny dla macierzy:
a) \(\displaystyle{ \left[\begin{array}{ccc}6&4&4&1\\4&6&1&4\\4&1&6&4\\1&4&4&6\end{array}\right]}\)
b) \(\displaystyle{ \left[\begin{array}{ccc}2&1&3&4\\1&-3&1&5\\3&1&6&-2\\4&5&-2&-1\end{array}\right]}\)
poprzez wyznaczenie \(\displaystyle{ {x}_{50}}\).
- PawelJan
- Użytkownik
- Posty: 971
- Rejestracja: 18 sie 2005, o 12:11
- Płeć: Mężczyzna
- Lokalizacja: Oleszyce/Kraków
- Pomógł: 209 razy
Zadanie z macierzami
Przyjacielu, napisz dokładnie, w czym masz problem bo wątpię że tu będzie ktoś programy pisał...
Ostatnio zmieniony 28 sty 2006, o 21:11 przez PawelJan, łącznie zmieniany 1 raz.
-
- Użytkownik
- Posty: 11
- Rejestracja: 27 sty 2006, o 18:23
- Płeć: Mężczyzna
- Lokalizacja: Kielce
- Podziękował: 3 razy
Zadanie z macierzami
Ja się do tego zabrać? Na jaki temat szukać materiały. jakiej metody (numerycznej) użyć? Itp... Jak już będę wiedział jak to rozwiązać, to przedstawienie tego w excelu czy w pascalu (bo tak ma to być zrobione) nie będzie stanowiło raczej problemu.
- PawelJan
- Użytkownik
- Posty: 971
- Rejestracja: 18 sie 2005, o 12:11
- Płeć: Mężczyzna
- Lokalizacja: Oleszyce/Kraków
- Pomógł: 209 razy
Zadanie z macierzami
No specem od programowania to Ty powinieneś być, żeby metodę ustalić
My możemy pomóc np. w mnożeniu macierzowym Axi jeżeli go nie rozumiesz...
Hmm.. no to może zapiszę tak:
Masz macierze 4. stopnia, więc będziesz operował na 4 ich współrzędnych.
Startujesz od wybrania dowolnego wektora o czterech współrzędnych \(\displaystyle{ \vec{y}_{0}=(y^{1}_{0},y^{2}_{0},y^{3}_{0},y^{4}_{0})}\). Potem go normalizujesz, czyli jak masz napisane \(\displaystyle{ \vec{x}_{1}}\) := \(\displaystyle{ \frac{1}{|\vec{y}_{0}|} \vec{y}_{0}}\) jest to nic innego jak podzielenie tego wektora przez jego długość: \(\displaystyle{ |\vec{y}_{0}|=sqrt{(y^{1}_{0})^{2}+(y^{2}_{0})^{2}+(y^{3}_{0})^{2}+(y^{4}_{0})^{2}}}\)
Oznacza to, że każdą współrzędną wektora yo dzielisz przez tę liczbę powyżej. Otrzymujesz w ten sposób nowy wektor x1.
Teraz szukasz iloczynu A*x1, powstaje nowy wektor y1 o współrzędnych odpowiednio: pierwsza - jest sumą iloczynów elementów pierwszego wiersza macierzy przez odpowiednie współrzędne x1: dla Twej pierwszej macierzy masz \(\displaystyle{ y^{1}_{1}=6*x_{1}^{1}+ 4*x_{1}^{2}+4*x_{1}^{3}+1*x_{1}^{4}}\), analogicznie dla pozostałych współrzędnych wektora y1 kolejne wiersze macierzy.
Następnie znowu dzielisz wszystkie współrzędne wektora y1 przez jego długość, obliczoną analogicznym pierwiastkiem do tego powyżej, tylko wskaźnik dolny nie 0 lecz 1. No i lecisz od początku.
My możemy pomóc np. w mnożeniu macierzowym Axi jeżeli go nie rozumiesz...
Hmm.. no to może zapiszę tak:
Masz macierze 4. stopnia, więc będziesz operował na 4 ich współrzędnych.
Startujesz od wybrania dowolnego wektora o czterech współrzędnych \(\displaystyle{ \vec{y}_{0}=(y^{1}_{0},y^{2}_{0},y^{3}_{0},y^{4}_{0})}\). Potem go normalizujesz, czyli jak masz napisane \(\displaystyle{ \vec{x}_{1}}\) := \(\displaystyle{ \frac{1}{|\vec{y}_{0}|} \vec{y}_{0}}\) jest to nic innego jak podzielenie tego wektora przez jego długość: \(\displaystyle{ |\vec{y}_{0}|=sqrt{(y^{1}_{0})^{2}+(y^{2}_{0})^{2}+(y^{3}_{0})^{2}+(y^{4}_{0})^{2}}}\)
Oznacza to, że każdą współrzędną wektora yo dzielisz przez tę liczbę powyżej. Otrzymujesz w ten sposób nowy wektor x1.
Teraz szukasz iloczynu A*x1, powstaje nowy wektor y1 o współrzędnych odpowiednio: pierwsza - jest sumą iloczynów elementów pierwszego wiersza macierzy przez odpowiednie współrzędne x1: dla Twej pierwszej macierzy masz \(\displaystyle{ y^{1}_{1}=6*x_{1}^{1}+ 4*x_{1}^{2}+4*x_{1}^{3}+1*x_{1}^{4}}\), analogicznie dla pozostałych współrzędnych wektora y1 kolejne wiersze macierzy.
Następnie znowu dzielisz wszystkie współrzędne wektora y1 przez jego długość, obliczoną analogicznym pierwiastkiem do tego powyżej, tylko wskaźnik dolny nie 0 lecz 1. No i lecisz od początku.
-
- Użytkownik
- Posty: 11
- Rejestracja: 27 sty 2006, o 18:23
- Płeć: Mężczyzna
- Lokalizacja: Kielce
- Podziękował: 3 razy
Zadanie z macierzami
OK, widze, że excel nada się do tego najlepiej. Przeanalizuje to i spróbuje coś wykminić. Ewentualnie się jeszcze coś spytam.
-
- Użytkownik
- Posty: 11
- Rejestracja: 27 sty 2006, o 18:23
- Płeć: Mężczyzna
- Lokalizacja: Kielce
- Podziękował: 3 razy
Zadanie z macierzami
Przekazuje do zobaczenia/sprawdzenia wersje pierwszą:
Co ty na to? Początki dobre?
[ Dodano: Sob Sty 28, 2006 7:52 pm ]
Tak właściwie to ja mam tych obliczeń zrobić aż 50? To duzo roboty, bo to nie jest poprostu przeciągnięcie poprzednich wyników i automatyczna obliczenie...
Co ty na to? Początki dobre?
[ Dodano: Sob Sty 28, 2006 7:52 pm ]
Tak właściwie to ja mam tych obliczeń zrobić aż 50? To duzo roboty, bo to nie jest poprostu przeciągnięcie poprzednich wyników i automatyczna obliczenie...
-
- Użytkownik
- Posty: 11
- Rejestracja: 27 sty 2006, o 18:23
- Płeć: Mężczyzna
- Lokalizacja: Kielce
- Podziękował: 3 razy
Zadanie z macierzami
A jak podstawiłem macierz B to już tak pieknie to nie wygląda. Nie kończą się obliczenia przy ok. 20 kroku tak jak z macierzą A... W ogóle nię nie kończą. Widze, że jakoś się to zapętla.
Wektorem własnym będzie wartość y, która się powtarza po n-tym kroku?
A wartością pewnie |yn|, zgadza się?
Wektorem własnym będzie wartość y, która się powtarza po n-tym kroku?
A wartością pewnie |yn|, zgadza się?
- PawelJan
- Użytkownik
- Posty: 971
- Rejestracja: 18 sie 2005, o 12:11
- Płeć: Mężczyzna
- Lokalizacja: Oleszyce/Kraków
- Pomógł: 209 razy
Zadanie z macierzami
Tak, do tego się sprowadza wartość własna, ale wektor własny to Xn.
Co do wartości - no cóż, takie wychodzą, po 600. kroku się stabilizuje
Co do wartości - no cóż, takie wychodzą, po 600. kroku się stabilizuje