« 卒業生との共著 | トップページ | 40パーセントの努力と60パーセントの才能 »

サステイナブル関数??? 

|

みなさん、こんにちは、

 
東京工科大学は「サステイナブル(持続可能な)」社会実現のための教育を行っています。「サステイナブル」であるためには、無駄がないことや省エネなども関係してきます。資源の有効活用や再利用も重要ですね。
さて、数学で「サステイナブル」って考えられるでしょうか?実は再利用可能な関数があるのです。数学の関数とは言っても、ここでは、コンピュータで用いられる関数のことを指します。
数学で「階乗」という演算があります。数を1ずつ減らしながら掛け合わせることです。例えば3の階乗は 3! と書き、その演算は 3×2×1 を指します。よく考えてみると、演算は1つ減らした数を掛けるという基本的な演算の繰り返しとなっていますね?この基本演算の繰り返しであるということをうまくプログラムで作れないでしょうか?
メディア学部の「音声音響メディア処理論」ではscilabという数値計算ソフトを使って授業を行っていますが、scilabでは自分で関数を定義できます。kaijoという関数を作ってみましょう。
 

  Kaijo

1行目のfunction文は、この関数は名前は kaijo で x を入れると、この関数中で計算された y の値を出力することを宣言しています。

if の文は、もし、入力が 1 だったら、その値をそのまま、y に入れて終わる、else つまり、そうでない場合は、というところまで行くと、…

おや?kaijoという関数の中に自分の名前 kaijo が出てきますね?そうでない場合は、入力 x にそれより1つ小さい値を入れた自分自身 kaijo( x - 1 )を出力せよと書いてあるのです。自分の中で自分って呼べるのでしょうか?

それが、できるんですね。

scilabではこんな風に関数を使います。

Use_kaijo

1行目は、これから kaijo.sci という関数を使いますという宣言です。2行目を実行すると

ans  =

    6. 

が出力されます。確かに 3 の階乗の値になってますね。

さて、どんなことが行われたのでしょうか?

動作を書き下してみると以下のようになります。
kaijo( 3 )を呼ぶと 入力した値 × それより1つ小さい値の kaijo 関数の積になります。
kaijo( 2 )は 2 × kaijo( 1 ) になります。すべて書き下してみると3×2×1になっています。
 
kaijo( 3 )
  = 3 × kaijo( 2 )
  = 3 × 2 × kaijo( 1 )
  = 3 × 2 × 1
 
つまり、関数 kaijo は、いわば再利用可能な関数なのです。このような使い方を再帰的(リカーシブ)な使い方といいます。これをすべて展開した形で書くのは大変ですね。このような再利用できる関数を使うと、短くプログラムを書くことができます。「サステイナブル」につながる関数といえるかもしれません。
 
相川清明

在学生向け」カテゴリの記事

高校生向け」カテゴリの記事

« 卒業生との共著 | トップページ | 40パーセントの努力と60パーセントの才能 »