作者tonk6Vs (一树)
看板Fortran
标题[问题] else if 输出值为0的问题
时间Mon Nov 21 17:40:13 2011
大家好
我是写Fortran的新手
因为老师要叫我写一个矩阵
之後要做对角化
但是有些项总是为0
例如HO(1,2,4)有输出值1
但是HO(1,4,2)却是0
想问各位前辈
我的问题错在哪里??
谢谢
以下是简化的程式码
program 111
parameter (na=100)
common /matrix_1/ H(na,na),
@ HO(na,na,na)
call matrix__
write(6,*)HO(1,2,4)
write(6,*)HO(1,4,2)
write(6,*)HO(2,4,2)
write(6,*)HO(3,4,2)
write(6,*)HO(4,4,2)
stop
end
subroutine matrix__
parameter (na=100)
common /matrix_1/ H(na,na),
@ HO(na,na,na)
do i=1,4
do j=i,4
ix=3*(i-1)+1
iy=3*(i-1)+2
iz=3*(i-1)+3
jx=3*(j-1)+1
jy=3*(j-1)+2
jz=3*(j-1)+3
do k=1,4
if(k.eq.i .and. k.eq.j) then
HO(k,ix,ix)=1
HO(k,iy,iy)=1
HO(k,iz,iz)=1
HO(k,ix,iy)=1
HO(k,ix,iz)=1
HO(k,iy,iz)=1
else if(k.ne.j .and. k.eq.i) then
HO(k,ix,jx)=1
HO(k,iy,jy)=1
HO(k,iz,jz)=1
HO(k,ix,jy)=1
HO(k,ix,jz)=1
HO(k,iy,jz)=1
HO(k,iy,jx)=1
else if(k.ne.i .and. k.eq.j) then
HO(k,ix,jx)=1
HO(k,iy,jy)=1
HO(k,iz,jz)=1
HO(k,ix,jy)=1
HO(k,ix,jz)=1
HO(k,iy,jz)=1
else if(k.ne.i .and. k.ne.j) then
HO(k,ix,jx)=1
HO(k,iy,jy)=1
HO(k,iz,jz)=1
HO(k,ix,jy)=1
HO(k,ix,jz)=1
HO(k,iy,jz)=1
endif
HO(k,jx,ix)=HO(k,ix,jx)
HO(k,jy,iy)=HO(k,iy,jy)
HO(k,jz,iz)=HO(k,iz,jz)
HO(k,jy,ix)=HO(k,ix,jy)
HO(k,jz,ix)=HO(k,ix,jz)
HO(k,jz,iy)=HO(k,iy,jz)
enddo
enddo
enddo
return
end
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.120.9.63
1F:→ callmei:你的指令好古老...竟然用了COMMON~@@ 11/22 00:49
2F:→ latinboy: 我觉得连你自己都不知道在写什麽了 用纸笔试算过程吧 11/22 00:57
3F:→ latinboy:在纸上用你的程式码"跑"看看会出现啥东西 跟你想的一样吗 11/22 00:58
4F:→ Semisphere:现在工作中在研究的程式码,几百个common...XD 11/22 09:20
5F:→ tonk6Vs:谢谢 我在试看看好了 老师也说我逻辑上有瑕疵 11/22 10:24
6F:推 loveviolin:其实可以不用sub+com 12/15 23:48