Está en la página 1de 1

%Se realizo un programa en matlab debido a la facilidad de definicion de

%matrices como: Matriz unitaria, inversa, triangular, entre otras.


n=input('Ingrese la dimension de la matriz: ');
[X,D]=eig(randn(n)); %D es una matriz diagonal en la cual se
%encuentran sus valores propios. Esta
%se genera aleatoriamente.
Y=randn(n)+ randn(n)*i;
for i=1:n %Con Y y D se formara la diagonal.
for j=1:n
if i==j
Y(i,j)=0;
end
end
end
T=triu(D+Y); %T es una matriz triangular superior cuya diagonal
disp('La matriz triangular es: '), T; %tiene los valores propios.
V=randn(n); %Matriz arbitraria para aplicar la transformacion
%de similitud simple a T.
flag=1;
while flag
T=inv(V)*T*V; %Aplicamos la transformacion de similitud simple
for i=1:n %sobre T hasta que se agreguen unos 0’s por sobre
for j=i+1:n %la diagonal.
if T(i,j)<0.005 && T(i,j)<0.005i
flag=0; %Se verifica que el valor de alguna entrada
end %superior a la diagonal sea cercano a cero.
end
end
end
I=eye(n); %Se crea la matriz identidad.
flag1=1;
while flag1
r=input('Ingrese el valor de r: '); %Se ingresan valores de r y s que hacen
s=input('Ingrese el valor de s: '); %referencia a una posicion en la matriz Ers
if r<=n && s<=n && r>=1 && s>=1 %creada posteriormente.
flag1=0;
else
disp('Valores de r y s deben ser menores o iguales que'),n;
disp('Y mayores o iguales que 1');
end
end
a=input('Ingrese el valor de alfa: ');
Ers=zeros(n); Ers(r,s)=1;
Ers1=I+a*Ers; Ers2=I-a*Ers;
Tprim=Ers2*T*Ers1; %Se crea una nueva matriz Tprim
if Tprim(r,s) == T(r,s)
Tprim(r,s)=0;
for i=1:n %Si las entradas Tprim(r,s) y T(r,s) son iguales,
for j=i+1:n %Tprim(r,s) se hace 0, al igual que todas sus
A(i,j)=0; %entradas por sobre la diagonal principal.
end
end
end
Tprim, T %Se chequean Tprim y T para ver similitudes.

También podría gustarte