mam pewne zadanie optymalizacyjne z matematyki, w którym muszę znaleźć funkcję celu oraz wykorzystać metodę złotego podziału do znalezienia pewnego minimum. Ma to być zrobione w visual basicu.
Kod programu, który napisałem:
Kod: Zaznacz cały
Sub makro_1()
Dim a As Double
Dim b As Double
Dim E As Double 'Dokładność obliczeń'
Dim k As Double 'Stały współczynnik k, o który zmniejszana jest wielkość przedziałów w kolejnych krokach'
Dim xL As Double
Dim xR As Double
a = InputBox("Podaj przedział [a;b] w którym poszukiwane jest minimum: a=")
b = InputBox("Podaj przedział [a;b] w którym poszukiwane jest minimum: b=")
E = InputBox("Określ dokładność obliczeń:")
k = (Math.Sqr(5) - 1) / 2
xL = b - k * (b - a) 'Lewa próbka'
xR = a + k * (b - a) 'Prawa próbka'
Do While ((b - a) > E)
If (f(xL) < f(xR)) Then 'Porównanie wartości funkcji celu dla lewej i prawej próbki'
b = xR
xR = xL
xL = b - k * (b - a)
Else
a = xL
xL = xR
xR = a + k * (b - a)
End If
Loop
Range("G2").Value = (a + b) / 2
End Sub
Function f(x)
f = 0.03 * x ^ 2 + 480 / x
End Function