如何使用bc计算数字的对数?

时间:2011-11-01 03:50:46

标签: unix bc

这是我第一次使用bc。我想计算一个数字的对数(基数10)。我怎么做?

8 个答案:

答案 0 :(得分:57)

使用bc选项调用-l(以启用数学库),如此

$ echo 'l(100)/l(10)' | bc -l
2.00000000000000000000

使用l函数作为自然日志。记下您感兴趣的数字的对数,然后除以10的自然对数。

答案 1 :(得分:37)

对于基数b,x的对数可以在给定任意基数k的任何对数函数的情况下计算 - 实际上非常酷!

log_b(x) = log_k(x) / log_k(b)

e.g。

log_b(x) = ln(x) / ln(b)

如果b = 10:

log_10(x) = ln(x) / ln(10)
bc中的

和-l启用数学库

这就是为什么这样做的原因:

# bc -l
l(100) / l(10)
2.00000000000000000000

答案 2 :(得分:5)

如果您使用bc开关启动-l,则会有一个函数l()来计算其参数的自然日志。

答案 3 :(得分:2)

海报特别要求登录10。

我在Ubuntu 12.10上有bc 1.06.95。这个版本的BC中的“l(x)”不是 基数10.它是自然对数(基数e)。这在这里得到了证实,BC也有 从某种程度上说是这样的:

http://linux.about.com/od/commands/l/blcmdl1_bc.htm

我怀疑你需要让log base 10工作的是BC扩展:

http://x-bc.sourceforge.net/extensions_bc.html

不确定安装此方法的正确方法,并尝试在此处发布错误。

Dominic-Luc Webb

答案 4 :(得分:2)

除了使用bc之外,bc不直接给出对数以外的对数,我们只能计算ln(x)。因此,要获得任何其他基本对数,记住一些身份是明智的。基本的是 -

log base 10 (x) = log base e (x) / log base e (10)

这里我给你一些不同基本对数的例子 -

totan@Home-Computer ~ $ bc -l
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 

l(8)/l(2)
3.00000000000000000002

l(1000)/l(10)
3.00000000000000000000

l(100000)/l(100)
2.50000000000000000000

l(100000)/l(10)
5.00000000000000000001

l(81)/l(3)
4.00000000000000000001

l(64)/l(4)
3.00000000000000000000

quit()
totan@Home-Computer ~ $ 

希望这会对你有所帮助。

答案 5 :(得分:0)

答案 6 :(得分:0)

Python可以派上用场,因为

log3=$(python -c  'import math; print math.log(3)')

希望有所帮助!

答案 7 :(得分:0)

许多其他人指出,用bc选项调用的-l将包括标准数学库,并通过扩展提供其功能。 @dee指出了其他扩展程序,这些扩展程序解决了我在计算log2()时遇到的问题,这使我想到了这篇文章。我找不到“安装”它们的方法,但是可以在运行时通过调用bc时包含文件来加载它们:

bc -l extensions.bc

如果要将其设置为默认行为,请在Shell的配置文件或.rc中将环境变量BC_ENV_ARGS定义为-l /pathToExtension/extensions.bc