Как рассчитать лог числа с помощью bc?
Это первый раз, когда я использую bc. Я хочу рассчитать журнал (база 10) числа. Как мне это?
9 ответов
Взывать bc
с -l
опция (для включения математической библиотеки) вроде так
$ echo 'l(100)/l(10)' | bc -l
2.00000000000000000000
Использовать l
функция, которая является натуральным логарифмом. Возьмите логарифм числа, которое вас интересует, затем разделите на натуральный логарифм 10.
Логарифм x по отношению к основанию b может быть вычислен с учетом любой логарифмической функции для произвольного основания k - это действительно здорово!
log_b(x) = log_k(x) / log_k(b)
например
log_b(x) = ln(x) / ln(b)
если б =10:
log_10(x) = ln(x) / ln(10)
и -l в b c включает математическую библиотеку
вот почему это работает:
# bc -l
l(100) / l(10)
2.00000000000000000000
Если вы начнете bc
с -l
переключатель, то есть функция l()
который вычисляет натуральный логарифм своего аргумента.
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 ~ $
Надеюсь, это поможет вам.
Постер специально запрошен лог 10.
У меня есть 1.06.95 до н.э. на Ubuntu 12.10. "l(x)" в этой версии BC не является основанием 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
Не уверен, правильный способ установить это, и получил ошибки, пытаясь опубликовать его здесь.
Доминик-Люк Уэбб
Python может пригодиться для этого, как,
log3=$(python -c 'import math; print math.log(3)')
Надеюсь, это поможет!
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
Как отмечали многие другие, bc
вызывается с -l
option будет включать стандартные математические библиотеки и предлагать их функциональные возможности через расширения. @dee указал на дополнительные расширения, которые решили мою проблему вычисленияlog2()
что привело меня к этому посту. Я не нашел способа "установить" их, но они могут быть загружены во время выполнения, включая файл при вызовеbc
:
bc -l extensions.bc
Если вы хотите сделать это поведение по умолчанию, определите переменную среды BC_ENV_ARGS
к -l /pathToExtension/extensions.bc
в профиле вашей оболочки или.rc
Сbc -l
дает вам только натуральный логарифм, вы можете быстро определить функцию журнала самостоятельно:
define log(x) { return l(x)/l(10) }
log(10)
1.0000000