簡體   English   中英

python 上的脂肪公式

[英]Fat`s formula on python

我有一個公式:

%fat=495/(1.29579-0.35004(log(hips+waist-neck))+0.22100(log(growth)))-450

python 這個胖公式是怎么做到的? 我做到了:

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.log2math.log10 python 3 文檔說:

數學.log2(x)

返回 x 的以 2 為底的對數。 這通常比log(x, 2)更准確

但是,如果您在另一個基礎上工作,請使用log並將基礎添加為 arg,例如 log 3 (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來指代 log base 2,通常是在編程或算法的上下文中。 只是需要注意的事情!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM