Наиболее очевидная проблема с решением OP - это ветвление, поэтому я бы предложил полиномиальную регрессию. Это приведет к хорошему выражению без разветвлений в форме
size = round(k_0 + k_1 * v + k_2 * v^2 + ...)
Вы, конечно, не получите точного результата, но если вы можете терпеть некоторые отклонения, это очень эффективная альтернатива. Поскольку поведение «оставить неизменным» для исходной функции для значений, в которых v<10
невозможно моделировать с помощью полинома, я позволил себе предположить, что для этой области используется интерполяция удержания нулевого порядка.
Для полинома с 45 степенями со следующими коэффициентами,
-9.1504e-91 1.1986e-87 -5.8366e-85 1.1130e-82 -2.8724e-81 3.3401e-78 -3.3185e-75 9.4624e-73 -1.1591e-70 4.1474e-69 3.7433e-67 2.2460e-65 -6.2386e-62 2.9843e-59 -7.7533e-57 7.7714e-55 1.1791e-52 -2.2370e-50 -4.7642e-48 3.3892e-46 3.8656e-43 -6.0030e-41 9.4243e-41 -1.9050e-36 8.3042e-34 -6.2687e-32 -1.6659e-29 3.0013e-27 1.5633e-25 -8.7156e-23 6.3913e-21 1.0435e-18 -3.0354e-16 3.8195e-14 -3.1282e-12 1.8382e-10 -8.0482e-09 2.6660e-07 -6.6944e-06 1.2605e-04 -1.7321e-03 1.6538e-02 -1.0173e-01 8.3042e-34 -6.2687e-32 -1.6659e-29 3.0013e-27 1.5633e-25 -8.7156e-23 6.3913e-21 1.0435e-18 -3.0354e-16 3.8195e-14 -3.1282e-12 1.8382e-10 -8.0482e-09 2.6660e-07 -6.6944e-06 1.2605e-04 -1.7321e-03 1.6538e-02 -1.0173e-01 3.6100e-01 -6.2117e-01 6.3657e+00
, вы получите прекрасно подогнанную кривую:
![alt text](https://i.stack.imgur.com/ZQfJn.png)
И, как вы можете видеть, вы получаете ошибку 1 нормы всего 1,73 во всем диапазоне от 0 до 200 *!
* Результаты для v∉[0,200]
могут отличаться.