You are on page 1of 5

ĆWICZENIE Nr 7

WYZNACZANIE NAWIĘKSZEJ WARTOŚCI WŁASNEJ METODĄ ITERACJI

Ax  x
gdzie:  - wartość własna macierzy kwadratowej A 
x- wektor własny macierzy kwadratowej A 
Liczba wartości i wektorów własnych równa się m (  1   2  ...   m )
Wartość  1 wyznacza się w procesie iteracji:
x(1)  A x(o )  A x;
x(2 )  A x(1)  A A x  A 2 x;

x(k )  A A k 1x  A k x;
x(k 1)  A A k x  A k 1x;

(1k)  x k , i=1,2,…,m.

Zakończenie procesu gdy: k1 1  k1  


x  x(o) m  0
Początek cyklu po i

x  Ax
 x
x  x / 
Tak
  m  

m  
Koniec cyklu po i

Wyprowadzenie
 ;x
Wyznaczenie największej wartości własnej przy pomocy MAKR
’PROGRAM OBLICZAJĄCY MAKSYMALNĄ WARTOŚĆ WŁASNĄ 'ILOCZYN MACIERZY I WEKTORA
Sub eigen() Function mult(a(), x() As Variant, n As Variant) As
Dim n, i, j As Integer Variant
Dim a(), x(), r() As Variant Dim i, j As Integer
Dim xm, xmax As Double Dim b() As Variant
n = Selection.Rows.Count ReDim b(n)
ReDim a(n, n), x(n), r(n) For i = 1 To n
b(i) = 0
'PODANIE MACIERZY WYJŚCIOWEJ For j = 1 To n
For i = 1 To n b(i) = b(i) + a(i, j) * x(j)
For j = 1 To n Next j
a(i, j) = Selection.Cells(i, j) Next i
Next j mult = b
Next i End Function
''''''’’’’’’’’’’’’’’’PRACUJEMY''''''’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
'Podanie wartości początkowych
xm = 0
For i = 1 To n: x(i) = 0: Next i: x(1) = 1
For i = 1 To 50 ' Cykl 50 powtórzeń
r = mult(a, x, n) 'PODPROGRAM NORMOWANIE
For j = 1 To n Sub norma(x(), xmax, n As Variant)
x(j) = r(j) Dim i, j As Integer
Next j Dim c As Double
Call norma(x, xmax, n) c=0
If (Abs((xm - xmax) / xmax) < 0.001) Then Exit For For i = 1 To n
xm = xmax c = c + (x(i) * x(i))
Next i 'koniec cyklu 50 powtórzeń Next i
’WYPROWADZENIE WYNIKÓW xmax = Sqr(c)
Selection.Cells(n + 5,1) = xm For i = 1 To n
For i = 1 To n x(i) = x(i) / xmax
Selection.Cells(n + 5+i-1,2) = x(i) Next i
Next i End Sub ' KONEC PODPROGRAMY
End Sub ’KONEC PROGRAMU
Wyznaczenie największej wartości własnej w programie EXCEL

UWAGA: Podczas stosowania formuł macierzowych np. „=Macierz.iloczyn( ; )” lub „=Macierz.odw( ; )”


stosujemy następującą kolejność:
1)Zaznaczamy obszar w którym chcemy otrzymać wynik mnożenia (np. 3x3 komórki)
2)Wpisujemy formułę np.: „Macierz.iloczyn( ; )”
3)Zamiast przycisku „Enter” wciskamy razem przyciski „Ctrl+Shift+Enter”
1.Wpisujemy macierz A (wariant N=0–patrz ostatnia strona) w zakres komórek A3:C5
2.Wpisujemy wektor początkowy X0 w zakres komórek E3-E5
3.Obliczamy wartości macierzy: A2; A3; …; A10 w komórkach odpowiednio: A10:C12 ; A14:C16 ; … ;
A42:C44 stosując formułę „=MACIERZ.ILOCZYN( ; )”
4.Wyznaczamy i-te przybliżenia wektora własnego X mnożąc macierze Ai przez wektor początkowy X.
W tym celu kolejno mnożymy A*X, A2*X, …, A10*X w komórkach odpowiednio: F3:F5; G3:G5; …;
O3:O5 stosując formułę „=MACIERZ.ILOCZYN( ; )”
5.W komórce E7 wpisujemy formułę „=PIERWIASTEK(E3^2+E4^2+E5^2)” i przeciągamy do O7.
6.W komórce F8 wpisujemy formułę „=F7/E7” a następnie przeciągamy do komórki O8
7.W komórce G9 wpisujemy formułę „=G3/F3” a następnie przeciągamy do komórki O9 otrzymując
kolejne przybliżenia wartości własnych λ
8.W komórce E11 przepisujemy wynik wartości własnej „=O9”, natomiast w komórce F11, F12 oraz
F13 normujemy wektor własny wpisując komendy odpowiednio: „=O3/O3”, „=O4/O3” oraz „=O5/O3”
9.Dokonujemy sprawdzenia: W komórkach O16:Q18 wpisujemy macierz (A-λI), w komórkach R16-R18
przepisujemy wektor własny z komórek F11-F13. Następnie w komórkach S16-S18 wpisujemy
formułę” =MACIERZ.ILOCZYN(O16:Q18;R16:R18)”

Warianty zadań 

You might also like