関数
入力 $x$ を入れれば、ただ一つの出力 $y$ が決まる。
この「因果律」を記述する数学的な装置こそが関数である。
自販機の仕組みからAIのアルゴリズムまで、
現代社会のあらゆるシステムを動かす黒箱の正体に迫る。
第1章:魔法の箱と対応関係
関数(Function)とは、ある集合の各要素に対し、別の集合の要素をただ一つ対応させる規則のことである。難しく聞こえるかもしれないが、イメージは「魔法の箱(ブラックボックス)」だ。 この箱には投入口(Input)と取出口(Output)がある。投入口に数字 $x$ を入れると、箱の中で何らかの処理(計算)が行われ、必ず一つの結果 $y$ が出てくる。この関係を $y = f(x)$ と書き表す。
ここで重要なのは「決定性」である。自動販売機のボタン($x$)を押せば、必ず特定のジュース($y$)が出てくるように、関数において入力が決まれば出力は「ただ一つ」に定まらなければならない。もしボタンを押してコーラが出たりお茶が出たりするなら、それは壊れた自販機であり、数学的な意味での関数ではないのだ。
関数のメカニズム
$x$(入力)が関数 $f$(機能)によって変換され、$y$(出力)となる。
この一連の流れが関数の本質である。
変域と値域:定義された世界
関数には「扱える数字の範囲」が存在することがある。入力 $x$ がとりうる範囲を「定義域(Domain)」または変域と呼び、それに対応して出力 $y$ がとりうる範囲を「値域(Range)」と呼ぶ。 例えば「一辺が $x$ cm の正方形の面積 $y$」という関数 $y=x^2$ を考えるとき、辺の長さがマイナスになることはあり得ないため、定義域は $x > 0$ に制限される。関数を考えるときは、数式だけでなく、その舞台となる範囲を常に意識する必要がある。
「関数」という言葉は、英語の "Function" を中国で音訳した「函数(hanshu)」に由来する。「函(はこ)」という字は、まさに入力を受け取る「箱」のイメージにぴったりであった。日本では常用漢字の制限により「関」の字が当てられたが、意味としては「数と数の関係」を表すものとして再解釈されている。元のラテン語 "functio" は「遂行、実行」を意味する言葉である。
実践:関数の値と代入の作法
記号 $f(x)$ は単なる名前ではなく、「$x$ の場所に数値を代入せよ」という命令を含んでいる。$f(3)$ とあれば、式の $x$ をすべて $3$ に置き換えて計算する。このシンプルなルールを徹底することが、解析学への第一歩だ。
1 基本:1次関数の代入
関数 $f(x) = 3x - 5$ について、$f(4)$ の値を求める。
「$f(4)$」は「$x$ が $4$ のときの $y$ の値」という文章の省略形である。数学者は極度の面倒くさがり屋なので、このような便利な記法を発明した。
2 応用:2次関数と負の数
関数 $f(x) = x^2 - 2x$ について、$f(-3)$ の値を求める。
負の数を代入するときは必ずカッコをつけること。$(-3)^2$ は $9$ だが、$-3^2$ は $-9$ になってしまう。
関数で変数を表すのになぜ $x, y, z$ が使われるのか? これはデカルトが印刷工に「活字の中で一番使われていない文字はどれか」と尋ねたところ、フランス語では $x, y, z$ の使用頻度が低く、活字がたくさん余っていたからだという説がある。未知数や変数に $x$ が使われるのは、偶然と実用性の産物かもしれない。
第2章:ライプニッツとオイラーの革新
「関数」という概念が数学にはっきりと登場したのは17世紀のことである。それまでは個別の曲線や運動の軌跡として扱われていたものが、より抽象的な「関係性」として認識され始めた。
ライプニッツによる命名
微積分の発見者の一人であるゴットフリート・ライプニッツは、1673年の草稿で初めて「function(関数)」という言葉を使用した。彼は曲線の接線や法線など、曲線上の点に依存して決まる幾何学的な量を指してこう呼んだ。 彼のこの命名がなければ、私たちは今でも $y = f(x)$ ではなく、毎回「曲線上の点における高さ」のように冗長な言葉で説明しなければならなかったかもしれない。
オイラーによる $f(x)$ の記法
18世紀、数学史上最も多作な天才レオンハルト・オイラーは、関数を $f(x)$ と書く記法を導入した(1734年頃)。 彼は関数を幾何学的な図形から切り離し、「変数と定数によって構成される解析的な式」として定義し直した。 これにより、関数は図を描かなくても計算だけで扱える対象となり、現代の解析学が爆発的に発展する基礎が築かれたのである。
第3章:写像という視点
現代数学において、関数はより広い概念である「写像(Mapping)」の特別な場合として扱われる。これは2つの集合の間の対応関係を矢印で結ぶイメージだ。
1対1と多対1
関数であるための条件は「入力一つに対し出力が一つ」であることだ。 例えば $y = x^2$ において、$x=2$ なら $y=4$、$x=-2$ なら $y=4$ となる。異なる入力が同じ出力に行き着く(多対1)ことは許される。 しかし、その逆は許されない。一つの入力から複数の出力が出る(1対多)場合、それは関数とは呼ばない。 グラフで言えば、「垂直な直線を引いたとき、グラフと2回以上交わるなら、それは関数のグラフではない」という判定法(Vertical Line Test)がある。
全単射と逆関数
もし関数が「入力が違えば必ず出力も違う(単射)」かつ「すべての出力に対応する入力がある(全射)」という条件を満たすなら、その関数は「全単射」と呼ばれる。 このとき初めて、出力を入力に戻す逆の操作、すなわち「逆関数($f^{-1}$)」が存在できる。 「暗号化」が関数なら、「復号」は逆関数である。逆関数が存在するかどうかは、情報の安全性を考える上でも極めて重要なテーマとなる。
「グラフが描けない関数」も存在する。19世紀の数学者ディリクレが考案した関数は、「$x$ が有理数なら1、無理数なら0」という値を返す。 数直線上には有理数と無理数がびっしりと詰まっているため、この関数はどこをとっても飛び飛びで、通常の線としてのグラフを描くことができない。 人間の直感を超えた、論理だけの関数の世界である。
第4章:世界を記述するコード
現代社会において、関数の概念は数学の教科書を飛び出し、プログラミングやAIの根幹を支えている。
プログラミングにおける関数
PythonやJavaScriptなどのプログラミング言語における「関数(function)」は、まさに数学の関数の概念を拡張したものである。 引数(Input)を受け取り、内部で処理を実行し、戻り値(Output)を返す。 `def double(x): return 2 * x` というコードは、数学の $f(x) = 2x$ そのものである。 複雑なソフトウェアも、これら小さな関数の積み重ねでできている。
AIと巨大な関数
ChatGPTのようなAIモデルも、実は超巨大な関数と見なすことができる。 「質問文」という入力を受け取り、内部で数千億個のパラメータによる計算を行い、「回答文」という出力を返す。 AIの学習(トレーニング)とは、正しい出力が出るように、関数内部のパラメータをひたすら調整する作業に他ならない。 私たちは今、人類史上最も複雑な関数と対話しているのである。
気象予報に使われる関数は「非線形」と呼ばれ、入力のわずかな違いが出力に巨大な差を生む性質がある。 エドワード・ローレンツは「ブラジルの蝶の羽ばたきが、テキサスで竜巻を引き起こすかもしれない」と表現した。 これは関数が持つ「カオス」という性質であり、世界が単純な比例関係だけで予測できないことを示している。
因果の織物
入力と出力、原因と結果。
関数とは、この世界のあらゆる変化と対応を記述するための言語である。
単純な直線から、予測不能なカオスまで。
$y=f(x)$ という短い式の中に、
宇宙の秩序と複雑さがすべて凝縮されているのである。