%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.