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

📄 powell.txt

📁 用VB实现的函数的极致和最优化 包括黄金分割搜索法、不用导数的布伦特法 用导数的布伦特法、多元函数的山单纯形法、多元函数的变尺度法等
💻 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 + -