サステイナブル関数???
2015年10月28日 (水) 投稿者: メディア技術コース
みなさん、こんにちは、
東京工科大学は「サステイナブル(持続可能な)」社会実現のための教育を行っています。「サステイナブル」であるためには、無駄がないことや省エネなども関係してきます。資源の有効活用や再利用も重要ですね。
さて、数学で「サステイナブル」って考えられるでしょうか?実は再利用可能な関数があるのです。数学の関数とは言っても、ここでは、コンピュータで用いられる関数のことを指します。
数学で「階乗」という演算があります。数を1ずつ減らしながら掛け合わせることです。例えば3の階乗は 3! と書き、その演算は 3×2×1 を指します。よく考えてみると、演算は1つ減らした数を掛けるという基本的な演算の繰り返しとなっていますね?この基本演算の繰り返しであるということをうまくプログラムで作れないでしょうか?
メディア学部の「音声音響メディア処理論」ではscilabという数値計算ソフトを使って授業を行っていますが、scilabでは自分で関数を定義できます。kaijoという関数を作ってみましょう。
1行目のfunction文は、この関数は名前は kaijo で x を入れると、この関数中で計算された y の値を出力することを宣言しています。
if の文は、もし、入力が 1 だったら、その値をそのまま、y に入れて終わる、else つまり、そうでない場合は、というところまで行くと、…
おや?kaijoという関数の中に自分の名前 kaijo が出てきますね?そうでない場合は、入力 x にそれより1つ小さい値を入れた自分自身 kaijo( x - 1 )を出力せよと書いてあるのです。自分の中で自分って呼べるのでしょうか?
それが、できるんですね。
scilabではこんな風に関数を使います。
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 は、いわば再利用可能な関数なのです。このような使い方を再帰的(リカーシブ)な使い方といいます。これをすべて展開した形で書くのは大変ですね。このような再利用できる関数を使うと、短くプログラムを書くことができます。「サステイナブル」につながる関数といえるかもしれません。
相川清明
「在学生向け」カテゴリの記事
- チュラロンコン大学からのインターン学生との再会(2019.03.14)
- あにめたまご2019「文化庁若手アニメータ等人材育成事業」(2019.03.12)
- タイの提携校、キンモンクット大学トンブリに短期訪問しませんか?(2019.03.11)
- 学会紹介:ADADA Japan学術大会と情報処理学会EC2019(2019.03.09)
- 大学院授業:プロシージャルアニメーション特論の紹介(2019.03.08)
「高校生向け」カテゴリの記事
- チュラロンコン大学からのインターン学生との再会(2019.03.14)
- 大学院授業:プロシージャルアニメーション特論の紹介(2019.03.08)
- ゲームの学会?!(2019.03.07)
- 香港理工大学デザイン学部の紹介(2019.03.04)
- 香港理工大学デザイン学部を訪問し、学部長Lee先生にお会いしました!(2019.03.03)