鲍威尔共轭方向法VB源程序
Dim NCOM, PCOM(50), XICOM(50)
Private Sub Command1_Click()
np = 2 'np个坐标轴,取x轴和Y轴两个方向
ndim = np
Dim p(2), xI(2, 2)
For i = 1 To np
For j = 1 To np
xI(i, j) = 0#
Next j
Next i
xI(1, 1) = 1#
xI(2, 2) = 1#
p(1) = 1.5
p(2) = 1.5
'鲍威尔法计算子程序
Call powell(p(), xI(), ndim, np, ftol, iter, fret)
Picture1.FontSize = "16"
Picture1.Print Tab(6); "######################################################" Picture1.Print Tab(6); "函数:F(x1,x2)=10*(x1+x2-5)^2+(x1-x2)^2"
Picture1.Print Tab(6); "已知条件:n=2;迭代初始点:xk(n)=[0,0]T"
Picture1.Print Tab(6); "一维搜索步长tt=0.005,一维迭代精度及收敛精度ad=0.0000001" Picture1.Print Tab(6); "############################"
Picture1.Print Tab(6); "迭代次数:"; Format$(iter, "##")
For i = 1 To np
Picture1.Print Tab(6); "极值点x("; i; ")="; Format(p(i), "#0.#####0")
Next i
Picture1.Print Tab(6); "极小值yy="; Format(fret, "#0.#####0")
Picture1.Print Tab(6); "#####################################################" End Sub
Function func(x)
func = f1dim(x)
End Function
Function func2(x(), n)
'方程函数子程序
'AA = (x(1) - 2) ^ 2 + (x(2) - 5) ^ 2