[英]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.log2
或math.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.