Professional Documents
Culture Documents
L7 WiWWłasne2
L7 WiWWłasne2
Ax 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 1x A k x;
x(k 1) A A k x A k 1x;
(1k) x k , i=1,2,…,m.
x Ax
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
Warianty zadań