📄 form1.frm
字号:
VERSION 5.00
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 2985
ClientLeft = 60
ClientTop = 450
ClientWidth = 4395
LinkTopic = "Form1"
ScaleHeight = 2985
ScaleWidth = 4395
StartUpPosition = 3 '窗口缺省
Begin VB.Frame Frame1
Height = 2655
Left = 120
TabIndex = 0
Top = 120
Width = 4095
Begin VB.TextBox Text3
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 270
Left = 1680
TabIndex = 5
Top = 2040
Width = 1095
End
Begin VB.TextBox Text2
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Left = 1680
TabIndex = 4
Top = 1320
Width = 1095
End
Begin VB.TextBox Text1
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Left = 1680
TabIndex = 3
Top = 960
Width = 615
End
Begin VB.TextBox Text4
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 270
Left = 1680
TabIndex = 2
Top = 1680
Width = 1095
End
Begin VB.TextBox Text5
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 270
Left = 2880
TabIndex = 1
Top = 2040
Width = 1095
End
Begin VB.Label Label1
Caption = "迭代次数"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Index = 1
Left = 240
TabIndex = 10
Top = 960
Width = 1215
End
Begin VB.Label Label1
Caption = "最优迭代点"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Index = 10
Left = 240
TabIndex = 9
Top = 2040
Width = 1575
End
Begin VB.Label Label1
Caption = "最优函数值"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Index = 11
Left = 240
TabIndex = 8
Top = 1680
Width = 1455
End
Begin VB.Label Label1
Caption = "迭代精度"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Index = 2
Left = 240
TabIndex = 7
Top = 1320
Width = 1455
End
Begin VB.Label Label1
Caption = "碰壁函数法"
BeginProperty Font
Name = "宋体"
Size = 15
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Index = 0
Left = 240
TabIndex = 6
Top = 360
Width = 2415
End
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim X1 As Double '自变量
Dim X2 As Double '自变量
Private Sub Form_Load()
Dim f_x As Double '函数
Dim g_x As Double '约束
Dim c As Integer '经验值
Dim iterative As Integer '迭代次数
Dim r As Double
Dim ε As Double '迭代精度
f_x = X1 * X1 + X2 * X2 '函数表达式
g_x = 1 - X1 '约束
c = 2 '付初值
r = 1
ε = 0.0001 '迭代精度
iterative = 1
min_F_x_r (r) '调用函数,求取最有解
If -r * Log(X1 - 1) < ε Then '满足迭代精度,即可退出
MsgBox ("迭代完毕!")
Text1.Text = iterative '输出迭代次数
Text2.Text = ε '输出迭代精度
Text3.Text = Format(X1, "0.000000") '输出最有解
Text5.Text = Format(X2, "0.000000") '输出最有解
f_x = X1 * X1 + X2 * X2 '函数表达式
Text4.Text = Format(f_x, "0.000000") '输出最有值
Exit Sub
End If
Do While -r * Log(X1 - 1) > ε '不满足迭代精度,继续迭代
r = r / c '加大惩罚力度
min_F_x_r (r) '调用函数,求取最有解
If -r * Log(X1 - 1) < ε Then '满足迭代精度,即可退
MsgBox ("迭代完毕!")
Text1.Text = iterative '输出迭代次数
Text2.Text = ε '输出迭代精度
Text3.Text = Format(X1, "0.000000") '输出最有解
Text5.Text = Format(X2, "0.000000") '输出最有解
f_x = X1 * X1 + X2 * X2 '函数表达式
Text4.Text = Format(f_x, "0.000000") '输出最有值
Exit Do
End If
iterative = iterative + 1 '迭代次数加1
Loop
End Sub
Function min_F_x_r(r)
X1 = (2 + Sqr(4 + 8 * r)) / 4
X2 = 0
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -