プログラミングの講座で、さらっと関数という言葉を使用していた。
プログラミングにおける関数は、0個以上の情報を受け取り、一定の決まった処理を行う塊だった。
また、戻り値として指定したものを元の処理に返すことができた。
…これは、関数という言葉の特殊な例だろう。
では、一般的な「関数」とは何なのだろうか。
というわけで、今回はこの関数というのが何なのかを調べてみよう。
「関数」の辞書的な意味
広辞苑先生に聞いてみよう。
①〔数〕数の集合Aから数の集合Bへの写像y=f(x)のこと。xを独立変数、yを従属変数という。Aが複素数の集合ならば、特にfを複素変数関数という。Aとして2次元空間、3次元空間、…の部分集合をとる時は、2変数関数、3変数関数、…(総称して多変数関数)という。函数。
かん‐すう【関数】クワン‥ – 広辞苑無料検索
②コンピューターで、与えられた入力パラメーターに基づき、定められた処理を実行しその結果を出力する一連の命令群。ソフトウェアの作成時には、関数の入力パラメーターと出力の値だけを理解すればよく、モジュール化が図れる。
プログラミングで解説したものは②だ。関数を作成するメリットも書かれている。
とはいえ、今回は①の方を深堀りしてみよう。
数学的な関数
広辞苑では集合だの写像だの書かれているが、先にちょっと具体的にしてみよう。
中学・高校でやった関数
中学の頃にやった関数を覚えているだろうか。
比例、反比例、一次関数、二次関数などを扱っていた。
これらは、関数の具体的な例だ。
この場合の関数の定義は、以下のように表せる。
ある数\(x\)を一つ決めたとき、それに対応する\(y\)の値がただ一つに定まるならば、
\(y\)を\(x\)の関数と呼ぶ。
要するに、\(x\)を一つに決めたら\(y\)も一つに決まるような関係のことだ。
具体例として、比例\(y = ax\)を考えてみよう。\(a\)は定数とする。
このとき、\(x\)をどんな値にしようと、\(y\)の値は必ず\(ax\)となる。
\(x\)を決めると\(y\)も決まるので、これは関数だ。
反比例は、実数から0を除いた部分でこれが成り立っている。
一次関数は比例と同じく成り立つのはわかるだろう。
二次関数\(y = ax^2\)はちょっと見てみよう。先に言うと、これも関数だ。
これについて、\(x\)が例えば2のとき、-2のときを考えると、両方とも\(y\)の値は\(4a\)となる。
が、これは\(x\)の値が一つ決まると\(y\)も一つになるという関係は成り立っている。
つまり、関数で問題ない。
では、一つクイズ。高校の内容だ。
原点(0, 0)、半径1の円\(x^2 + y^2 = 1\)について、\(y\)は\(x\)の関数だろうか。
どうだろうか。
答えは、関数ではない。
なぜかというと、例えば\(x = 0\)の時。
このとき、\(y\)の値は1、もしくは-1となる。
\(x\)を一つに決めたのに、\(y\)が二通り存在するので、これは関数ではない。
では、もう一つクイズ。ちょっと日常に絡めてみよう。
一定の大きさの郵便物を送るとき、その重さ\(x\)と、郵送料金\(y\)について、\(y\)は\(x\)の関数と言えるだろうか。
例として、以下のようなイメージだ。
重さ\(x\) | 郵送料金\(y\) |
---|---|
50g以下 | 120円 |
100g以下 | 140円 |
150g以下 | 210円 |
250g以下 | 250円 |
500g以下 | 390円 |
1kg以下 | 580円 |
ちなみに、これは郵便局の公式ホームページから2020/3/25に引用した定型内郵便の料金表だ。
間違っていては怖いので、実際送る際はしっかり公式ページを参照して欲しい。
で、これが関数かどうか、というクイズ。
こちらは、関数だ。
重さが決まると、それに対する料金も必ず一つに定まるからだ。
同じ形、重さなのに料金が変わってはおかしいだろう。
ここまで、数式的な関数だ。
これを拡張して、広辞苑の意味を見ていこう。
集合で見る関数
さて、広辞苑の内容をもう一度見てみよう。
二つの集合\(A\)、\(B\)があり、片方からもう片方への写像と書かれている。
今度はこの集合、写像というやつを見てみよう。
まず、集合から。
集合とは
集合とは、0個以上の要素を一つの塊と見なしたもののことだ。
中括弧で囲み、その中に要素を書く。
例えば、サイコロの目を集合で表すと、\(\{1, 2, 3, 4, 5, 6\}\)となる。
このとき、同じ要素が複数入っていたり、順番が変わっているだけの場合は、同じ集合と見なせる。
\(\{1, 2, 3, 5, 4, 6\}\)や\(\{1, 1, 2, 2, 3, 4, 5, 6\}\)もサイコロの目の集合と同じということだ。
写像とは
では、ここで二つの集合を見てみよう。
一つは上に書いたサイコロの目で\(A\)とし、もう一つは\(B = \{10, 20, 30, 40, 50, 60\}\)とでもしてみよう。
このとき、集合\(A\)の要素を受け取って、その数を10倍する処理\(f\)を考えてみる。
そうすると、どんな\(A\)の要素も、\(f\)によって処理すると必ず\(B\)の要素になっている。
このように、片方の集合の要素を入れ、それによる出力がもう片方の集合の要素になっているとき、この処理のことを写像と呼ぶ。
これが、関数の正体だ。
中学や高校での関数に当てはめると…
比例や一次関数等については、二つの集合がともに実数となっている。
つまり、実数から実数への写像というわけだ。
そう考えると、全て写像の定義に綺麗に沿っていることになる。
ただし、反比例は実数から0を除いているということに注意。
まとめ:関数
今回は、関数とは何かについて見てきた。
数学的な関数とは、二つの集合について、片方の要素を受け取って、もう片方の要素にするような処理のことだ。
これが実生活に使えるかどうかは置いておいて、案外はっきりと定義が説明できる人も少ないのではないだろうか。
こんなふうに、実は正確な意味を知らないものは意外と存在する。
これからも、気になったら調べてみようと思う。
コメント