пятница, 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). Обратите внимание, что рассчитанное значение [РКНнов] "переносится" при помощи формулы-ссылки в колонку [РКН] следующей строки (в файле оба значения выделены красным цветом для наглядности этого перехода на примере двух соседних строк).

5 комментариев:

Unknown комментирует...

Ба, знакомые все лица! :-)
Здравствуйте Константин.
Опять я Вас нашла :-)
Впервые увидела в VK
когда изучала протасовку, потом на МФ, а теперь чисто случайно - искала из любопытства что такое Формула Тьюки.
Любопытствую - а почему у вас инфа на французском?
Интересные формулки, обязательно попробую. Полезное дело делаете. Спасибо.
Наталья.

Анонимный комментирует...

еще раз спасибо, работает на сегодня четко. и расчеты верные, и скрипт работает, в общем очень всё приятно, удобно, наглядно!

Анонимный комментирует...

может кому полезно будет, для Google Sheets (чтобы эта экселька была доступна в онлайн с любого устройства, в общем) в формуле квартиля надо изменить синтаксис (в формуле ТНВ) по следующему шаблону

QUARTILE({D1,E1:J1,E1:J1,K1},x) и еще не искал как именно изменить запись эксельных массивов, поэтому переписал формулу ТНВ в ее полном виде, у меня вот так:

ROUND((QUARTILE({D6,E6:J6,E6:J6,K6},1)+2*QUARTILE({D6,E6:J6,E6:J6,K6},2)+QUARTILE({D6,E6:J6,E6:J6,K6},3))/4,2)

Gustav комментирует...

В ответ на 9 февраля 2015 г., 10:26

Добрый день, увы, не очень уверен в правильности Вашего варианта...

Фигурные скобки в данном случае не являются эквивалентом круглых в Excel. Чтобы получить в Google Таблицах такой же результат, как в Excel, мне сначала пришлось преобразовать 8 значений веса в 14 значений в другом (дополнительном) диапазоне. И уже к нему обращаться в окончательной формуле.

Вот ссылка на мою вполне актуальную Google Таблицу (возможно отставание на несколько недель, но я периодически подливаю свежие данные): https://docs.google.com/spreadsheet/ccc?key=0Al2BTJG-Ola4dEF2SmxVVk9Vb0s0eEVOWkNUT3JKcFE&usp=drive_web#gid=0

Попробуйте рассчитать ТВН по своей формуле и сравнить результаты с моей колонкой ТВН режима OLD, которая в данном случае выступает как эталон.

Анонимный комментирует...

обращал внимание в прошлый раз только на расчет калорийности, а сегодня увидел, что расчет ТВН не совпадает с калькулятором. изучил приложенный пример с экселем - смотрю, там тоже для справки выводится расхождение ТВН по Тьюки и по нынешнему алгоритму. для себя принял решение опираться на Тьюки и всё.

Насчет Google Sheets - расчеты в нем по моей расписанной формуле просто совпадают с расчетами в экселе. конечно, у меня там топорный копипаст и нет столь изящной формулы, как в предлагаемом варианте, но оно работает для меня и как для профана - "и пусть" =) а на радостях поделился. думал, что блог заброшен совсем. а он живет и содержит ценную инфу )