[VB] Funkcja celu, złoty podział
: 13 mar 2015, o 10:16
Witam,
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:
Jednak przy oddawaniu tego zadania gościu przyczepił mi się do wywoływania funkcji. Teraz wywołuje się 2 razy podczas pętli, a prawdopodobnie powinna więcej razy. Od razu mówię, że nie jest zbyt lotny w programowaniu, prosty program potrafię napisać, ale nic więcej. Czy mógłbyś ktoś pomóc w rozwiązaniu tego problemu? Pozdrawiam
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