📄 bandec.for
字号:
SUBROUTINE bandec(a,n,m1,m2,np,mp,al,mpl,indx,d)
INTEGER m1,m2,mp,mpl,n,np,indx(n)
REAL d,a(np,mp),al(np,mpl),TINY
PARAMETER (TINY=1.e-20)
INTEGER i,j,k,l,mm
REAL dum
mm=m1+m2+1
if(mm.gt.mp.or.m1.gt.mpl.or.n.gt.np) pause 'bad args in bandec'
l=m1
do 13 i=1,m1
do 11 j=m1+2-i,mm
a(i,j-l)=a(i,j)
11 continue
l=l-1
do 12 j=mm-l,mm
a(i,j)=0.
12 continue
13 continue
d=1.
l=m1
do 18 k=1,n
dum=a(k,1)
i=k
if(l.lt.n)l=l+1
do 14 j=k+1,l
if(abs(a(j,1)).gt.abs(dum))then
dum=a(j,1)
i=j
endif
14 continue
indx(k)=i
if(dum.eq.0.) a(k,1)=TINY
if(i.ne.k)then
d=-d
do 15 j=1,mm
dum=a(k,j)
a(k,j)=a(i,j)
a(i,j)=dum
15 continue
endif
do 17 i=k+1,l
dum=a(i,1)/a(k,1)
al(k,i-k)=dum
do 16 j=2,mm
a(i,j-1)=a(i,j)-dum*a(k,j)
16 continue
a(i,mm)=0.
17 continue
18 continue
return
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -