Upgrade to Pro — share decks privately, control downloads, hide ads and more …

コマンドライン電卓bcコマンド

 コマンドライン電卓bcコマンド

「新しいLinuxの教科書」を読む会 オンライン #3
での発表資料です。
https://linuxbook.connpass.com/event/180887/

Osumi, Yusuke

July 19, 2020
Tweet

More Decks by Osumi, Yusuke

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  5. 基本的な四則演算:もちろんできる
    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は省略される
    (他のプログラミング言語でも
      一般的)
    赤文字が入力、黒文字が出力

    View Slide

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

    View Slide

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

    View Slide

  8. 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乗を出力

    View Slide

  9. ここからおまけ:高度な計算
    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次ベッセル関数]

    View Slide

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

    View Slide

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

    View Slide

  12. 例題:急にコマンドラインで円周率が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

    View Slide