web-dev-qa-db-fra.com

Comment calculer le journal d'un nombre en utilisant bc?

C'est la première fois que j'utilise bc. Je veux calculer le log (base 10) d'un nombre. Comment puis-je cela?

32
Bruce

Invoquez bc avec l'option -l (pour activer la bibliothèque mathématique) comme suit

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

Utilisez la fonction l qui est le journal naturel. Prenez le log du numéro qui vous intéresse puis divisez-le par le log naturel de 10.

53
Ray Toal

le logarithme de x par rapport à la base b peut être calculé à partir de toute fonction de logarithme correspondant à une base k quelconque - c'est plutôt cool!

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

par exemple. 

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

si b = 10:

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

et -l in bc active la bibliothèque mathématique

c'est pourquoi cela fonctionne:

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

Si vous démarrez bc avec le commutateur -l, il existe une fonction l() qui calcule le journal naturel de son argument.

3

Poster spécifiquement demandé log 10.

J'ai bc 1.06.95 sur Ubuntu 12.10. "l (x)" dans cette version de BC n'est pas base 10. C'est un log naturel (base e). Ceci est confirmé ici et la Colombie-Britannique a travaillé de cette manière depuis un certain temps:

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

Je suppose que ce dont vous avez besoin pour que le journal de base 10 fonctionne est l’extension BC:

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

Pas sûr de savoir comment installer ceci, et j'ai eu des erreurs en essayant de le poster ici.

Dominic-Luc Webb

2
dee

bc ne donne pas directement le logarithme autrement qu'except ou autrement, en utilisant bc, nous ne pouvons calculer que ln (x). Donc, pour obtenir un autre logarithme de base, il est sage de se rappeler certaines identités. La base est -

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

Ici, je vous donne quelques exemples de différents logarithmes de base -

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 ~ $ 

J'espère que cela vous aide.

2
Palash Kanti Kundu

Python peut être utile pour cela,

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

J'espère que cela pourra aider!

0
shahryar
0