我想计算一个数字的对数(以10为底),如何使用bc来完成?
bc
cyej8jka1#
使用-l选项调用bc(以启用数学库),如下所示:
-l
$ echo 'l(100)/l(10)' | bc -l 2.00000000000000000000
使用l函数,它是一个自然对数函数,取你感兴趣的数字的自然对数,然后除以自然对数10。
l
kpbpu0082#
给定任意以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)
并且bc中的-l启用数学库这就是为什么它能起作用
# bc -l l(100) / l(10) 2.00000000000000000000
xggvc2p63#
如果你用-l开关来启动bc,那么就有一个函数l()来计算它的参数的自然对数。
l()
j9per5c44#
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 ~ $
希望这对你有帮助。
mwngjboj5#
bc -l l(____)
(fill在空白处填写您的电话号码)我在以下位置找到教程:http://unix-simple.blogspot.com/2006/10/unix-basic-calculator.html以及http://unix-simple.blogspot.com/2006/10/taking-roots-with-unix-basic.html
db2dz4w86#
海报特别要求日志10。我在Ubuntu 12.10上有bc 1.06.95。在这个版本的BC中,“l(x)”不是以10为底的。它是自然对数(以e为底)。这在这里得到了证实,BC已经这样工作了一段时间:http://linux.about.com/od/commands/l/blcmdl1_bc.htm我猜想要使以10为底的对数工作,需要BC扩展:http://x-bc.sourceforge.net/extensions_bc.html不知道正确的方式来安装这个,并得到了错误,试图张贴在这里。多米尼克-吕克·韦伯
bihw5rsg7#
正如许多其他人指出的那样,用-l选项调用bc将包括标准数学库,并通过扩展提供它们的功能。@dee指出了一些额外的扩展,这些扩展解决了我在计算log2()时遇到的问题,正是这些问题导致了我写这篇文章。但是可以通过在调用bc时包含文件来在运行时加载它们:
log2()
bc -l extensions.bc
如果要将此设置为默认行为,请在shell配置文件或.rc中将环境变量BC_ENV_ARGS定义为-l /pathToExtension/extensions.bc
BC_ENV_ARGS
-l /pathToExtension/extensions.bc
nxowjjhe8#
由于bc -l只给出自然对数,因此您可以自己快速定义log函数:
bc -l
define log(x) { return l(x)/l(10) } log(10) 1.0000000
8条答案
按热度按时间cyej8jka1#
使用
-l
选项调用bc
(以启用数学库),如下所示:使用
l
函数,它是一个自然对数函数,取你感兴趣的数字的自然对数,然后除以自然对数10。kpbpu0082#
给定任意以k为底的对数函数,就可以计算x以b为底的对数--这真的很酷!
例如:
如果B=10:
并且bc中的-l启用数学库
这就是为什么它能起作用
xggvc2p63#
如果你用
-l
开关来启动bc
,那么就有一个函数l()
来计算它的参数的自然对数。j9per5c44#
bc不会直接给出对数,除非用except或其他方法,使用bc,我们只能计算ln(x)。因此,要得到其他的底对数,记住一些恒等式是明智的。
我在这里给你们一些不同的基对数的例子-
希望这对你有帮助。
mwngjboj5#
(fill在空白处填写您的电话号码)
我在以下位置找到教程:
http://unix-simple.blogspot.com/2006/10/unix-basic-calculator.html
以及
http://unix-simple.blogspot.com/2006/10/taking-roots-with-unix-basic.html
db2dz4w86#
海报特别要求日志10。
我在Ubuntu 12.10上有bc 1.06.95。在这个版本的BC中,“l(x)”不是以10为底的。它是自然对数(以e为底)。这在这里得到了证实,BC已经这样工作了一段时间:
http://linux.about.com/od/commands/l/blcmdl1_bc.htm
我猜想要使以10为底的对数工作,需要BC扩展:
http://x-bc.sourceforge.net/extensions_bc.html
不知道正确的方式来安装这个,并得到了错误,试图张贴在这里。
多米尼克-吕克·韦伯
bihw5rsg7#
正如许多其他人指出的那样,用
-l
选项调用bc
将包括标准数学库,并通过扩展提供它们的功能。@dee指出了一些额外的扩展,这些扩展解决了我在计算log2()
时遇到的问题,正是这些问题导致了我写这篇文章。但是可以通过在调用bc
时包含文件来在运行时加载它们:如果要将此设置为默认行为,请在shell配置文件或.rc中将环境变量
BC_ENV_ARGS
定义为-l /pathToExtension/extensions.bc
nxowjjhe8#
由于
bc -l
只给出自然对数,因此您可以自己快速定义log函数: