Скачиваний:
47
Добавлен:
12.01.2016
Размер:
954 б
Скачать
Sub Zoloto(xL() As Double, xR() As Double, x() As Double, m As Integer)
Const e = 0.000001, tau = (1 + 5 ^ 0.5) / 2
Dim x0 As Double, x1 As Double, x2 As Double, x3 As Double, L1 As Double, T As Double, L As Double, F1 As Double, F2 As Double
x0 = xL(m)
x3 = xR(m)
L1 = x3 - x0
T = 1
While x3 - x0 > e
T = T * tau
L = L1 / T
x1 = x3 - L
x2 = x0 + L
x(m) = x1
F1 = f(x)
x(m) = x2
F2 = f(x)
If F1 < F2 Then x3 = x2 Else x0 = x1
Wend
x(m) = x2
End Sub

Function f(x() As Double) As Double
f = 100 * (x(2) - x(1)) ^ 2 + (1 - x(1)) ^ 2
End Function

Sub МПС()
Const e = 0.0000000001, n = 2
Dim x(1 To n) As Double, xL(1 To n) As Double, xR(1 To n) As Double, i As Integer, F2 As Double, F1 As Double
For i = 1 To n
xL(i) = -10
xR(i) = -xL(i)
Next i
F2 = f(x)
Do
F1 = F2
For i = 1 To n:
Zoloto xL, xR, x, i
Next i
F2 = f(x)
Loop While Abs(F1 - F2) > e
For i = 1 To n
Debug.Print x(i);: Next i
Debug.Print f(x)
End Sub