数学:我们什么时候使用对数,它是如何工作的?
我们知道蒸发器(在毫升含量)的含量,泡沫或气体的比例失去了每天(evap_per_day)和阈值(阈值)的百分比超过该蒸发器不再有用。所有数字都是严格正面的。该程序报告蒸发器将被停用的第n天(作为整数)。
我用递归解决方案:
if (content > (initialContent/100) * threshold) {
double postContent = content - (content/100) * evap_per_day;
iterations++;
return recursiveEvaporator(postContent, evap_per_day, threshold, initialContent, iterations);
}
但后来我发现更复杂的解决方案: return (int)Math.ceil(Math.log(threshold/100.0)/Math.log(1.0 - evap_per_day/100.0));
能否请你解释我是如何做对数这里工作,为什么我们选择自然对数?
-
首先,你必须获得一个清晰的图像
e
,这是自然对数的基础。e
- 是恒定的,代表的(1 + 1/n)^n
,我们称之为谈论不断增长时逼近我们看到,新出现的“加法”参加进一步exponentiation.Roughly说:E 1 X是我们的收入在x之后,其中x是t * r(t-时间; r-rate)
- ln(y)是一个逆向操作, 。
- ln(y)是一个逆向操作, 。
带回你的问题的主题 ln(threshold)
- 是T * R(一次*率) ln(1 - evap_per_day)
- 在* R至evoparate 90%,但不初始,我们再次需要! ln
因为90%是不断下降,我们应该考虑到它。 我们用ln(1 - evap_per_day)来划分ln(threshold)的乘积以得知时间。
所以正确的方法是:(int)Math.ceil(Math.log(threshold/100.0)/(ln(1.0 - evap_per_day/100.0))
我确实使用过本教程来研究它http://betterexplained.com/articles/demystifying-the-natural-logarithm-ln/ –
我投票作为题外话,因为它属于上math.stackexchange.com,或关闭该问题档次9. – EJP
@EJP这些天来,12年级,和只为即将到来的科学专业... – chrylis
感谢评论家,尽管offtopic有人提供了一个强有力的答案。这就是为什么我喜欢StackOverflow。 –