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

📄 form1.frm

📁 复合形法求最大值法法求最大值求最大值法求最大值法求最大值
💻 FRM
字号:
VERSION 5.00
Begin VB.Form Form1 
   Caption         =   "Form1"
   ClientHeight    =   3090
   ClientLeft      =   60
   ClientTop       =   450
   ClientWidth     =   4680
   LinkTopic       =   "Form1"
   ScaleHeight     =   3090
   ScaleWidth      =   4680
   StartUpPosition =   3  '窗口缺省
   Begin VB.CommandButton Command1 
      Caption         =   "复合型法"
      Height          =   855
      Left            =   1800
      TabIndex        =   0
      Top             =   1560
      Width           =   1335
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Command1_Click()
'定义变量
Dim y(1 To 4), z(1 To 4), yc, ya As Single
Dim i, j, m As Integer
Dim delta As Single
Dim x(1 To 4, 1 To 2), xh(1 To 4, 1 To 2), xs(1 To 4, 1 To 2), xc(1 To 1, 1 To 2), x0(1 To 1, 1 To 2), xa(1 To 1, 1 To 2) As Single
e = 10 ^ (-5): a = 1.3


 '求得f(x)的值
x(1, 1) = 1: x(1, 2) = 5.5: x(2, 1) = 1: x(2, 2) = 4: x(3, 1) = 2: x(3, 2) = 6.4: x(4, 1) = 3: x(4, 2) = 3.5
Do
For i = 1 To 4
 y(i) = 60 - 10 * x(i, 1) - 4 * x(i, 2) + x(i, 1) ^ 2 + x(i, 2) ^ 2 - x(i, 1) * x(i, 2)
 z(i) = 60 - 10 * x(i, 1) - 4 * x(i, 2) + x(i, 1) ^ 2 + x(i, 2) ^ 2 - x(i, 1) * x(i, 2)
Next i
n = 4: t = 0                                                                                             '求得最差点xh,次差点xs
For i = 1 To n - 1
 For j = n To i + 1 Step -1
     If z(j) < z(j - 1) Then
     t = z(j)
     z(j) = z(j - 1)
     z(j - 1) = t
     End If
 Next j
Next i
For i = 1 To 4
 If y(i) = z(4) Then xh(i, 1) = x(i, 1): xh(i, 2) = x(i, 2): m = i
 If y(i) = z(3) Then xs(i, 1) = x(i, 1): xs(i, 2) = x(i, 2)
Next i
sum1 = 0: sum2 = 0                                                                                    '求得中心点
For i = 1 To 4
 sum1 = x(i, 1) + sum1
 sum2 = x(i, 2) + sum2
Next i
xc(1, 1) = sum1 / 4
xc(1, 2) = sum2 / 4
yc = 60 - 10 * xc(1, 1) - 4 * xc(1, 2) + xc(1, 1) ^ 2 + xc(1, 2) ^ 2 - xc(1, 1) * xc(1, 2)
Sum = 0                                                                                                   '△的停机准则
For i = 1 To 4
 Sum = Sum + (yc - y(i)) ^ 2
Next i
delta = (Sum / 4) ^ 0.5
If delta < e Then Exit Do
sum1 = 0: sum2 = 0: x(m, 1) = 0: x(m, 2) = 0
For i = 1 To 4
 sum1 = sum1 + x(i, 1)
 sum2 = sum2 + x(i, 2)
Next i
x0(1, 1) = 1 / 3 * sum1
x0(1, 2) = 1 / 3 * sum2
Do
xa(1, 1) = x0(1, 1) + a * (x0(1, 1) - xh(1, 1))                                                              '检查xa的可行性
xa(1, 2) = x0(1, 2) + a * (x0(1, 2) - xh(1, 2))
ya = 60 - 10 * xa(1, 1) - 4 * xa(1, 2) + xa(1, 1) ^ 2 + xa(1, 2) ^ 2 - xa(1, 1) * xa(1, 2)
If (-xa(1, 1) - xa(1, 2) + 11) >= 0 And xa(1, 1) >= 0 And xa(1, 1) <= 6 And xa(1, 2) >= 0 And xa(1, 2) <= 8 And ya < z(4) Then
     Exit Do
Else
     a = a / 2
End If
Loop Until a < 10 ^ (-5)
x(m, 1) = xa(1, 1)
x(m, 2) = xa(1, 2)
Loop
n = 4
For i = 1 To n - 1
 For j = n To i + 1 Step -1
     If y(j) < y(j - 1) Then
     t = y(j)
     y(j) = y(j - 1)
    y(j - 1) = t
     End If
 Next j
Next i
Print y(1)
End Sub

⌨️ 快捷键说明

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