C'è qualche altra riga di comando calcolatrice che supporta log
, n!
i calcoli? Almeno bc
non posso farlo, mi ha detto di analizzare l'errore
È meglio se potessi usare lo script, ad es echo '5!' | program
C'è qualche altra riga di comando calcolatrice che supporta log
, n!
i calcoli? Almeno bc
non posso farlo, mi ha detto di analizzare l'errore
È meglio se potessi usare lo script, ad es echo '5!' | program
Risposte:
bc
supporta il logaritmo naturale se invocato con la -l
bandiera. È possibile calcolare il registro base-10 o base-2 con esso:
$ bc -l
...
l(100)/l(10)
2.00000000000000000000
l(256)/l(2)
8.00000000000000000007
Non penso che ci sia un fattoriale incorporato, ma è abbastanza facile da scrivere:
$ bc
...
define fact_rec (n) {
if (n < 0) {
print "oops";
halt;
}
if (n < 2) return 1;
return n*fact_rec(n-1);
}
fact_rec(5)
120
O:
define fact_it (n) {
if (n < 0) {
print "oops";
halt;
}
res = 1;
for (; n > 1; n--) {
res *= n;
}
return res;
}
fact_it(100)
93326215443944152681699238856266700490715968264381621468592963895217\
59999322991560894146397615651828625369792082722375825118521091686400\
0000000000000000000000
Per essere conforme a POSIX, dovresti scriverlo:
define f(n) {
auto s, m
if (n <= 0) {
"Invalid input: "
n
return(-1)
}
s = scale
scale = 0
m = n / 1
scale = s
if (n != m) {
"Invalid input: "
n
return(-1)
}
if (n < 2) return(1)
return(n * f(n - 1))
}
Cioè: nome della funzione a carattere singolo, no print
, no halt
, parentesi richiesta in return(x)
. Se non hai bisogno della convalida dell'input (qui per numeri interi positivi), è solo:
define f(n) {
if (n < 2) return(1)
return(n * f(n - 1))
}
0!=1
proprio come 1!=1
. Almeno, questo è quello che dice Wikipedia.
Orpie è la calcolatrice per i geek calcolatrice e riga di comando. Emula un moderno calcolatore HP RPN, che è ovviamente l'unico vero modo per calcolare.
Se sei un calcolatore eretico, cresciuto su TI, Casios e simili, ci sono molti tutorial RPN online con cui puoi iniziare la tua rieducazione. Il manuale di Orpie alla fine ti sarà utile, una volta capito il modo di pensare di RPN.
Per calcolare 5! in Orpie, basta digitare è come ci si scrive: 5 !. Puoi premere Entertra di loro per spingere 5
prima nello stack, ma non è necessario.
Per calcolare il registro 10 (5), digitare 5 Enter ' l o Enter. In 5
questo caso, devi prima inserire lo stack nello stack, poiché la successiva sequenza di tasti non è un operatore. Quel singolo carattere tra virgolette entra nella modalità abbreviazione del comando, che ti consente di iniziare a digitare log10
, che puoi identificare in modo univoco solo con i primi due caratteri. (da l
solo ti offre invece la funzione log naturale ln
).
Come con qualsiasi calcolatrice RPN, puoi diventare davvero veloce con Orpie, con un po 'di pratica.
Orpie è nei repository Ubuntu di serie. FreeBSD lo include in Porte, come math/orpie
. Su OS X, puoi installarlo tramite Homebrew . Pacchetti di terze parti potrebbero essere disponibili per altri sistemi operativi. Costruire dalla fonte può essere un po 'noioso, poiché è scritto in OCaml e probabilmente non hai installato un ambiente di sviluppo OCaml. Tuttavia, ottenere una configurazione non è particolarmente difficile.
C'è sempre GNU Octave , gli emacs dei calcolatori da riga di comando (per quando vuoi un ambiente di sviluppo completo e un linguaggio di programmazione integrato nella tua calcolatrice e migliaia di componenti aggiuntivi opzionali)
o R se le statistiche sono più le tue cose.
Per lo più uso solo bc -l
per caricare la libreria matematica standard ... Ho persino un bc
aliasing bc -l
. Vedi la risposta di Mat per informazioni sulla definizione di una funzione fattoriale .... sebbene la bc
pagina man la definisca come:
define f (x) {
if (x <= 1) return (1);
return (f(x-1) * x);
}
Il controllo per <= 1 anziché == 1 impedisce un ciclo infinito se ti capita di dargli un numero negativo (dovrebbe essere un errore) o zero (valido).
Il mio preferito è il leggero, semplice W-Calc
.
http://w-calc.sourceforge.net
Non devi guardare nel manuale o ricreare manualmente le funzioni comuni, come fai con te bc
: i comandi sono per lo più esattamente quello che ti aspetteresti, quindi digita semplicemente quello che vuoi e funziona. Test secondo la tua domanda - anzi log()
e n!
funziona come previsto.
(Devo ammettere che non ho sentito parlare di Orpie - molto bene potrebbe essere un'opzione migliore.)
Se disponi di porte Mac:
$ sudo /opt/local/bin/port install orpie