用0.618法求解min f(t)=t^3-2^T+1
第一步:确定单谷区间[a ,b],给定最后区间精度ε>0
第二步:计算两个探索点
t1=a+0.382(b-a)
t2=a+0.618(b-a)
计算f1=f(t1),f2=f(t2)
第三步:若f1<=f2,转第四步,否则转第五步
第四步:若t2-a<=ε,停止迭代,输入t1.否则令b=t2,t2=t1,t1=b-0.618(b-a),f2=f1,计 算f1=f(t1),转第三步
第五步:若b-t1<=ε,停止迭代,输出t2,否则令a=t1,t1=t2,t2=a+0.618(b-a),f1=f2,计 算f2=f(t2)转第三步
怎样把这些过程编程vb?语言??才鸟问题,希望能得到高手门的回答
第一步:确定单谷区间[a ,b],给定最后区间精度ε>0
第二步:计算两个探索点
t1=a+0.382(b-a)
t2=a+0.618(b-a)
计算f1=f(t1),f2=f(t2)
第三步:若f1<=f2,转第四步,否则转第五步
第四步:若t2-a<=ε,停止迭代,输入t1.否则令b=t2,t2=t1,t1=b-0.618(b-a),f2=f1,计 算f1=f(t1),转第三步
第五步:若b-t1<=ε,停止迭代,输出t2,否则令a=t1,t1=t2,t2=a+0.618(b-a),f1=f2,计 算f2=f(t2)转第三步
怎样把这些过程编程vb?语言??才鸟问题,希望能得到高手门的回答
用两个text来接受闭区间a,b的值:
dim a,b,t1,t2
a=text1.text
b=text2.text
t1=a+0.382(b-a)
t2=a+0.618(b-a)
f1=f(t1),f2=f(t2)(不明白这里的f是代表什么运算,如果是t^3-2^T+1
这个运算的话,就照代入进行运算就是了!!所以只能照写了)
:k if f1<=f2 then
if t2<=ε then
t1=text3.text '输入t1
exit sub
else
b=t2
t2=t1
t1=b-0.618(b-a)
f2=f1
f1=f(t1)
goto k
end if
else
if b-t1<=ε then
t2=text3.text '输出t2
exit sub
else
a=t1
t1=t2
t2=a+0.618(b-a)
f1=f2
goto k
end if
end if
Dim a As Double
Dim b As Double
Dim jingdu As DoublePrivate Sub Command1_Click()
a = 0
b = 5
jingdu = 0.001
Dim t1 As Double
Dim t2 As Double
Do While b - a > jingdu
t1 = a + 0.382 * (b - a)
t2 = a + 0.618 * (b - a)
If f(t1) > f(t2) Then
a = t1
Else
b = t2
End If
Loop
Debug.Print f(t1)
End SubPrivate Function f(ByVal t As Double) As Double
f = t ^ 3 - 2 ^ t + 1
End Function
因为本人学得不好,所以这类基础的东西也要拿来发问,见笑了。