「新しいLinuxの教科書」を読む会 オンライン #3 での発表資料です。 https://linuxbook.connpass.com/event/180887/
コマンドライン電卓bc コマンド@ozuma51191「新しいLinuxの教科書」を読む会 オンライン #3 2020/07/19
View Slide
Linuxのコマンドラインで計算したい23 + 7 = ?sin(π/2) = ?(4.3)3 = ?
Linuxのコマンドラインで計算したい3● exprコマンド : expr 1 + 1● bashの算術式展開 $((1+1)))● bcコマンド : echo "1 + 1" | bc
基本的な四則演算:もちろんできる4$ bcbc 1.06.95..(略)...1+121-102*36赤文字が入力、黒文字が出力
基本的な四則演算:もちろんできる5$ bcbc 1.06.95..(略)...1+121-102*36※割り算は注意デフォルトでは小数点切り捨てなので、scaleでケタ数を指定する2/30scale=52/3.66666↑ 小数点の最初の0は省略される(他のプログラミング言語でも 一般的)赤文字が入力、黒文字が出力
シェルスクリプトで使うとき6$ echo "1 + 1" | bc2$計算式をechoなどでパイプで渡してあげれば良いだけもうちょっとちゃんと言うと……→ bcコマンドは標準入力を算術式として評価し、計算結果を標準出力へ出力する
数式をファイルに書いてもOK7$ cat math.txt(1+3+5+90)*3$ bc < math.txt297※標準入力に数式を与えている
for などあるのでプログラムも書けます8$ cat math2for (i=1; i < 10; i++) {i^2}$ bc < math2149162536496481i=1から9までの、iの2乗を出力
ここからおまけ:高度な計算9bc -l オプションを付けて起動すると、数学ライブラリがロードされる。これにより以下の関数が使える● s(x) : sin(x) [正弦関数]● c(x) : cos(x) [余弦関数]● a(x) : arctan(x) (または tan-1(x)) [逆正接関数]● l(x) : loge(x) = ln(x) [自然対数]● e(x) : ex (eは自然対数の底) [自然指数関数]● j(n,x) : [n次ベッセル関数]
タンジェント tan(x) なんて軟弱なものはない10自分で作れるでしょ!!● tan(x) = sin(x)/cos(x) なので……○ t(x) = s(x)/c(x)※ 三角関数・自然対数・指数関数exp・べき乗があれば、 世の中の関数はだいたい作れる
例題:急にコマンドラインで円周率が20ケタ必要になった!!!!!11 どうする!
例題:急にコマンドラインで円周率が20ケタ必要になった!!!!!121. tan(π/4) = 1 である2. よって、tanの逆関数を4倍すれば円周率πが出てくる45度 = π/4tan(π/4) = b/a = 1tan-1(1) = arctan(1) = π/4よって、 4 * arctan(1) = π$ bc -lscale=204 * a(1)3.14159265358979323844ab