Скачиваний:
48
Добавлен:
12.01.2016
Размер:
750 б
Скачать
Function f(x() As Double) As Double
f = 100 * (x(2) - x(1) ^ 2) ^ 2 + (1 - x(1)) ^ 2
End Function
Sub Метод_покоординатного_спуска_поиском_по_образцу()
Const ee = 0.0000000001, n = 2
Dim h As Double, x(1 To n) As Double, b(1 To n) As Double, _
e(1 To n) As Integer, i As Integer, f1 As Double, r As Boolean
h = 5
For i = 1 To n: x(i) = -5: b(i) = x(i): e(i) = 1: _
Next i: f1 = f(x)
Do
For i = 1 To n: b(i) = x(i) + e(i) * h
If f(b) > f1 Then
b(i) = x(i) - e(i) * h
If f(b) > f1 Then b(i) = x(i) Else e(i) = -e(i)
End If
If x(i) <> b(i) Then r = True
Next i
If r Then For i = 1 To n: x(i) = b(i): Next i: _
f1 = f(x): r = False Else h = h / 2
Loop While h > ee
For i = 1 To n: Debug.Print x(i);: Next i: Debug.Print f1
End Sub