Использование кода VBA я нашел в электронной таблице для адаптации к онлайн-приложению PHP. Код использует метод деления пополам в математике, чтобы найти оптимальное значение для расчета, необходимого для оценки цены.
Upper = estimate_upper
Lower = estimate_lower
UUpper = container
Start_Iteration:
IterationCountE = 0.000000001
While (Upper - Lower) > IterationCountE
Mid = (Upper + Lower) / 2
c1 = calculations1...
c2 = calculations2...
If (c2 - c1) > 0 Then
Lower = Mid
Else
Upper = MId
End If
Wend 'Ends the while loop
If (Round(Mid, 4) = Round(UUpper, 4)) Then
Upper = 2 * UUpper
UUpper = Upper
GoTo Start_Iteration
End If
Function = Mid
По большей части я понимаю механику итерации. Моя попытка преобразования PHP выглядит следующим образом:
$IterationCountE = 0.00000000001;
while ( ($Upper - $Lower) > $IterationCountE ) {
$Mid = ($Upper + $Lower) / 2;
$c1 = calculation1();
$c2 = calculation2();
if ( ($c2 - $c1) > 0 ) {
$Lower = $Mid;
} else {
$Upper = $Mid;
}
if (round($Mid, 4) == round($UUpper, 4)) {
$Upper = 2 * $UUpper;
$UUpper = $Upper;
}
}
return $Mid;
Это лучший способ приблизиться к подобной итерации в PHP? Было бы лучше обернуть итерацию в функцию и вернуться к ней, как в коде VBA?
Я не получаю те же результаты значения при сравнении вывода PHP со значением из макроса.
Задача ещё не решена.
Других решений пока нет …