-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAlgoritmo1_problema_p2.m
44 lines (36 loc) · 1 KB
/
Algoritmo1_problema_p2.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
% Algoritmo 1: Algoritmo para (p2), Grupo Ledesma,Repetto,Porcal,Rocha
%clearvars %limpiamos variables
valido = 0
encontro = 0
noencontro = 0
Iteraciones = 0
epsilon = 10^(-10) %epsilon maquina
Dx = [(rand-(1/3))*100,(rand-(1/3))*100,(rand-(1/3))*100,(rand-(1/3))*100] %Vector lambda
Dx = sort(Dx,'descend')
Y = rand(length(Dx)) %Matriz Random Y positiva
Y = Y+Y' %Hace simetrica Y
do
Iteraciones = Iteraciones+1;
[autovec,autoval]=eig(Y)
[autoval,perm] = sort(diag(autoval),'descend')
autovec=autovec(:,perm)
Vy = autovec
Vyt = Vy'
X = Vy*diag(Dx)*Vyt
X = ((0.5)*(X + X'))
Y = X
Y(Y<0)=0
until (norm((X-Y),"fro") < epsilon) | (Iteraciones > 1000)
if (Iteraciones <= 1000)
encontro = encontro + 1
else
noencontro = noencontro + 1
endif
printf("========================================================\n")
Vectorlambda = Dx
Iteraciones
X
Y
encontro
AutovaloresRespuesta = eig(Y)
printf("========================================================\n")