⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 powell.for

📁 POWELL方法数值计算源代码
💻 FOR
字号:
	SUBROUTINE POWELL(X,Y,FY,N,IMOS,ICOVG,XT,FT,IT)
	DIMENSION X(N),Y(N),DIR(20,20),S(20),W(20),BEF(20)
	ITER=0
	IF(IT.GT.0) GO TO 101
	XT=0.001
	FT=0.001
101	ICOVG=0
	N1=N-1
	TD=FT*0.1
	DO 2 I=1,N
	DO 1 J=1,N
1	DIR(I,J)=0.0
2	DIR(I,I)=1.0
	CALL OBF(X,FX)
	STEP=1.0
102	IF(ITER.EQ.IMOS) GO TO 22
	DO 4 I=1,N
4	BEF(I)=X(I)
	F1=FX
	SUM=0.0
	DO 9 I=1,N
	DO 5 J=1,N
5	S(J)=DIR(J,I)
	CALL DSCPOW(X,FX,Y,FY,S,S,N,2,TD,1,ITER,IEX)
	IF(IEX.EQ.1) GO TO 21
	A=FX-FY
	IF(A-SUM)7,7,6
6	ISUM=I
	SUM=A
7	DO 8 J=1,N
8	X(J)=Y(J)
9	FX=FY
	F2=FX
	DO 10 I=1,N
10	W(I)=X(I)-BEF(I)
	CALL DSCPOW(X,FX,Y,FY,W,W,N,2,TD,1,ITER,IEX)
	IF(IEX.EQ.1) GO TO 21
	DO 41 I=1,N
	IF(W(I).EQ.0) GO TO 41
	ALPH=ABS(Y(I)-X(I)/W(I))
	GO TO 42
41	CONTINUE
42	IF(ALPH+1.-SQRT((F1-FY)/SUM))49,12,12
12	IF(ISUM-N)13,15,15
13	DO 14 I=ISUM,N1
	I1=I+1
	DO 14 J=1,N
14	DIR(J,I)=DIR(J,I1)
15	A=0.0
	DO 16 J=1,N
	DIR(J,N)=X(J)-BEF(J)
16	A=DIR(J,I)**2+A
	A=1.0/SQRT(A)
	DIR(J,N)=DIR(J,N)*A
17	S(J)=DIR(J,N)
49	FX=FY
	DO 18 I=1,N
18	X(I)=Y(I)
	ITER=ITER+1
19	IF(ABS(F1-FX).GT.(ABS(F1)+1.)*FT) GO TO 102
	DO 20 I=1,N
	IF(ABS(BEF(I)-X(I)).GT.(ABS(BEF(I))+1.)*XT) GO TO 102
20	CONTINUE
	ICOVG=1
	GO TO 23
21	ICOVG=-1
	GO TO 23
22	ICOVG=0
23	CONTINUE
	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -