min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

数学 総和記号 Σ(シグマ)をforループで実現する(bash)

数学に触れる機会が増えてきて。総和記号をみる都度「forループでいけるよねこれ」と思ってたけど。

やってる人が普通にいた。

blog.apar.jp

 

総和記号 Σ(シグマ)。 

f:id:min117:20181118143335p:plain

pythonの数学ライブラリとか使えばすぐできるんだろうけど、中で何やってるかイマイチ分からない。自分で実現したい。


やってみる。今回はpythonではなく bashで。

 

まずはこれを例題に。

f:id:min117:20181118142124p:plain

 

変数i (1から5まで)増やしていって、合計値をsumに格納することにする。

 

$ sum=0; for i in $(seq 1 5); do echo 'iは'"$i"; if [[ "$i" < $((i+1)) ]]; then echo "足します"; sum=$((sum + i)); echo 'sumは'"$sum"; echo '-----'; fi; done

f:id:min117:20181118143058p:plain

bash は変数の足し算にクセがある。以前(古いbash)ではexprコマンドを使っていたようだけど、今は $(( ドル記号なしの変数 の計算式 )) で計算できるようだ。

f:id:min117:20181118144233p:plain

 

 

これもやってみる。

f:id:min117:20181118144645p:plain

$ sum=0; for i in $(seq 1 5); do echo 'iは'"$i"; if [[ "$i" < $((i+1)) ]]; then echo "計算します"; sum=$((sum + (2*i-1))); echo 'sumは'"$sum"; echo -----; fi; done

f:id:min117:20181118145053p:plain

 

ループ(繰り返し)についてのこの指摘はナルホドと思った。

f:id:min117:20181118145305p:plain

bashだとこう。

f:id:min117:20181118150038p:plain

seqコマンドを理解していれば間違えることは無さそう。次回はPythonでやってみる。