黄金分割法黄金分割法
在进退法的基础上增加以下程序:
Private Sub HJfgf(X0() As Double, S() As Double, A As Double, B As Double, epslf As Double,
epslx As Double, n As Integer, aBest As Double, fmin As Double, x() As Double) '(黄金分割法子程序)
Const Q = 0.618
Dim j As Integer, i As Integer
Di...
黄金分割法
在进退法的基础上增加以下程序:
Private Sub HJfgf(X0() As Double, S() As Double, A As Double, B As Double, epslf As Double,
epslx As Double, n As Integer, aBest As Double, fmin As Double, x() As Double) '(黄金分割法子程序)
Const Q = 0.618
Dim j As Integer, i As Integer
Dim A1 As Double, A2 As Double
Dim f1 As Double, f2 As Double
' Dim x() As Double
' ReDim x(n)
j = 0
Do
j = j + 1
A1 = B - Q * (B - A)
For i = 1 To n
x(i) = X0(i) + A1 * S(i)
Next i
f1 = F(x())
A2 = A + Q * (B - A)
For i = 1 To n
x(i) = X0(i) + A2 * S(i)
Next i
f2 = F(x())
Do
If f1 > f2 Then
A = A1
A1 = A2
f1 = f2
A2 = A + Q * (B - A)
For i = 1 To n
x(i) = X0(i) + A2 * S(i)
Next i
f2 = F(x())
Else
B = A2
A2 = A1
f2 = f1
A1 = B - Q * (B - A)
For i = 1 To n
x(i) = X0(i) + A1 * S(i)
Next i
f1 = F(x())
End If
j = j + 1
If j > 50 Then Exit Do
Loop Until Abs((f2 - f1) / f2) <= epslf
If Abs((A2 - A1) / A1) > epslx Then
A = A1
B = A2
End If
Loop Until Abs((A2 - A1) / A1) <= epslx
If f1 < f2 Then
aBest = A1
fmin = f1
Else
aBest = A2
fmin = f2
End If
For i = 1 To n
x(i) = X0(i) + aBest * S(i) Next i
End Sub
Private Sub cmdHJ_click() '(主程序)
Dim T0 As Double
Dim epslf As Double, epslx As Double
Dim aBest As Double
Dim fmin As Double
Dim x() As Double
Dim i As Integer
n = 2
ReDim X0(1 To n), x(1 To n) ReDim S(1 To n)
X0(1) = 2
X0(2) = 2
S(1) = 0.707
S(2) = 0.707
epslf = 0.001
epslx = 0.001
T0 = 1
kf = 0
Call JinTui(X0, S, n, T0, A, B) MsgBox "A=" & A & "B=" & B & "kf=" & kf
Call HJfgf(X0, S, A, B, epslf, epslx, n, aBest, fmin, x)
MsgBox "aBest=" & aBest & "fmin=" & fmin & "kf=" & kf For i = 1 To n
MsgBox "x(" & i & ")=" & x(i)
Next i
End Sub
本文档为【黄金分割法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。