関数 (数学)
数学における関数(かんすう、function、fonction、Funktion、  蘭: functie、functio、函数とも書かれる)とは、かつてはある変数に依存して決まる値あるいはその対応を表す式のことであった。この言葉はライプニッツによって導入された。その後定義が一般化され、現代では数の集合に値をとる写像の一種であると理解されるものとなった。
日本語としての関数はもともと「函数」(函數)と書いた。函数という語は中国語から輸入されたものであり、中国での初出は1859年に出版された李善蘭の『代微積拾級』といわれる。既にオランダを通じて西洋数学(特に微積分)を勉強していた神田孝平らが翻訳の際に参考にしたとされる。
微積分について日本語で書かれた最初の本、花井静校・福田半編『筆算微積入門』(1880年) では「函数」が用いられている。それに続く長澤龜之助訳『微分学』(1881年)、岡本則録訳『査氏微分積分学』(1883年) のいずれも用語を『代微積拾級』、『微積遡源』(1874年) などによっている。明治初期に東京數學會社で数学用語の日本語訳を検討する譯語會が毎月開催され、その結果が『東京數學會社雑誌』で逐次報告されている。この報告に function の訳語は第62号 (1884年) の「原數」と第64号 (1884年) の「三角法函數」の二種類が登場する。一方、同誌の本文では61号 (1884年) や63号 (1884年) で「函數」が用いられている。
「函」が漢字制限による当用漢字に含まれなかったことから、1950年代以降同音の「関」へと書き換えがすすめられた。この他、「干数」案もあった。学習指導要領に「関数」が登場するのは中学校で1958年、高等学校で1960年であり、それまでは「函数」が用いられている但し、1958年の中学校学習指導要領では用語として「一次関数(一次函(かん)数)」と併記しており、「関数」のみになるのは1969年の中学校学習指導要領である。。「関数」表記は 1985 年頃までには日本の初等教育の段階でほぼ定着した。
「函数」の中国語における発音は(hánshù) であり、志賀浩二や小松勇作によればこれはfunctionの音訳であるという。一方、『代微積拾級』には「凡此變數中函彼變數則此爲彼之函數」とあり、これは変数を包む、含む式という意味で定義されていると解釈できる。また変数に天、地などの文字を用いて「天 = 函(地)」という表記もある。片野善一郎によれば、「函」の字義はつつむ、つつみこむであるから、「天 = 函(地)」という表現は「天は地を函む」ようにみえ、従属変数(の表現)に独立変数が容れられているという意味であるという。
なお、現代の初等教育の場においてはしばしば関数をブラックボックスのたとえで説明することがある。この説明では、「函」を「はこ」と読むことと関連付けて説明されることもあるが、「函数」の語の初出は1859年なのに対し、「ブラックボックス」の語の初出は1945年ごろとされることに注意を要する。
二つの変数 x と y があり、入力 x に対して、出力 y の値を決定する規則(x に特定の値を代入するごとに y の値が確定する)が与えられているとき、変数 y を「x を独立変数 (independent variable) とする関数」或いは簡単に「x の関数」という。対応規則を明示するときは、適当な文字列(特に何か理由がなければ、function の頭文字から f が選ばれることが多い)を使って y = f (x) と書いて、x = a を代入したときに決まる関数の値を f (a) と表す。しかしここで、定数関数の例に示されるように、個々の y の値について対応する x の値が一つに決まるとは限らない事に注意しなければならない。この f (x) という表記法は18世紀の数学者オイラーによるものである。オイラーは、変数や定数を組み合わせてできた数式のを関数と定義していたが、コーシーは、上に述べたように y という変数を関数と定義した。
y が x の関数であることの別の表現として、変数 y は変数 x に従属するとも言い、y を従属変数 (dependent variable) と言い表す。独立変数がとりうる値の全体(変域)を、この関数の定義域 (domain) といい、独立変数が定義域のあらゆる値をとるときに、従属変数がとりうる値(変域)を、この関数の値域 (range) という。
関数の終域は実数体 \mathbb{R} や複素数体 \mathbb{C} の部分集合であることが多い。終域が実数の集合となる関数を実数値関数 (real valued function) といい、終域が複素数の集合となる関数を複素数値関数 (complex valued function) という。それぞれ定義域がどのような集合であるかは問わないが、定義域も終域も実数の集合であるような関数を実関数 (real function) といい、定義域も終域も複素数の集合であるような関数を複素関数 (complex function) という。
ディリクレは、x と f (x) の対応関係に対して一定の法則性を持たせる必要はないとした。つまり、個々の独立変数と従属変数の対応そのものが関数であり、その対応は数式などで表す必要はないという、オイラーとは異なる立場をとっている。
集合論的立場に立つ現代数学では、ディリクレのように関数を対応規則 f のことであると解釈する。それは二項関係の特別の場合として関数を定義するということであり、その意味で関数は写像の同義語である数学の多くの文脈では函数 (function) と写像 (map) は同じ意味で用いられる。。より細かく、「数」の集合への写像に限る場合もある例えば Serge Lang などは "function" を終域が数の集合 (すなわち実数体 R や複素数体 C などの体の部分集合) となる写像を指す場合に限り、より一般の場合には "mapping" を用いている。写像に用いる言葉、例えば
合成(合成関数)
全射、単射(一対一ともいう)、全単射(双射、一対一対応ともいう)
逆(逆関数)
などはそのまま用いることができる。「数」に値を取る関数に特有の(つまり、一般の写像では成り立つとは限らない)性質もある。たとえば、像を用いて値毎の演算と呼ばれる函数同士の演算が定義できる: x を任意として、
(f + g)(x) := f(x) + g(x),
(f - g)(x) := f(x) - g(x),
(fg)(x) := f(x)g(x),
\left(\frac{f}{g}\right)(x) := \frac{f(x)}{g(x)} (ただしg(x) \neq 0)
。あるいはまた、実函数(実一変数で実数値の函数)f:\mathbb{R}\to\mathbb{R} はグラフと呼ばれる平面上の図表で特徴づけられる。
函数を書き表すために標準的な方法がいくつかある。
一般的によく知られる記法は、函数名と引数を明示する式を用いて函数を定義する、いわゆる函数記法である。しかし函数記法には、「函数それ自身」と「函数の値」の区別ができないという問題点がある。
函数はイタリック体の文字一つで表すか(例えば f, g, h, ... )、ローマン体の文字を複数用いて表す(例えば 三角関数: sin, 指数関数: exp, 対数関数: log, 対数積分: Li, li, 跡: tr, Sp など)。後者のローマン体は例えば函数名の省略形で函数を表記する際などに用いられる。
イタリック体でなくローマン体を函数に用いることで、通常イタリック体で表記される変数との混同を避けることができる。
函数記法で y = f(x)(「f の x における値が y である」)と書けば、これは順序対 (x, y) が函数を定義する順序対の集合に属することを意味する(より具体的に函数 f の定義域を X とすれば、函数を定義する順序対の集合とは、集合の内包的記法で \{(x,f(x));\ x \in X\}と書ける)。
しばしば函数の定義は、函数 f が明示された引数 x に対して何をするのかという形で行われる。例えば f を任意の実数 x に対して成り立つ等式 f(x):=\sin(x^2+1) によって定義するものとすれば、これは x を平方して 1 を加えその正弦をとるというより単純な複数の手続きの合成として考えることができる。
誤解のおそれのない場合、例えば複数文字の函数記号を用いる函数について、引数を明示する丸括弧は省略してよい。つまり \sin (x) と書く代わりに \sin x と書いてもよい。
函数記法を用いたのはレオンハルト・オイラーが最初(1734年)とされる。
函数 f の定義域 X と終域 Y を明示する目的では、矢印記法 f\colon X \to Y や X \stackrel{f}}\to{ Y(「f は X から Y への函数」「f は X の元を Y の元に写す」)が用いられる。これに重ねて、元の間の関係を示すため「f が x を f (x) に写す」ことを意味する x mapsto f (x) をしばしば書き加える。
例えば、積の定義された集合 X 上で各元を平方する函数 sqr を紛れなく定義するには \begin{align}
\operatorname{sqr}\colon X &\to X\\
x &\mapsto x\cdot x,\end{align} のように書けばよい。元の対応は x mapsto x2 と書いても良い。
しばしば函数記号や定義域および終域については省略される。そのような記法は、函数の任意の引数における値だけが等式で与えられている状況がよくあるので、その際に特別な函数記号を用意しなくてよいため有用である。例えば、二変数の函数 f\colon X\times X\to Y;\;(x,t) \mapsto f(x,t) が与えられていて、第二引数を値 t0 に固定して得られる部分適用 X\to Y に言及したいとき、この函数に新たに名前を付けなくても、x\mapsto f(x,t_0) という元の対応を表す矢印記法を用いれば扱うことができる。
添字記法も函数記法と並んでよく用いられる記法で、函数記法の f (x) は添字記法では  fxのように書かれる。
定義域が自然数の場合(つまり、数列の場合)には添字記法を使うのが典型的で、各値 fn は数列の n 番目の項と呼ばれる。
複数の引数を持つ函数において、それら引数が「真の変数」と助変数(パラメータ)に分けられるとき、真の変数ではないことを区別するために助変数を添字にすることがしばしば行われる(実際にはパラメータというものは、一つの問題を考察している間は何らかの値に固定されているものと見なされるような変数を言うのである)。例えば、先の例でもみた二変数函数の偏函数 x mapsto f(x, t) を添字記法で f_t と書けば、定義式 f_t(x):=f(x,t)\ (x,t\in X) によって一変数函数の族 \{f_t \colon X \to X;\ t \in X\}が定義される。
矢印記法 x mapsto f(x) において、記号 x は特定の値を表さず、単なるプレースホルダとして、左辺の x を任意の値に置き換えた際に右辺の x も同じ値で置き換える必要があることを示すために、用いられている。したがって、x の代わりにどんな記号を使ってもよく、数式中の特定の値を表す文字との混同を避けるため、中黒 "⋅" がよく用いられる。中黒を使用することで、例えば函数自身を f (⋅) と任意の点 x における函数の値 f (x) とを区別することができる。
その他の例として、x mapsto ax2 を表すのに a(\cdot)^2 と書く場合や、上の限界が変数である定積分 x\mapsto \int_a^x f(u)\,du を \int_a^{(\cdot)} f(u)\,du と書く場合などが挙げられる。
数学の特定の分野では、その他の特別な記法が使われたりもする。例えば線型代数学や函数解析学では線型形式をベクトルに作用させるときに、それらの間に成り立つ双対性を明らかにするために内積の記法が用いられる(量子力学でも同様のブラケット記法が用いられる)。数理論理学や計算理論ではラムダ計算の記法が、函数の抽象化や函数適用などの基本概念を明示的に表すために用いられる。圏論やホモロジー代数では、上で見た函数の矢印記法を延長あるいは一般化するように、函数からなる図式およびそれらの合成が可換図式を満たすという意味でどのような可換性を持つかという形で記述される。
函数 f が与えられたとき、定義により、f の定義域の各点 x に対して f の x における値 f(x) がただ一つ割り当てられる。x を f(x) に(陰に陽に)関係付ける方法を特定あるいは記述するやり方は様々である。場合によっては、(函数が具体的にどのような姿かたちをしているかについては一切言及せずに)適当な性質を持つ函数の存在を定理や公理によって保証することもあるが、大抵は函数 f の定義の一部としてその特定法や記述法は言及される。
有限集合上で定義された函数の場合には、定義域の各点に割り当てられる終域の元を全て書き並べることで函数を定義することができる。例えば A := \{ 1, 2, 3 \} のとき函数 f: A \to \mathbb{R} を f(1) = 2, f(2) = 3, f(3) = 4 として与えることができる。
四則演算やその他既知の函数を組み合わせた式(ただし手続き的な操作や無限個の組み合わせではない閉じた形の式)によって函数が与えられることも多い。そのような式からは、定義域の任意の元の値から函数の値を計算することができる。例えば、一つ前の例の f は f(n) := n+1\ (n\in\{1,2,3\}) とも定義できる。
この方法で函数を定義したとき、その函数がどのような集合上で定義されているかの決定が難しい場合がときどき生じる。例えば定義式が割り算を含む場合には、分母が零になるような変数の値は定義域から除かなければならない。同様に、実函数の定義に平方根が含まれる場合には、平方根の引数が非負となるような変数の値の集合に定義域が収まるようにしなければならない。
式によって函数を定義する場合、それらの式が持つ性質・特性によって函数を分類することもしばしば行われる
二次函数は f(x)=ax^2+bx+c の形(ただし a, b, c は 定数)と書ける函数を言う。
より一般に、多項式函数は加法・減法・乗法と非負整数冪のみを含む式で定義することができる函数である。例えば f(x)=x^3-3x-1 や f(x)=(x-1)(x^3+1) +2x^2 -1 など。
有理函数は多項式函数と同じ条件からさらに除法を許すようなものである。例えば f(x)=\frac{x-1}{x+1} や f(x)=\frac 1{x+1}+\frac 3x-\frac 2{x-1} など。
代数函数はさらに冪根や多項式の根をとる操作が許される。
上記をすべて含む初等函数ここでいう「初等的」は必ずしも日常会話的な意味で初等的とは限らない。初等的な数学において遭遇するほとんどの函数は初等函数だが、例えば高次多項式の根を含むなどして日常的な意味で初等的ではないような初等函数も存在する。には、さらに対数函数や指数函数などが含まれる。
函数 f\colon X\to Y が全単射とは、Y の各元 y に対し、X の元 x がちょうど一つ(少なくとも一つ、かつ、高々一つ)存在して y = f(x) と書けることであった。この場合、f の逆函数 f^{-1}\colon Y \to X が、任意の y ∈ Y を y = f(x) を満たす x ∈ X に写す函数として定まる。例えば自然対数函数は正の実数全体の成す集合から実数全体の成す集合への全単射であるから、逆を持ち、それは指数函数と呼ばれる実数全体から正の実数全体への函数である。
函数 f\colon X\to Y が全単射でなくとも、適当な部分集合 E\subseteq X および F\subseteq Y を選んで、f の E への制限が E から F への全単射となり、その意味での逆函数を持つということは起こり得る。逆三角函数はこのような仕方で定義される。
より一般に、ふたつの集合 X, Y の間の二項関係 R が与えられ、X の部分集合 E は各元 x ∈ E に対して適当な y ∈ Y が存在して x R y とできるものとする。どの x ∈ E に対してそのような y ∈ Y をひとつ選び出す判定法がわかっているものとすれば、函数 f\colon E\to Y を定義することができ、関係 R から陰伏的に定まるとの意味で陰函数と呼ぶ。1 は実数全体の成す集合上の二項関係を定める。–1 < x < 1 ならば y として二つの値が可能で、一方は正他方は負である。x = ± 1 のときは二つの値はともに 0 になる。それ以外では y は値を持たない。このことから、この方程式は –1, 1 を定義域とするふたつの陰函数を定義し、それらの値域はそれぞれ 0, +∞ および –∞, 0 である。この例では方程式は y について解くことができて y=\pm \sqrt{1-x^2} と陽に書けるが、より複雑な例ではこのようなことが不可能なものも出てくる。例えば方程式 y^5+x+1=0 は y を超冪根 と呼ばれる x の陰函数としてさだめる(定義域・値域ともに R)。超冪根は四則演算と冪根をとる操作によって表すことができない。
陰函数定理は点の近傍における陰函数の存在と一意性を保証する緩やかな可微分性条件を提供するものである。
適当な函数の原始函数として沢山の函数が定義できる。例えば自然対数函数は逆数函数 1/x の原始函数で x = 1 における値が 0 となるものとして定義される。誤差函数 erf もこのような方法で定義される函数の例である。
より一般に、ほとんどの特殊函数を含めた多くの函数は微分方程式の解として定義される。最も単純な例として、指数函数はその微分が自分自身に等しいような函数の中で x = 0 における値が 1 となる唯一の函数として定義することができる。
冪級数はその収束域を定義域として函数を定義することに利用できる。例えば指数函数は e^x = \textstyle\sum\limits_{n=0}^{\infty} \dfrac{x^n}{n!} と定義できる。しかし、冪級数の係数列は極めて任意に決めることができるから、「収束冪級数の和として書ける函数」は大抵既にどこか別の場所で定義されていたり、係数列もその別な定義に基づく何らかの計算できまるなどしているものである。冪級数はそのような函数の定義域を拡大することに利用できる。典型的には、実変数の函数が適当な区間上でテイラー級数の和と等しいとき、その級数を用いて直ちに適当な複素領域(つまり、級数の収束円板)上の複素変数函数に定義域を拡大することができる。これはさらに解析接続を用いて複素数平面上のさらに大きな領域へ拡大できる。この方法は、複素変数の指数函数・対数函数及び三角函数の定義に一般的に用いられる方法である。
定義域が非負整数であるような函数(つまり数列)はしばしば漸化式によって定義される。
基本的な例として、非負整数にその階乗を対応させる函数 n\mapsto n! は漸化式 n!=n(n-1)!\quad(n>0) と初期条件 0!=1 によって決まる。
函数のグラフは函数の直観的描像を与えるために広く用いられる。グラフからは、例えば函数がどのように増減するかといった函数の性質を読み取ることができて、函数の理解に役立つ。函数によっては、その表現に棒グラフなども利用できる。
与えられた函数 f\colon X\to Y のグラフとは、形式的な集合 G:=\{(x,f(x)) : x\in X\} のことである。
よくある場合として X および Y が実数全体(あるいはその特定の部分集合、例えば区間など)の部分集合となっているとき、実数の組 (x,y)\in G を二次元の座標系(例えばデカルト平面において座標 (x, y) を持つ点と同一視することができる。このような函数(の一部分)の表示法の一環として、プロット図を書くことができる(こういったプロット図もまた「函数のグラフ」として至る所で良く用いられる)。また違った座標系を使って函数の図示をすることもできる。例えば平方函数 x mapsto x2 のグラフは座標 (x, x2) (x ∈ ℝ) を持つ点の全体で、直交座標系に表せばよく知られたように抛物線になる。これをもし極座標系を用いて、極座標 (r, θ) = (x. x2) を持つ点をプロットしたならば、この場合のグラフはフェルマー螺旋になる。
引数のとる値と函数のとる値を表の形に書きならべることに依って函数を表現することもできる。定義域が有限ならば、このやり方で函数を完全に特定することができる。例えば、掛け算をする函数 f\colon\{1,\ldots,5\}^2 \to \mathbb{R};\;f(x,y):=xy は馴染みの乗積表
によって表すことができる。
しかし、定義域が連続的な場合には、定義域の特定の値に対する函数の値しか表には表示することができない。中間の値が必要となったときには、補間を使って函数の値を評価することは可能である。例えば正弦函数の小数第6位までで丸めた値を並べた数表の一部を以下のように与えることができる:
計算機や電卓の登場以前には、対数や三角函数などの函数に対するこのような数表がしばしば編纂され出版されていた。
有限集合、あるいは自然数または整数全体で定義された函数を表示するのに、棒グラフもまたよく用いられる。この場合、各元 x は x-軸上の区間を表しており、函数の値は x の表す区間を底辺とする高さ f(x) の長方形として表現できる。
17世紀にはじまった函数の概念は、新しい無限小解析の基礎付けとなった(函数概念の歴史を参照)。当時は、実変数の実数値函数しか考えられておらず、どの函数も滑らかな函数であることが仮定されていたが、直に多変数函数や複素変数函数に定義が拡張されていった。19世紀後半には数学的に厳密な函数の定義が導入され、任意の定義域および終域を持つ函数も扱われ始めた。
いまや函数は数学のあらゆる分野において用いられる。初歩の基礎解析学では単に「函数」といえば一変数の実数値函数の意味である。より一般の定義が導入され厳密な設定のもとで函数を扱うようになるのは実解析や複素解析においてであろう。
実函数とは「実変数」「実数値」の函数、つまり実数全体の成す集合を終域とし実数からなる適当な区間を含む部分集合を定義域とする函数を言う。以下本節では、そのような函数を単に函数と呼ぶことにする。
数学及びその応用分野において最もよく扱われる函数はさらに適当な正則性条件(連続性や微分可能性あるいは解析性など)が課せられる。このような正則性があることによって、函数はそのグラフを用いてよく視覚化することができる。以下、適当な区間上で微分可能であるような函数だけを扱う。
函数は点ごとの演算が備わっている。つまり、函数 f, g に対して、それらの和・差・積を \begin{align}
(f+g)(x)&:=f(x)+g(x)\\
(f-g)(x)&:=f(x)-g(x)\\
(f\cdot g)(x)&:=f(x)\cdot g(x)\\
\end{align} で定義すれば、f, g の定義域の交わりを定義域とする函数が得られる。同様にこれらの商を \frac fg(x):=\frac{f(x)}{g(x)} と定義することができるが、この場合定義域は f, g の定義域の交わりから g の零点を除いたものになる。
多項式からは実数全体で定義された多項式函数が定まる。これには定数函数・一次函数・二次函数などが含まれる。ふたつの多項式函数の商である有理函数は(零除算が起きないように)有限個の例外を除くすべての実数を定義域とする。もっとも単純な有理函数 x mapsto 1 のグラフは双曲線で 0 を除く実数直線全体を定義域に持つ。
実可微分函数の導函数もまた実函数である。実連続函数の原始函数はもとの函数が連続となる任意の開区間上で可微分な実函数を与える。例えば逆数函数 x mapsto 1/x は正の実数全体の成す集合上で連続(さらに微分可能)であるから、その原始函数で x = 1 において零となるもの(自然対数函数)は正の実数全体の成す集合上で微分可能である。
実函数 f がある区間上で単調となるのは、平均の変化率 \frac{f(x)-f(y)}{x-y} の符号が、その区間内の点 x, y の選び方に依らず一定であるときである。その函数がその区間で微分可能ならば、その区間上で微分係数の符号が一定であるときに単調となる。実函数 f が区間 I において単調であるならば、f の逆函数が f(I) から I への函数として定まる。このような方法で、逆三角函数は三角函数が単調となる区間上で三角函数の逆函数として与えられる。あるいはまた、自然対数函数は正の実軸上で単調で値域は実数直線全体となるから、その逆函数である指数函数は実数全体から正の実数全体への全単射であることが分かる。
他にも多くの実函数が陰函数定理(逆函数は陰函数の特別の場合)から、あるいは微分方程式の解として、定義される。例えば正弦函数 sin や余弦函数 cos は線型微分方程式 y+y=0 の解として初期条件 \sin 0=0, \cos 0=1, \quad\frac{\partial \sin x}{\partial x}(0)=1, \frac{\partial \cos x}{\partial x}(0)=0 から定まる。
終域の元がベクトルとなっているような函数はベクトル値函数と呼ばれる。ベクトル値函数は、(例えば物理的性質をモデル化するような)応用において特に有用で、例えば流束の各点においてその点での速度ベクトルを割り当てる函数はベクトル値函数になる。
ℝn(あるいは多様体のように ℝn と似た幾何学的または位相的性質を持つ空間)上で定義されたベクトル値函数を考えることもできて、そのようなベクトル値函数はベクトル場と呼ばれる。
解析学あるいはより具体的に函数解析学において、特定の性質を共有するスカラー値またはベクトル値の函数からなり位相線型空間を成すような集合を函数空間と呼ぶ。例えば、コンパクト台付き(つまり、適当なコンパクト集合の外側では常に零となる)滑らかな実函数全体の成す集合は、シュヴァルツ超函数論の基盤となる函数空間を成す。
函数空間ではその代数的および位相的性質を利用して函数の性質を調べることができるようになるから、より進んだ解析学において函数空間は基本的な役割を果たすことになる。例えば、常微分方程式や偏微分方程式における解の存在や一意性を言うすべての定理は函数空間を調べることで得られた結果である。
複数の変数によって値が決定される関数を多変数関数という。これは複数の数の集合たちの直積集合から数の集合への写像であると解釈される。ベクトルの集合を定義域とする独立変数をもつ関数と解釈することもある。n 個の変数で決まる関数であれば、n 変数関数とも呼ばれ
y = f(x_1,x_2, \ldots,x_n)
のように書かれる。例えば
y = x_1^2 + x_2^2
は二変数関数である。
一つの入力に複数の出力を返すような対応規則を関数の仲間として捉えるとき多価関数 (multi-valued function) という。常に n 個の出力を得る関数は n 価であるといい、その n を多価関数の価数と呼ぶ。例えば正の実数にその平方根を与える操作は正と負の二つ値を持つので、二価関数である。多価関数に対し、普通の一つの値しか返さない関数は一価関数といわれる。