vb缺少数组

来源:百度知道 编辑:UC知道 时间:2024/05/30 11:06:49
Private Sub Command1_Click()
Dim x, a, b, m, n, d, y1, y2, x1, x2, e, f As Single
m = Val(Text1) * 3.1415926 / 180
m = Val(Text2)
e = Val(Text3)
d = (m - 1) / (m + 1) * 3.1415926
a = d / 2
b = m
x1 = a + 0.382 * (b - a)
x2 = a + 0.618 * (b - a)
Do While (b - a) > e
If y1 < y2 Then
b = x2
x2 = x1
y2 = y1
x1 = a + 0.382 * (b - a)
y2 = f(x1, d, m)
Else
a = x1
x1 = x2
y1 = y2
x2 = a + 0.618 * (b - a)
y2 = f(x2, d, m)
End If
Loop
x = 0.5 * (a + b)
f = f(x2, d, m)
Text4.Print "极小点x:"; x
Text5.Print "函数极小值;"; f
End Sub
Public Function f(x, d, m) As Single
Dim p1, p2, p3, p4 As Single
p1 = Sin(m / 2) / Cos(d / 2)
p2 = Sin(m / 2) / Sin(d / 2)
p3 = Sin(m / 2) / Tan(d / 2) - Cos(m / 2)
p4 = 4 * ((Sin(m / 2) / Sin(d)) ^ 2 - p3 * Sin(m / 2) / Sin(d))
f = ((0.1 * p2 * Sin(x)) ^ 2 + 0.1 ^

错误很多,一一道来:
1、dim 语句最后的 f As Single改为 f1 As Single——这个变动将不会产生vb缺少数组的提示的关键
2、f = f(x2, d, m)改为f1 = f(x2, d, m)
3、Text4.Print "极小点x:"; x改为Text4.text= "极小点x:"+str(x)
4、Text5.Print "函数极小值;"; f改为Text5.Text = "函数极小值;" + Str(f1)
5、f = ((0.1 * p2 * Sin(x)) ^ 2 + 0.1 ^ 2 - ((0.1 * sqrt(p3 ^ 2 - p4 * Cos(x)) ^ 2) - 0.1) ^ 2) / 2 / (0.1 * p2 * Sin(x)) / 0.1中的 sqrt改成Sqr
修改完的完整程序如下:
Private Sub Command1_Click()
Dim x, a, b, m, n, d, y1, y2, x1, x2, e, f1 As Single
m = Val(Text1) * 3.1415926 / 180
m = Val(Text2)
e = Val(Text3)
d = (m - 1) / (m + 1) * 3.1415926
a = d / 2
b = m
x1 = a + 0.382 * (b - a)
x2 = a + 0.618 * (b - a)
Do While (b - a) > e
If y1 < y2 Then
b = x2
x2 = x1
y2 = y1
x1 = a + 0.382 * (b - a)
y2 = f(x1, d, m)
Else
a = x1
x1 = x2
y1 = y2
x2 = a + 0.618 * (b - a)
y2 = f(x2, d, m)
End If