Odpowiedzi:
bc
obsługuje logarytm naturalny, jeśli jest wywoływany z -l
flagą. Za jego pomocą możesz obliczyć dziennik base-10 lub base-2:
$ bc -l
...
l(100)/l(10)
2.00000000000000000000
l(256)/l(2)
8.00000000000000000007
Nie sądzę, aby istniała funkcja silnia, ale łatwo jest napisać:
$ 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
Lub:
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
Aby być zgodnym z POSIX, musisz go napisać:
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))
}
To znaczy: nazwa funkcji jednoznakowej, nie print
, nie halt
, nawias wymagany w return(x)
. Jeśli nie potrzebujesz sprawdzania poprawności danych wejściowych (tutaj dla dodatnich liczb całkowitych), to po prostu:
define f(n) {
if (n < 2) return(1)
return(n * f(n - 1))
}
0!=1
podobnie jak 1!=1
. Przynajmniej tak mówi wikipedia.
Orpie jest kalkulator kalkulator i wiersza poleceń maniaków. Emuluje nowoczesny kalkulator HP RPN, który jest oczywiście jedynym prawdziwym sposobem obliczania.
Jeśli jesteś heretykiem kalkulatorem, wychowanym na TI, Casios i tym podobnych, istnieje wiele samouczków RPN online, z którymi możesz rozpocząć reedukację. Podręcznik Orpie w końcu przyda ci się, gdy zdobędziesz sposób myślenia RPN.
Aby obliczyć 5! w Orpie, wystarczy wpisać go jak chcesz go napisać: 5 !. Możesz naciskać Entermiędzy nimi, aby 5
najpierw pchnąć się na stos, ale nie jest to konieczne.
Aby obliczyć log 10 (5), wpisz 5 Enter ' l o Enter. W tym przypadku musisz 5
najpierw przesunąć stos na stos, ponieważ następnym naciśnięciem klawisza nie jest operator. Ten pojedynczy cudzysłów przechodzi w tryb skrótów poleceń, który umożliwia rozpoczęcie pisania log10
, które można jednoznacznie zidentyfikować za pomocą tylko dwóch pierwszych znaków. ( l
sama daje ci naturalną funkcję dziennika ln
.)
Podobnie jak w przypadku każdego kalkulatora RPN, możesz uzyskać naprawdę szybki z Orpie, z odrobiną praktyki.
Orpie jest w magazynie repozytoriów Ubuntu. FreeBSD włącza go do portów, as math/orpie
. W systemie OS X można go zainstalować za pośrednictwem Homebrew . Pakiety innych firm mogą być dostępne dla innych systemów operacyjnych. Budowanie ze źródła może być trochę uciążliwe, ponieważ jest napisane w OCaml i prawdopodobnie nie masz zainstalowanego środowiska programistycznego OCaml. Przygotowanie jednego nie jest jednak szczególnie trudne.
Zawsze jest GNU Octave , emacs kalkulatorów wiersza poleceń (gdy chcesz mieć pełne środowisko programistyczne i język programowania wbudowany w kalkulator, a także tysiące opcjonalnych dodatków)
lub R, jeśli statystyki są bardziej twoje.
Przeważnie używam tylko bc -l
do załadowania standardowej biblioteki matematycznej ... Nawet bc
do niej pseudonimem bc -l
. Zobacz odpowiedź Mat, aby uzyskać informacje na temat definiowania funkcji silni .... ale bc
strona podręcznika definiuje ją jako:
define f (x) {
if (x <= 1) return (1);
return (f(x-1) * x);
}
Sprawdzanie <= 1 zamiast == 1 zapobiega niekończącej się pętli, jeśli zdarzy ci się podać jej liczbę ujemną (powinien to być błąd) lub zero (prawidłowy).
Moim ulubionym jest lekki, prosty W-Calc
.
http://w-calc.sourceforge.net
Nie musisz zaglądać do instrukcji ani ręcznie odtwarzać typowych funkcji, tak jak robisz bc
- polecenia są w większości dokładnie takie, jakich oczekujesz, więc po prostu wpisz, co chcesz, i po prostu działa. Testowanie zgodnie z twoim pytaniem - rzeczywiście log()
i n!
działaj zgodnie z oczekiwaniami.
(Co prawda nie słyszałem o Orpie - bardzo dobrze może być lepszą opcją.)
Jeśli masz porty Mac:
$ sudo /opt/local/bin/port install orpie