?? prp.for
字號(hào):
SUBROUTINE PRP(X,Y,FY,GX,N,IMOS,ICOVG,TL,IT)
DIMENSION X(N),Y(N),GX(N),S(20),DELG(20)
IF(IT.GT.0) GO TO 151
TL=0.0001
151 ITER=0
ICOVG=0
ER1=0.01
ER2=0.001
ET1=0.001
ET2=0.001
IRESET=N+1
INDEX=IRESET
CALL OBF(X,FX)
CALL DER(X,GX)
GXN=0.0
DO 2 I=1,N
DELG(I)=-GX(I)
2 GXN=GXN+GX(I)*GX(I)
GXN=SQRT(GXN)
1 IF(GXN.LE.TL) GO TO 60
IF(ITER.GE.IMOS) GO TO 80
IF(INDEX.NE.IRESET) GO TO 90
5 INDEX=0
DO 10 I=1,N
S(I)=DELG(I)
10 GX(I)=S(I)
130 TD=ET2*GXN
IF(TD.LT.ET1) GO TO 21
TD=ET1
21 CALL DSCPOW(X,FX,Y,FY,GX,GX,N,2,TD,1,ITER,IEX)
IF(IEX.NE.1) GO TO 31
ICOVG=-1
RETURN
31 ITER=ITER+1
INDEX=INDEX+1
CALL DER(Y,GX)
GXN0=GXN
GXN=0.0
GXL=0.0
DO 50 I=1,N
GXL=GXL+(GX(I)+DELG(I))*GX(I)
DELG(I)=-GX(I)
GXN=GXN+GX(I)*GX(I)
50 X(I)=Y(I)
FX=FY
GXN=SQRT(GXN)
GO TO 1
90 R=GXL/(GXN0*GXN0)
SN=0.0
GS=0.0
DO 51 I=1,N
S(I)=DELG(I)+R*S(I)
SN=SN+S(I)*S(I)
GS=GS+GX(I)*S(I)
51 GX(I)=S(I)
SN=SQRT(SN)
ER=ER2*GXN
IF(ER1.GT.ER) GO TO 52
ER=ER1
52 IF(GS.GT.-ER*GXN*SN) GO TO 5
GO TO 130
60 ICOVG=1
80 RETURN
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -