Nesesito ayuda con el metodo de potencias para sacar un valor caracteristico y su vector asociado de una matriz cuadrada en este caso es una de 3x3
https://es.m.wikipedia.org/wiki/Método_de_las_potencias
Edto ea lo que tengo pero por alguna razon no sigue asiendo interaciones
https://es.m.wikipedia.org/wiki/Método_de_las_potencias
Edto ea lo que tengo pero por alguna razon no sigue asiendo interaciones
Código (vb) [Seleccionar]
'Metodo de Potencias para encontrar
'el maximo valor caracteristico
'y su vector asociado
'Ingresando la siguiente matriz
'1 2 3
'4 5 6
'1 1 1
'Debe dar como resultado
'lambda 1 = 7.7720018727
'Vector asiciado:
'0.3860009363
'1.0000000000
'0.2046663546
'Pedir una matriz(a) 3 x 3 y la multiplica por otra matriz(b) aleatoria
'de 3 x 1 dando como resultado una matriz(c) de 3 x 1 dividir la matriz(c)
'entre el maximo de dicha matriz genrando otra matriz(d) de 3x1.calcular
'el error relativo q seria el numero maximo de la matriz(d) menos el
'numero maximo anterior si estes es menor a 0.0000000001 imprimir el
'ultimo valor maximo y la ultima matriz dividida
Dim A(50, 50) ,B(50, 50), c(50,50)
Dim n,i,j,k,nn,NuMax
wscript.echo "Ingrese Los Elementos De La Matriz A " & vbLf & ""
For i = 1 To 3
For j = 1 To 3
wscript.echo "Elemento", i, j
A(i, j) = Wscript.StdIn.ReadLine
Next
Next
'genera matriz aleatoria de ceros y unos
for i = 1 to 3
if i = 1 then
b(i,1) = 1
else
RAndomize()
b(i, 1) = Mid("01", Int(Rnd * 2) + 1, 1)
end if
next
do
'multiplica la matriz a*b y
'almacena el resultado en c
For i = 1 To 3
For j = 1 To 1
For k = 1 To 3
C(i, j) = C(i, j) + (A(i, k) * B(k, j))
next
Next
Next
'busca el valor mas grande
'en vector c
NuMax = c(1,1)
for i = 1 to 3
if c(i,1)>NuMax then
NuMax = c(i,1)
end if
next
'divide cada uno de los componentes
'del vector c entre el maximo de dicho vector
for i = 1 to 3
for j = 1 to 3
b(i,j) = c(i,j)/NuMax
next
next
'error:: numero maximo - el anterior
err = NuMax-err
if round(err,10) <0.000000001 then ' Si el error es menor a 0.000000001 termina e imprimeresultados
exit do
end if
loop
'para comprobar que lambda y el vector asociado esta bien
'multiplicar la matriz(a) ingesada y multiplicarla por
'la matriz resultante debe dar
'0
'0
'0
'MatrizOriginal * VectorAsociado = 0 ok
wscript.echo "Lambda1 = " & NuMax & vbLf & "Vector Asociado:" & vbLf & imprimir(b)
function Imprimir(c)
M = ""
For i = 1 To 3
For j = 1 To 1
M = M & C(i, j) & " "
Next
M = M & vbLf
Next
imprimir = M & vbLf
End function