Есть код на питоне
def f(x):
return (100-2*x)*(75-2*x)*x
eps = 0.00001
l = 0
r = 75/2
while r-l > eps:
m = (r+l)/2
if (f(l)-f(l+eps)) * (f(m)-f(m+eps)) > 0:
l = m
else:
r = m
print((r+l)/2)
Выдает примерно 14.14, это верно
Переписал на Бэйсик
Function f(ByVal x As Single) As Single
f = (100 - x * 2) * (75 - x * 2) * x
End Function
Sub program()
Dim l As Single, m As Single, eps As Single, r As Single
eps = 0.00001
l = 0
r = 75 / 2
Do While r - l > eps
m = (r + l) / 2
If (f(l) - f(l + eps)) * (f(m) - f(m + eps)) > 0 Then
l = m
Else
r = m
End If
Loop
Cells(1, 1).Value = (r + l) / 2
End Sub
Выдает 13,47569942, что неверно. Что я не так переписал?