求matlab高手解决
t=-2.8;A=zeros(8,8);a=zeros(8,8);B=zeros(8,8);b=zeros(8,8);
H1=[0,t,0,0,0,0,0,0;
t,0,t,0,0,0,0,0;
0,t,0,t,0,0,0,0;
0,0,t,0,t,0,0,0;
0,0,0,t,0,t,0,0;
0,0,0,0,t,0,t,0;
0,0,0,0,0,t,0,t;
0,0,0,0,0,0,t,0;];
H2=[0,0,0,0,0,0,0,0;
t,0,0,0,0,0,0,0;
0,0,0,t,0,0,0,0;
0,0,0,0,0,0,0,0;
0,0,0,0,0,0,0,0;
0,0,0,0,t,0,0,0;
0,0,0,0,0,0,0,t;
0,0,0,0,0,0,0,0;];
c=H2';d=H1';
I=[1,0,0,0,0,0,0,0;
0,1,0,0,0,0,0,0;
0,0,1,0,0,0,0,0;
0,0,0,1,0,0,0,0;
0,0,0,0,1,0,0,0;
0,0,0,0,0,1,0,0;
0,0,0,0,0,0,1,0;
0,0,0,0,0,0,0,1];
for e=-2.5:0.1:2.5
E=e+0.001i;
H=E*I-H1;
h=inv(H);
m=h*c;
n=h*H2;
while m>0.001&n>0.001
m1=inv(I-m*n-n*m)*m*m;
n1=inv(I-m*n-n*m)*n*n;
a=m1;
b=n1;
A=m+n*a;
B=n+m*b;
m=m1;
n=n1;
end
m
A
B
gl=inv(E*I-H1-c*B);
gr=inv(E*I-H1-H2*A);
XL=d*gl*H1;
XR=H2*gr*c;
G1=inv(E*I-H1-XL-XR);
YL=i*(XL-XL');
YR=i*(XR-XR');
T=trace(YL*G1*YR*G1')
plot(E,T,'.');
hold on
end
其中,m可以循环,为什么A和B不循环?
追问:谢谢回答,但是我用norm函数时会出现NORM(X,P) is available for matrix X only if P is 1, 2, inf or 'fro'.
norm函数是用于向量的,不能用于矩阵。应当用max(max(x)),min(min(x))求矩阵x的最大或最小元素。但是上面的程序还是有问题,应该是循环中的,麻烦你帮忙看看。谢谢!谢谢回答,你觉得应该怎么改,麻烦帮忙改一下,顺便看一下循环中有没有问题。谢谢!