Fat`s formula на python
У меня есть формула:
%fat=495/(1.29579-0.35004(log(hips+waist-neck))+0.22100(log(growth)))-450
Как эта жирная формула на питоне? Я сделал это:
from math import log
fat = 495 / (1.29579 - 0.35004 * log(self.hips + self.waist - self.neck) + 0.22100 * log(self.user.profile.growth)) - 450
Но значения далеки от истины. Ссылка на калькулятор https://www.scientificpsychic.com/fitness/diet-calculator-ru.html
(Примечание: Этот вопрос был решен в комментариях, я просто добавляю ответ, чтобы отметить вопрос как решенный.)
Как я предположил в комментариях, проблема возникает из-за того, что math.log
по умолчанию использует основание e, в то время как большинство математиков <1 по умолчанию используют основание 10 и называют основание e логарифмами ln
. Есть два хороших решения, как это обойти. Во-первых, если вам нужно основание 2 или 10, вы должны использовать math.log2
или math.log10
. В документации по python 3 говорится:
math.log2(x)
Возвращает логарифм x по основанию 2. Обычно это более точное значение, чем
.log(x, 2)
Но если вы работаете в другой базе, используйте log
и добавьте базу в качестве аргумента, например, log3(x) =log(x,3)
.
Вместе с тем, этот вопрос должен быть решен следующим образом:
import math
fat = 495 / (1.29579
- 0.35004 * math.log10(self.hips + self.waist - self.neck)
+ 0.22100 * math.log10(self.user.profile.growth,10)) - 450
Не связано: Длинные строки кода может быть довольно трудно читать. PEP8 рекомендует держать ваш код длиной не более 80 символов. Я попытался отформатировать этот код для удобочитаемости. В этом вопросе объясняется, как разбить код python на строки
1 | Иногда можно увидеть, как математики/программисты используют log
для обозначения логарифмического основания 2, обычно в контексте программирования или алгоритмов. Просто кое-что, о чем следует знать!