V
ViktorFiskov
Уважаемые программисты прошу вас помочь доработать алгоритм по нахождению экстремума методом с использованием чисел Фибоначчи. программа будет несколько больше пока что не получается сам алгоритм.
Заранее спасибо, ребятишки)
код программы приведен ниже:
Function Fib(ByVal i As Double) As Double
If i = 0 Then
Fib = 0
ElseIf i = 1 Then
Fib = 1
Else
Fib = Fib(i - 1) + Fib(i - 2)
End If
End Function
Function F(x)
F = -1612.10599999961 + 5.4115285714288 * x + -4.4928571428572E-03 * x ^ 2
End Function
Private Sub Command5_Click()
Form1.Cls
Dim vs, i As Integer
vs = 30
For i = 0 To vs - 1
Print i, Fib(i)
Next i
a = 580 ' получение значения начало отрезка - точки a
b = 620 ' получение значения конца отрезка - точки b
e = 0.1 'получение значения погрешности
N = (b - a) / e ' получение вспомогательного числа
Do While s - q = 0
Fib (s) > N > Fib(s - 1)
Emin = (b - a) / Fib(s)
q = 1
X1 = a
If X2 < X1 Then
q = q + 1
X1 = X2
X2 = X1 + Emin * Fib(s - q)
Else
X1 = X2
X2 = X1 - Emin * Fib(s - q)
End If
For q = 0 To 30
Print i, Fib(i), q, N, s, Fib(s), Emin, F(X1), F(X2)
Next q
Loop
End Sub
Добавлено: заранее извиняюсь за оформление))) не любитель форумов((((
Заранее спасибо, ребятишки)
код программы приведен ниже:
Function Fib(ByVal i As Double) As Double
If i = 0 Then
Fib = 0
ElseIf i = 1 Then
Fib = 1
Else
Fib = Fib(i - 1) + Fib(i - 2)
End If
End Function
Function F(x)
F = -1612.10599999961 + 5.4115285714288 * x + -4.4928571428572E-03 * x ^ 2
End Function
Private Sub Command5_Click()
Form1.Cls
Dim vs, i As Integer
vs = 30
For i = 0 To vs - 1
Print i, Fib(i)
Next i
a = 580 ' получение значения начало отрезка - точки a
b = 620 ' получение значения конца отрезка - точки b
e = 0.1 'получение значения погрешности
N = (b - a) / e ' получение вспомогательного числа
Do While s - q = 0
Fib (s) > N > Fib(s - 1)
Emin = (b - a) / Fib(s)
q = 1
X1 = a
If X2 < X1 Then
q = q + 1
X1 = X2
X2 = X1 + Emin * Fib(s - q)
Else
X1 = X2
X2 = X1 - Emin * Fib(s - q)
End If
For q = 0 To 30
Print i, Fib(i), q, N, s, Fib(s), Emin, F(X1), F(X2)
Next q
Loop
End Sub
Добавлено: заранее извиняюсь за оформление))) не любитель форумов((((