📄 form1.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 + -