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, обычно в контексте программирования или алгоритмов. Просто кое-что, о чем следует знать!

Вернуться на верх