📄 powell.txt
字号:
Sub POWELL(P(), XI(), N, NP, FTOL, ITER, FRET)
ITMAX = 200
Dim PT(20), PTT(20), XIT(20)
FRET = FUNC2(P(), N)
For J = 1 To N
PT(J) = P(J)
Next J
ITER = 0
Do
Do
Do
ITER = ITER + 1
FP = FRET
IBIG = 0
DEL = 0#
For I = 1 To N
For J = 1 To N
XIT(J) = XI(J, I)
Next J
FPTT = FRET
Call LINMIN(P(), XIT(), N, FRET)
If Abs(FPTT - FRET) > DEL Then
DEL = Abs(FPTT - FRET)
IBIG = I
End If
Next I
If 2# * Abs(FP - FRET) <= FTOL * (Abs(FP) + Abs(FRET)) Then
Erase XIT, PTT, PT
Exit Sub
End If
If ITER = ITMAX Then
Print " POWELL exceeding maximum iterations"
Exit Sub
End If
For J = 1 To N
PTT(J) = 2# * P(J) - PT(J)
XIT(J) = P(J) - PT(J)
PT(J) = P(J)
Next J
FPTT = FUNC2(PTT(), N)
Loop While FPTT >= FP
DUM = FP - 2 * FRET + FPTT
T = 2# * DUM * (FP - FRET - DEL) ^ 2 - DEL * (FP - FPTT) ^ 2
Loop While T >= 0#
Call LINMIN(P(), XIT(), N, FRET)
For J = 1 To N
XI(J, IBIG) = XIT(J)
Next J
Loop
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -