キャラクタ紹介   TOP Page
中学校のコンテンツ

7.関数

Jason君とNovy君は関数?
チームDragonsはこれから親善試合を行う予定です。そこで、Dragonコーチが何やら買ってきたようです。

Dragonコーチ「試合でがんばってくれるよう、みんなにキャンディーを買ってきたよ。」
Novy君「やったー!」
Jason君「Dragonコーチ、俺にたくさんちょうだい。そしたら3個につき1得点してみせるぜ。」
Novy君「僕にもたくさんちょうだい。僕もたくさん得点するから。」
Jason君「Novyには無理だよ。何個食べても得点できないから、あげなくてもいいよ。」
Novy君「ひどいぞ、Jason君。」
Snake君「僕はキャンディー食べても得点できるかどうか分からないなぁ。でもたくさんちょうだい。」
Dragonコーチ「なるほど。Jason君とNovy君は関数でSnake君は関数ではないね。」
Novy君「関数?Dragonコーチ、僕らは人間ですよ。」
Dragonコーチ「そういう意味ではなくて、Jason君とNovy君は関数に例えることができるかな、と思ったんだよ。」
みんな「えー?どういうこと?」

関数って何?
Dragonコーチは、Jason君とNovy君は関数に例えることができて、Snake君はできないと言ってました。これはどういう意味だか分かりますか?
そもそも関数とは何でしょうか?
はっきり答えられなくてもいいので、少し自分で関数をイメージしてみましょう。

・・・
・・・
・・・

何かイメージできましたか?
”関数は何かをしてくれるものです。”漠然としていますが、これぐらいはイメージできますね。
”関数は何か決まった仕事をしてくれるものです。”でもこれでは、Novy君には当てはまってもJason君には当てはまりませんね。Jason君はもらえるキャンディーの個数に対して得点数が変わりますので。
”関数はある情報を与えると、それに対して必ず決まった仕事をしてくれるものです。”関数をこのように考えればNovy君もJason君にも当てはまります。
どのような仕事をするかは関数によって違います。例えばJason君はキャンディーを3個与えると試合で1得点します。(これはあくまでも例えです。)また、4個与えると1得点します。今度は6個与えると2得点します。Novy君の場合はキャンディーを3個与えると試合で0得点します。4個与えても6個与えても0得点します。
それに対してSnake君は3個与えても4個与えても6個与えても何得点するか分かりません。つまり関数として例えることはできないですね。
図1を見て頭の中で整理しましょう。
図1:3人がどのような仕事をするかの図
図1

では、もしSnake君が必ず以下のような対応表になるとすれば、関数だと言えるでしょうか?
キャンディー 得点
0個 3点
1個 1点
2個 4点
3個 4点
4個 0点
5個 2点
6個 1点
7個 1点
対応表1

何だかむちゃくちゃな感じがしますね。そうです。この対応表には何の規則性もありません。ですが、実はこれも関数と言えるのです。
それは、関数とは、関数はある情報を与えると、それに対して必ず決まった仕事をしてくれるものなので、どのような仕事をするかは関係あまりせん。
ただし、実際問題としては、このような関数は何も規則性がないので、これ以上議論することはありません。もとを返せば、規則性を追求するために数学は発展してきたのですから、規則性がないものはどうしようもないのです。ですが、これも関数であるということは覚えておきましょう。
ワンポイント(1)
関数の定義
xの値に対して、yの値がただ1つ定まるときyはxの関数といいます。これが関数の定義です。ではyの値が複数ある場合はどうなるのでしょうか。y=√xという関係がそうです。例えば2=√4、-2=√4となります。つまり4=2=(-2)という訳です。これは無理関数と呼ばれています。なぜ”関数”という名前が付けられているかというと、関数には狭義と広義の意味があるからです。先の定義は関数の狭義の意味となり、広義の意味ではyの値が複数ある場合も関数に含まれます。これらを区別するために先の定義を1価関数、無理関数などを多価関数と呼びます。特に無理関数は必ず2つのyの値が存在するので2価関数とも呼ばれています。

では、Jason君、Novy君、そしてのSnake君が対応表1の場合の関数をXY座標に描くとどうなるのかを見てみましょう。
図2を見てください。
図2:Jason君とNovy君とSnake君の関数の座標
図2
Jason君は階段状、Novy君は直線。そしてのSnake君はやっぱり不規則でしたね。
ワンポイント(2)
XY座標
XY座標とは、ある原点Oから縦方向にy軸、横方向にx軸を置き、関数に与える情報(入力)をx、その結果行った仕事(出力)をyとして、その関数がどのような図形になるのかを見るためのグラフです。
このxとyという変数は、関数の方程式にも使われます。例えば1次関数はy=ax+bという方程式で表せますが、yは関数が出力する値でxは関数に入力する値となります。
それから、よく使われる原点OはOriginのイニシャルです。また、Xは数学者デカルトが、彼の論文上で「未知数の・・・」と書くのが大変だったので、「以後未知数はX、Y、Zで表わす」と断って論文を書き上げたため、他の数学者が真似るようになったと言われてます。

いろいろな関数
中学や高校の数学の授業で学習する関数はいろいろあります。その代表的なものは以下の通りです。

・1次関数(正比例関数)
・反比例関数(分数関数)
・2次関数
・三角関数(正弦関数sin、余弦関数cos、正接関数tan)
・指数関数
・対数関数
・無理関数

これらがどのような関数であるかの説明は別の機会に譲りたいと思いますが、ここで覚えていただきたいのは、関数はこれだけではないということです。もっと難しい関数がたくさんある、と言いたいのではありません。関数は上記のような難しそうなものだけに価値がある、のではないということです。関数はもっと利用範囲が広いのです。

まずは実際にプログラムの世界でよく使う関数を紹介します。プログラムとはコンピュータのプログラムのことです。どのような関数であるか予想してみましょう。

1.日付から曜日を求める関数
2.閏(うるう)年を判定する関数

次に奇妙な関数を挙げてみます。これらがどのような関数であるか予想してみましょう。

3.y=x
4.y=0
5.x=0

・・・
・・・
・・・

では1.から5.がどのような関数であるか見てみましょう。
図を見ながら考えてください。

1.日付から曜日を求める関数
図3:日付から曜日を求める関数のXY座標
図3
ある日付から曜日を求めるにはどんな入力(プログラミング用語では引数と呼びます)が必要でしょうか。そして、どんな出力があるでしょうか。
引数には日付(年/月/日)が必要ですね。そして、出力される情報は”日曜日”、”月曜日”、”火曜日”、”水曜日”、”木曜日”、”金曜日”、そして”土曜日”のいずれかです。では、日付からどのように曜日を判断すればいいのでしょうか。そのポイントは剰余を求めるということです。以下にその手順を示します。
a.引数として与えられた日付(年/月/日)を整数に変換します。そのためには、まずある日付を0と決めます。ここでは2002年12月31日を0と決めたとします。すると2003年1月1日は1となりますね。もし求めたい日付が2003年4月12日であれば、1月が31日、2月は28日、3月は31日、4月は12日分を足せばいいので、102という整数になります。
b.次に日付から生成した整数を7で割った剰余を求めることです。7は曜日の数ですね。102÷7=14+4/7ですので4が剰余となります。
c.最後に剰余から曜日を判断します。2002年12月31日が火曜日だと分かっていれば、0が火曜日、1が水曜日という感じに判断できます。ということは、4は土曜日になりますね。ですので、”土曜日”を出力すれば処理は終わりです。
もし、2002年12月31日よりも古い日付が入力された場合は、0が火曜日、1が月曜日、2が日曜日というふうに判断することになります。

2.閏(うるう)年を判定する関数
図4:閏(うるう)年を判定する関数のXY座標
図4
閏年はいつあるのでしょうか?そのパターンが分かっていれば計算できます。ここでも剰余が活躍します。
まず、入力は年(西暦)です。そして、出力は”閏年である”あるいは”閏年ではない”のようにYes/Noとなります。ここではYesを1、Noを0と決めます。
閏年となるパターンはこのように決まっています。
「西暦年数が100の倍数のときは400で割り切れる年、100の倍数でないときは4で割り切れる年を閏年とし、その他を平年とする」
平年とは閏年でない年のことです。
1900年は100の倍数ですが、400で割り切れないので、閏年ではありません。つまり平年です。
2000年は100の倍数で、かつ400で割り切れるので、閏年となります。
2004年は100の倍数ではありませんが、4で割り切れるので、閏年となります。
2005年は100の倍数ではありませんし、4で割り切れないので、閏年ではありません。つまり平年です。
では手順を示します。
a.引数として与えられた年を100で割ります。剰余が0であれば(割り切れれば)b.の処理をします。0でなければd.の処理をします。
b.年を400で割ります。剰余が0であれば”閏年である”、0でなければ”閏年ではない”を出力します。
c.年を4で割ります。剰余が0であれば”閏年である”、0でなければ”閏年ではない”を出力します。

3.から5.は図5を見てください。
図5:3.から5.のXY座標
図5
3.y=x
y=xはy=ax+bの形式に当てはめたとき、a=1、b=0となります。つまり傾きが1で切片が0です。傾きが1ということは、xが1増えたとき、yが1増えるということです。つまり、原点を中心としてx軸を反時計回りに45度回転させた直線となります。

4.y=0
y=0はy=ax+bの形式に当てはめたとき、a=0、b=0となります。つまり傾きが0で切片が0です。傾きが0ということは、xが1増えたてもyは増えないということです。つまり、x軸と一致する直線になります。

5.x=0
これは、4.から想像すると、y軸と一致する直線と考えることができます。ですが、xがとりうる値(これを定義域といいます)は0だけです。また、yがとりうる値(これを値域といいます)は定まっていません。関数は「」という意味でしたが、これに当てはまるとは言いがたいです。つまりx=0は直線を表す式ではあっても、関数ではないと言えます。

発展(1)
関数自体の性質
数学には関数自体についての性質を学ぶ分野があります。言い換えると、どんな関数にも共通して言えることは何かを考えるということです(特に先の1価関数について)。例えばある関数y=ax+bとy=cx+dを加算するとy=(a+c)x+b+dとなります。また、未知数YとXを入れ替えたxはyの関数は、どのような関数であるかを学んだりします。前者を合成関数と呼び、後者を逆関数と呼びます。このように、関数を抽象的に論じるときは、y=f(x)として関数を抽象的に表します。fはFunctionのイニシャルとして使われています。

発展(2)
関数の語源
関数は英語でFunctionと言いますが、これは機能とか役目といった意味があります。これが19世紀中国に伝わったときに函数という語が使われました。これは”独立変数(xのこと)を中につつみこんだ数”という意味の造語ですが、中国式の発音(ファンスウ)もfunctionに近かったのでこれを用いたと言われています。これが日本に伝わり、1950年代まではこの用語が使われていました。しかし、函の文字は常用漢字のリストにはなかったので、当時の数学者の希望にもかかわらず、同じ音の関数という用語が使われるようになったのです。関数はFunctionが素直に翻訳されたものではなかったのです。

---
Novy君「僕って必ず0点だから関数なのか。エヘン!どうだい、すごいだろう?」
Snake君「いつも0点なのに何をいばっているんだ?そう言えばNovyの数学のテストもいつも0点だよなぁ。」
Jason君「ははは。そう考えれば確かにすごいや。人には真似できないもんなぁ。」
Novy君「ひーーーん、くやしい!やっぱり関数なんて嫌いだー!」
Dragonコーチ「Novy君はいつでもいじめられる関数と言えそうだなぁ・・・」

Return TOP Page

©2004 EYG System