Slide 1

Slide 1 text

コマンドライン電卓 bc コマンド @ozuma5119 1 「新しいLinuxの教科書」を読む会 オンライン #3 2020/07/19

Slide 2

Slide 2 text

Linuxのコマンドラインで計算したい 2 3 + 7 = ? sin(π/2) = ? (4.3)3 = ?

Slide 3

Slide 3 text

Linuxのコマンドラインで計算したい 3 ● exprコマンド : expr 1 + 1 ● bashの算術式展開 $((1+1))) ● bcコマンド : echo "1 + 1" | bc

Slide 4

Slide 4 text

基本的な四則演算:もちろんできる 4 $ bc bc 1.06.95 ..(略)... 1+1 2 1-1 0 2*3 6 赤文字が入力、黒文字が出力

Slide 5

Slide 5 text

基本的な四則演算:もちろんできる 5 $ bc bc 1.06.95 ..(略)... 1+1 2 1-1 0 2*3 6 ※割り算は注意 デフォルトでは小数点切り捨て なので、scaleでケタ数を指定する 2/3 0 scale=5 2/3 .66666 ↑ 小数点の最初の0は省略される (他のプログラミング言語でも   一般的) 赤文字が入力、黒文字が出力

Slide 6

Slide 6 text

シェルスクリプトで使うとき 6 $ echo "1 + 1" | bc 2 $ 計算式をechoなどでパイプで渡してあげれば良いだけ もうちょっとちゃんと言うと…… → bcコマンドは標準入力を算術式として評価し、計算結果を標準出力へ出力 する

Slide 7

Slide 7 text

数式をファイルに書いてもOK 7 $ cat math.txt (1+3+5+90)*3 $ bc < math.txt 297 ※標準入力に数式を与えている

Slide 8

Slide 8 text

for などあるのでプログラムも書けます 8 $ cat math2 for (i=1; i < 10; i++) { i^2 } $ bc < math2 1 4 9 16 25 36 49 64 81 i=1から9までの、 iの2乗を出力

Slide 9

Slide 9 text

ここからおまけ:高度な計算 9 bc -l オプションを付けて起動すると、数学ライブラリがロードされる。 これにより以下の関数が使える ● s(x) : sin(x) [正弦関数] ● c(x) : cos(x) [余弦関数] ● a(x) : arctan(x) (または tan-1(x)) [逆正接関数] ● l(x) : log e (x) = ln(x) [自然対数] ● e(x) : ex (eは自然対数の底) [自然指数関数] ● j(n,x) : [n次ベッセル関数]

Slide 10

Slide 10 text

タンジェント tan(x) なんて軟弱なものはない 10 自分で作れるでしょ!! ● tan(x) = sin(x)/cos(x) なので…… ○ t(x) = s(x)/c(x) ※ 三角関数・自然対数・指数関数exp・べき乗があれば、  世の中の関数はだいたい作れる

Slide 11

Slide 11 text

例題:急にコマンドラインで円周率が20ケタ必要になった!!!!! 11  どうする!

Slide 12

Slide 12 text

例題:急にコマンドラインで円周率が20ケタ必要になった!!!!! 12 1. tan(π/4) = 1 である 2. よって、tanの逆関数を4倍すれば円周率πが出てくる 45度 = π/4 tan(π/4) = b/a = 1 tan-1(1) = arctan(1) = π/4 よって、 4 * arctan(1) = π $ bc -l scale=20 4 * a(1) 3.14159265358979323844 a b