📄 tisco1.m
字号:
Y( p,q) =Y( p,q) -1./( B1( i,3) *B1( i,5) ) ;
Y( q,p) =Y( p,q) ;
Y( q,q) =Y( q,q) +1./B1( i,3) +B1( i,4) ./2;
end
G =real( Y ) ;
B=im ag( Y ) ;
for i=1:n
e( i) =real( B2( i,3) ) ;
f( i) =im ag( B2( i,3) ) ;
S( i) =B2( i,1) -B2( i,2) ;
V( i) =B2( i,3) ;
end
P=real( S) ;
Q =im ag( S) ;
[ C ,D ,D F ] =xxf( G ,B ,e,f,P ,Q ,n,B2,ph,V ,no) ;
J=jacci( Y ,G ,B ,P ,Q ,e,f,V ,C ,D ,B2,n,ph,no) ;
[ D e,D f] =hxf( J,D F,ph,n,no) ;
t=0;
while
m ax( abs( D e) ) >ip& m ax( abs( D f) ) >ip
t=t+1;
e=e+D e;
f=f+D f;
[ C ,D ,D F] =xxf( G ,B ,e,f,P,Q ,n,B2,ph,V ,no) ;
J=jacci( Y ,G ,B ,P,Q ,e,f,V ,C ,D ,B2,n,ph,no) ;
[ D e,D f] =hxf( J,D F ,ph,n,no) ;
end
v=e'+f'*j;
for i=1:n
hh( i) =conj( Y( ph,i) *v( i) ) ;
end
S( ph) =sum( hh) *v( ph) ;
B2( ph,1) =S( ph) ;
V =abs( v) ;
jd=angle( v) *180/pi;
result1=[ A( :,1) ,real( v) ,im ag( v) ,V ,jd,real( S.') ,
im ag( S.') ,real( B2( :,1) ) ,im ag( B2( :,1) ) ,real
( B2( :,2) ) ,im ag( B2( :,2) ) ] ;
for i=1:m
a( i) =conj( ( v( B1( i,1) ) /B1( i,5) -v( B1( i,
2) ) ) /B1( i,3) ) ;
b( i) =v( B1( i,1) ) *a( i) -j*B1( i,4) *v( B1( i,
1) ) ^2/2;
c( i) =-v( B1( i,2) ) *a( i) -j*B1( i,4) *v( B1
( i,2) ) ^2/2;
end
result2=[ B1( :,6) ,B1( :,1) ,B1( :,2) ,real( b.') ,im ag
( b.') ,real( c.') ,im ag( c.') ,real( b.'+c.') ,im ag
( b.'+c.') ] ;
printout( t,result1,S,b,c,result2) ;
type result.m
function
[ C,D ,D F] =xxf( G ,B,e,f,P,Q ,n,B2,ph,V ,no)
% 该子程序是用来求取D F
for i=1:n
if i~=ph
C( i) =0;
D( i) =0;
for j=1:n
C( i) =C( i) +G( i,j) *e( j) -B( i,j) *f( j) ;
D( i) =D( i) +G( i,j) *f( j) +B( i,j) *e( j) ;
end
P1=C( i) *e( i) +D( i) *f( i) ;
Q 1=C( i) *f( i) -D( i) *e( i) ;
V 1=e( i) ^2+f( i) ^2;
if B2( i,4) ==2
p=2*i-1;
D F( p) =P( i) -P1;
p=p+1;
D F( p) =V( i) ^2-V 1^2;
else
p=2*i-1;
D F( p) =P( i) -P1;
p=p+1;
D F( p) =Q( i) -Q 1;
end
end
end
D F=D F';
if ph~=n
D F( no,:) =[ ] ;
D F( no,:) =[ ] ;
end
function [ D e,D f] =hxf( J,D F,ph,n,no)
% 该子函数是为求取D e D f
D X =J\D F;
D X 1=D X ;
x1=length( D X 1) ;
if ph~=n
D X( no) =0;
D X( no+1) =0;
for i=( no+2) :( x1+2)
D X( i) =D X 1( i-2) ;
end
else
D X =[ D X 1,0,0] ;
end
k=0;
[ x,y] =size( D X ) ;
for i=1:2:x
k=k+1;
D f( k) =D X( i) ;
D e( k) =D X( i+1) ;
end
function
J=jacci( Y ,G ,B,P,Q ,e,f,V ,C,D ,B2,n,ph,no)
% 该子程序是用来求取jacci矩阵
for i=1:n
switch B2( i,4)
case 3
continue
case 1
for j=1:n
if j- =i& j- =ph
X 1=G( i,j) *f( i) -B( i,j) *e( i) ;
X 2=G( i,j) *e( i) +B( i,j) *f( i) ;
X 3=-X 2;
X 4=X 1;
p=2*i-1;
q=2*j-1;
J( p,q) =X 1;
m =p+1;
J( m ,q) =X 3;
q=q+1;
J( p,q) =X 2;
J( m ,q) =X 4;
else if j==i& j~=ph
X 1=D( i) +G( i,i) *f( i) -B( i,i) *e( i) ;
X 2=C( i) +G( i,i) *e( i) +B( i,i) *f( i) ;
X 3=C( i) -G( i,i) *e( i) -B( i,i) *f( i) ;
X 4=-D( i) +G( i,i) *f( i) -B( i,i) *e( i) ;
p=2*i-1;
q=2*j-1;
J( p,q) =X 1;
m =p+1;
J( m ,q) =X 3;
q=q+1;
J( p,q) =X 2;
J( m ,q) =X 4;
end
end
end
case 2
for j=1:n
if j~=i& j~=ph
X 1=G( i,j) *f( i) -B( i,j) *e( i) ;
X 2=G( i,j) *e( i) +B( i,j) *f( i) ;
X 3=0;
X 4=0;
p=2*i-1;
q=2*j-1;
J( p,q) =X 1;
m =p+1;
J( m ,q) =X 3;
q=q+1;
J( p,q) =X 2;
J( m ,q) =X 4;
else if j==i& j~=ph
X 1=D( i) +G( i,i) *f( i) -B( i,i) *e( i) ;
X 2=C( i) +G( i,i) *e( i) +B( i,i) *f( i) ;
X 3=0;
X 4=0;
p=2*i-1;
q=2*j-1;
J( p,q) =X 1;
m =p+1;
J( m ,q) =X 3;
q=q+1;
J( p,q) =X 2;
J( m ,q) =X 4;
end
end
end
end
end
if ph~=n
J( no,:) =[ ] ;
J( no,:) =[ ] ;
J( :,no) =[ ] ;
J( :,no) =[ ] ;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -