53

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

4

8 回答 8

77

bc像这样调用-l选项(启用数学库)

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

使用l自然对数函数。取您感兴趣的数字的对数,然后除以 10 的自然对数。

于 2011-11-01T03:54:12.397 回答
47

给定任意底数 k 的任何对数函数,可以计算 x 相对于底数 b 的对数——这实际上非常酷!

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

例如

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

如果 b=10:

log_10(x) = ln(x) / ln(10)

和 -l in bc 启用数学库

所以这就是为什么它有效:

# bc -l
l(100) / l(10)
2.00000000000000000000
于 2011-11-01T04:03:18.620 回答
5

如果您从开关开始,那么有一个函数bc可以计算其参数的自然对数。-ll()

于 2011-11-01T03:56:56.763 回答
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

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

多米尼克-吕克韦伯

于 2013-08-25T08:52:00.887 回答
2

bc 不直接给出除 except 或其他方式的对数,使用 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 ~ $ 

希望这对您有所帮助。

于 2017-07-14T16:35:53.187 回答
1
bc -l

l(____) 

(在空白处填写您的号码)

我在以下位置找到了教程:

http://unix-simple.blogspot.com/2006/10/unix-basic-calculator.html

http://unix-simple.blogspot.com/2006/10/taking-roots-with-unix-basic.html

于 2011-11-01T03:54:34.680 回答
1

Python可以派上用场,因为,

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

希望有帮助!

于 2017-07-19T23:30:21.057 回答
0

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

bc -l extensions.bc

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

于 2020-03-04T18:51:16.560 回答