%%
%计算复矩阵的特征值迭代
function fu=complexdiedai(A)
B=A;
A=haisenbo(A);
n=length(A);
a=B'-B;
b=norm(a,inf);
cha=B(n,1)-B(1,n);
if b<=1e-6 && cha<1e-6
T=eig(A([n-1:n],[n-1:n]));
else
s=A(n-1,n-1)+A(n,n);
t=A(n-1,n-1)*A(n,n)-A(1,n-1)+A(n-1,n);
T=roots([-1 s -t]);
end
u1=T(1);
u2=T(2);
epp=10;
eigvalue=zeros(n,1);
while(epp>1e-4)
HP=A;
B=A-u1*eye(n);
[Q1 R1]=Givens(B);
C=R1*Q1+u1*eye(n);
C=C-u2*eye(n);
[Q2 R2]=Givens(C);
DP=R2*Q2+u2*eye(n);
A=DP;
epp=0;
for i=2:n
epp=abs(A(i,i-1)-HP(i,i-1));
end
end
j=2;
k=1;
A
while(j<=n)
if abs(A(j,j-1))>1e-2
e=eig(A([j-1:j],[j-1:j]));
j=j+2;
eigvalue(k)=e(1);
k=k+1;
eigvalue(k)=e(2);
k=k+1;
elseif abs(A(j,j-1))<=1e-2
w=A(j-1,j-1);
eigvalue(k)=w;
j=j+1;
k=k+1;
end
if abs(A(n,n-1))<=1e-4
eigvalue(n)=A(n,n);
end
end
disp('特征值为:');
fu=eigvalue;