bcの使い方
Linux(Ubuntu)で「bc」というコマンドを使った。計算機です。
$ bc
bcを起動するとカーソルが点滅します。そこに式を入力すると結果が表示されます。
1 + 1 (入力)
2 (結果)
(入力待ち)
これを終了するには、
quit
と入力します。これでコマンドプロンプトの状態に戻ります。
またパイプラインを使って次のように計算させることもできます。
$ echo 1 + 1 | bc
2
実数を使えるようにします。
小数点以下の桁数はslcaleで設定します。
例えば、√2を小数点以下5桁まで求めるには以下のようにします。
平方根を求めるにはsqrt(x)を使います。
$ bc
scale=5 (入力)
sqrt(2) (入力)
1.41421 (出力)
三角関数は、sinはs(rad), cosはc(rad), arctanは(rad) (radはラジアンで入力)となり、これを使う際には以下のように指定します。
$ bc -l
s(1) (入力)
.84147098480789650665 (出力)
c(1) (入力)
.54030230586813971740 (出力)
a(1) (入力)
.78539816339744830961 (出力)
変数も使えます。
$bc -l
a = s(1) (入力)
b = c(1) (入力)
a+b (入力)
1.38177329067603622405 (出力)
あとはこの組合せで計算できます。
簡単ですがbcの使い方の基本でした。
「任意精度」にひっかかりました
使い方を確認する際に、
$man bc
としました。すると説明が出ます。
bc is a language that supports arbitrary precision numbers with interactive execution of statements. There are some similarities in the syntax to the C programming language. A standard math library is available by command line option. If requested, the math library is defined before processing any files. bc starts by processing code from all the files listed on the command line in the order listed. After all files have been processed, bc reads from the standard input. All code is executed as it is read. (If a file contains a command to halt the processor, bc will never read from the standard input.)
ubuntu20.04の「$man bc」より引用
bcは、ステートメントのインタラクティブな実行で任意精度の数値をサポートする言語です。 構文には、Cプログラミング言語といくつかの類似点があります。 標準の数学ライブラリは、コマンドラインオプションで利用できます。 要求された場合、数学ライブラリはファイルを処理する前に定義されます。 bcは、コマンドラインにリストされているすべてのファイルのコードをリストされている順序で処理することから始めます。 すべてのファイルが処理された後、bcは標準入力から読み取ります。 すべてのコードは、読み取られるときに実行されます。 (ファイルにプロセッサを停止するコマンドが含まれている場合、bcは標準入力から読み取ることはありません。)
Google翻訳で翻訳
arbitrary precision? 任意精度?恥ずかしながら「任意精度」という言葉を良く知りません。じっくり見てみると、「任意精度」とは「任意の精度」ということでしょうか。
Wikipediaで見てみました。
任意精度演算 – WikipediaWikipediaの説明は、日本語が不自由な感じです。
任意精度演算[1]とは、数値の精度を必要ならいくらでも伸ばしたりできるような演算システム(実際上は利用可能なメモリ容量に制限されるが)による演算である。
https://ja.wikipedia.org/wiki/%E4%BB%BB%E6%84%8F%E7%B2%BE%E5%BA%A6%E6%BC%94%E7%AE%97
「いくらでも伸ばしたり」の「たり」っていうところがわかりませんでした。
その後もわたしには難しすぎる説明が続いていたので、「任意精度演算」のわたし的な解釈として、「数値の精度を任意に変更することが可能な演算」と理解することとしました。
とりあえずbcの場合は、
scale = 5
とすれば、小数点以下5桁の精度で演算してくれることがわかったので今回はここまでです。
あとは、
$bc -l
として、三角関数など使えるようにすればだいたい事足ります。
これより難しい計算は、cで書いた方がいいかもしれないと感じました。
今回はarbitrary precisionについて何となく理解が深まり、英文読込力が少し上がったかもしれません。
コンピュータ初心者なのでこのくらいでご容赦ください。理解が間違っていたらご教示いただければ幸甚です。