Попытался разобраться в формулах и реализовать расчет, в целом получилось, но есть смущающая разница в расчетах, моих, DiaCalcJ 2.54.1 и Diabet2000. Мне кажется разница НЕ связана с округлением, которое зачем-то, судя по коду по ссылке, делает Diabet2000.
Пример: Белый хлеб, Вес=100, Белки=7,6, Жиры=0,9, Углеводы=46,7, ГИ=88.
Вот мои расчеты и результаты (жирным)
К1 = 1,1
К2 = 0,1
УГЛНАХЕ = 10
БелкиНорм = Белки #так как вес продукта 100, то нормированные значения равны исходному кол-ву
ЖирыНорм = Жиры
УглеводыНорм = Углеводы
F = УглеводыНорм/100*ГИ = 46,7/100*88 = 41,096
C1 = УглеводыНорм/100*(100-ГИ) = 46,7/100*(100-88) = 5,604
Калории = БелкиНорм*4,1 + ЖирыНорм*9,3 + УглеводыНорм*4,1 = 7,6*4,1 + 0,9*9,3 + 46,7*4,1 = 231
ХЕ = УглеводыНорм/УГЛНАХЕ = 46,7/10 = 4,67
Доза = БелкиНорм*4,1/100*К2 + ЖирыНорм*9,3/100*К2 + F/ХЕ*К1+С1/10*К1 = 7,6*4,1/100*0,1 + 0,9*9,3/100*0,1 + 41,096/10*1,1 + 5,604/10*1,1 = 5,17653
БыстраяДоза = F/ХЕ*К1 = 41,096/10*1,1 = 4,52056
МедленнаяДоза = БелкиНорм*4,1/100*К2 + ЖирыНорм*9,3/100*К2 + С1/10*К1 = 7,6*4,1/100*0,1 + 0,9*9,3/100*0,1 + 5,604/10*1,1 = 0,65597
Результаты:
DiaCalcJ 2.54.1
БыстраяДоза = 4,521
МедленнаяДоза = 0,616+0,038 = 0,654 <- ниже показано 0,655, но это все равно чуть меньше чем в ручном расчете выше.
Калории = 225,3 <- вот тут я решительно не понимаю куда программа дела 5,7 калорий.
Diabet2000
БыстраяДоза = 4,51
МедленнаяДоза = 0,7 <- баг программы, несмотря на то, что выставлено 2 знака, показывается 1.
Предупреждая комментарий в стиле "это мелочи". Я могу показать накопление более серьезного расхождения с Diabet2000 в случае группы продуктов, просто это займет больше места. Поэтому хотелось бы понять может кто-то сходу знает, нет ли чего-то, что я забыл учесть в расчетах.