Apakah ada kalkulator baris perintah lain yang mendukung log
, n!
perhitungan? Setidaknya bc
tidak bisa melakukan itu, ia mengatakan kesalahan parse
Lebih baik jika saya bisa menggunakan skrip, mis echo '5!' | program
Apakah ada kalkulator baris perintah lain yang mendukung log
, n!
perhitungan? Setidaknya bc
tidak bisa melakukan itu, ia mengatakan kesalahan parse
Lebih baik jika saya bisa menggunakan skrip, mis echo '5!' | program
Jawaban:
bc
mendukung logaritma natural jika dipanggil dengan -l
bendera. Anda dapat menghitung log basis-10 atau basis-2 dengan itu:
$ bc -l
...
l(100)/l(10)
2.00000000000000000000
l(256)/l(2)
8.00000000000000000007
Saya tidak berpikir ada faktorial bawaan, tapi itu cukup mudah untuk menulis sendiri:
$ 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
Atau:
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
Agar sesuai dengan POSIX, Anda harus menulisnya:
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))
}
Yaitu: nama fungsi karakter tunggal, tidak print
, tidak halt
, tanda kurung diperlukan dalam return(x)
. Jika Anda tidak memerlukan validasi input (di sini untuk bilangan bulat positif), itu hanya:
define f(n) {
if (n < 2) return(1)
return(n * f(n - 1))
}
0!=1
sama seperti 1!=1
. Setidaknya, itulah yang dikatakan wikipedia.
Orpie adalah yang kalkulator untuk kalkulator dan baris perintah Geeks. Ini mengemulasi kalkulator HP RPN modern, yang tentu saja satu-satunya cara yang benar untuk menghitung.
Jika Anda seorang bidat kalkulator, dibesarkan di TI, Casios, dan semacamnya, ada banyak tutorial RPN online yang dengannya Anda dapat memulai pendidikan ulang Anda. Manual Orpie pada akhirnya akan berguna bagi Anda, setelah Anda mendapatkan cara berpikir RPN.
Untuk menghitung 5! di Orpie, ketik saja seperti yang Anda akan menulis itu: 5 !. Anda dapat menekan di Enterantara mereka untuk mendorong 5
ke tumpukan terlebih dahulu, tetapi itu tidak perlu.
Untuk menghitung log 10 (5), ketik 5 Enter ' l o Enter. Anda harus mendorongnya 5
ke tumpukan terlebih dahulu dalam kasus ini, karena keystroke berikutnya bukan operator. Karakter kutipan tunggal itu memasuki mode singkatan perintah, yang memungkinkan Anda mulai mengetik log10
, yang dapat Anda identifikasi secara unik hanya dengan dua karakter pertama. ( Sebagai gantinya l
, Anda mendapatkan fungsi log natural ln
.)
Seperti halnya kalkulator RPN, Anda bisa menjadi sangat cepat dengan Orpie, dengan sedikit latihan.
Orpie ada dalam stok repo Ubuntu. FreeBSD memasukkannya dalam Ports, as math/orpie
. Pada OS X, Anda dapat menginstalnya melalui Homebrew . Paket pihak ketiga mungkin tersedia untuk OS lain. Membangun dari sumber mungkin sedikit tugas, karena ditulis dalam OCaml , dan Anda mungkin tidak menginstal lingkungan pengembangan OCaml. Mempersiapkannya tidak terlalu sulit.
Selalu ada GNU Octave , emacs dari kalkulator baris perintah (untuk saat Anda menginginkan lingkungan pengembangan yang lengkap dan bahasa pemrograman bawaan untuk kalkulator Anda, dan ribuan add-ons opsional)
atau R jika statistik lebih penting.
Saya kebanyakan hanya menggunakan bc -l
untuk mendapatkan perpustakaan matematika standar dimuat ... Saya bahkan telah bc
alias bc -l
. Lihat jawaban Mat untuk info tentang mendefinisikan fungsi faktorial .... meskipun bc
halaman manual mendefinisikannya sebagai:
define f (x) {
if (x <= 1) return (1);
return (f(x-1) * x);
}
Memeriksa <= 1 daripada == 1 mencegah perulangan tanpa akhir jika Anda memberinya angka negatif (harus berupa kesalahan) atau nol (valid).
Favorit saya adalah yang ringan, sederhana W-Calc
.
http://w-calc.sourceforge.net
Anda tidak harus melihat di manual atau secara manual membuat ulang fungsi-fungsi umum, seperti yang Anda lakukan bc
- perintah-perintahnya sebagian besar persis apa yang Anda harapkan, jadi ketikkan saja apa yang Anda inginkan dan itu hanya berfungsi. Menguji sesuai pertanyaan Anda - memang log()
& n!
berfungsi seperti yang diharapkan.
(Memang saya belum pernah mendengar tentang Orpie - mungkin pilihan yang lebih baik.)
Jika Anda memiliki Port Mac:
$ sudo /opt/local/bin/port install orpie