пятница, 4 октября 2013 г.

Минус Фунт: Калорийность новой недели

Имея в распоряжениии средние калорийности и ТВН двух последних недель, калорийность новой недели ("третьей", следующей после этих двух) можно посчитать по такой формуле (заготовка для Excel):

[РКНнов] = ОКРУГЛ(

СРЗНАЧ([СКНпред];[СКНпосл])

+

ЗНАК([Режим]-[Факт])
* МИН([ДИКmax]; ABS([Режим]-[Факт])/2)

; -1)

где

[РКНнов] - рекомендуемая калорийность новой недели, ккал.
 
[СКНпред] - средняя калорийность предпоследней недели, ккал.
 
[СКНпосл] - средняя калорийность последней недели, ккал.
 
[Режим] - планируемое недельное изменение веса, граммы, с учетом знака; похудению со скоростью минус фунт в неделю соответствует величина -400. В калькуляторе на сайте МФ [Режим] может быть выбран из фиксированного набора значений: от -400 до +400 с шагом 100. При расчете по формуле, разумеется, можно подставлять любые промежуточные значения, не кратные 100, например, -150 или -275, а также задавать скорость похудения более 400, например, -600 или -800 (конечно, если такое увеличение темпа оправдано в каждом конкретном случае).
 
[Факт] - фактическое недельное изменение веса, граммы, с учетом знака; похудению на 300 гр в неделю соответствует величина -300, поправке на полкилограмма - величина +500; [Факт] вычисляется в граммах по формуле [Факт]=1000*([ТВНпосл]-[ТВНпредп]), в которую ТВН последней и предпоследней недель подставляются в кг.
 
[ДИКmax] - максимально допустимое изменение калорийности недели, ккал, абсолютное число (без знака, всегда положительное); сейчас калькулятор считает от средней калорийности двух последних недель (ранее считал от калорийности одной последней недели). На сайте МФ сейчас как правило [ДИКmax] = 100 ккал в большинстве практических случаев; при очень значительном (свыше полукилограмма-килограмма) отклонении [Факта] от [Режима] значение [ДИКmax] может увеличиваться до 150 ккал в зависимости от величины конкретного отклонения. Точные границы перехода значений - 100 в 110, 110 в 120 и т.д. до 150 - мне пока не известны, и узнавать их нет особого желания, поскольку в формулу можно подставить любое желаемое значение и с ним поиграться.
 
ОКРУГЛ, СРЗНАЧ, ЗНАК, МИН, ABS - встроенные функции Excel.
 
 
Приведенная формула может быть перенесена в произвольную ячейку Excel, начиная со знака равенства = (т.е. без начального [РКНнов], приведенного здесь для придания формуле более традиционного математического, нежели эксельного вида). Вместо переменных в квадратных скобках следует подставить ссылки на ячейки, в которых соответствующие величины вводятся или вычисляются. В случае [ДИКmax], если не предполагается больших экспериментов, можно вместо ссылки на ячейку забить в формулу сразу константу 100.


P.S. Для истории: Как калькулятор МФ считал калорийность раньше?

Примерно до весны 2013 алгоритм расчета калорийности новой недели был таков. От среднего значения калорийности двух последних недель отнималась разница "факта" и "режима" и вычислялась требуемая калорийность:

[ТК] = СРЗНАЧ([СКНпред];[СКНпосл]) - ([Факт]-[Режим])

Далее полученная величина проверялась на попадание в диапазон от [СКНпосл]-150 до [СКНпосл]+150. Если она попадала, то вычисленная [ТК] и считалась [РКНнов]. Если не попадала, то [РКНнов] принималась равной одной из границ этого диапазона: если [ТК]<[СКНпосл]-150, то принималось [РКНнов]=[СКНпосл]-150 и, соответственно, если [ТК]>[СКНпосл]+150, то принималось [РКНнов]=[СКНпосл]+150.

Обозначая константу 150 переменной [ДИКmax], можно написать следующую формулу, приспособленную для расчетов в Excel:

[РКНнов] = ОКРУГЛ(

МИН(

МАКС(
СРЗНАЧ([СКНпред];[СКНпосл]) - ([Факт]-[Режим])
;[СКНпосл]-[ДИКmax])

;[СКНпосл]+[ДИКmax])

;-1)

P.S.2. Файл Excel с примером.

Все представленные выше "теоретические" формулы можно увидеть в настроенном рабочем состоянии в прилагаемом файле. Дополняя предыдущую версию файла-дневника mfDiary1.xls (из сообщения от 27.08.2013) новыми колонками, получаем следующую в развитии версию - mfDiary2.xls:

https://docs.google.com/file/d/0B12BTJG-Ola4ck5Ja2c4MmVJNXc/edit?usp=sharing

В новом файле представлены оба расчета - текущий (с [ДИКmax] = 100) и предыдущий (до весны 2013, с [ДИКmax] = 150). Обратите внимание, что рассчитанное значение [РКНнов] "переносится" при помощи формулы-ссылки в колонку [РКН] следующей строки (в файле оба значения выделены красным цветом для наглядности этого перехода на примере двух соседних строк).