ご注文は数オリですか?

トピック一覧へ戻る

まず知るべきこと:関数方程式編
更新日:2024-04-23

関数方程式は高校数学ではほとんど体系的に扱われないものです. もっとも数オリに「特有」の分野の一つであるといっても過言ではないでしょう. ですから,特別な練習を積む必要があります. まずは基礎を身に付けましょう.

関数方程式とは?

皆さん「方程式」という言葉はご存じでしょう.例えば,一変数では以下のようなものです. x4+x35x2+x6=0 x が実数ならば x=2,3 が解であり,x が複素数であればさらに x=±i が解となります.

あるいは,変数が複数である場合もあるでしょう.以下のようなものはどうでしょうか? x2+15=y2 これは実数の範囲ではも無数の解をもちますが, 正の整数の範囲であれば (x,y)=(1,4),(7,8) と有限の解をもちます.

要するに,ある「等式」をみたすなんらかの「数」を求めることを要求されるのが,方程式です. 数というのは上で述べた通り整数であったり実数であったり複素数であったりするわけですが, これが「関数」だとどうなるかというのが本題です.

そのためには,まず「関数」というのがどのような概念であったかを知らねばなりません.

関数とは?

関数とは基本的に 2 つの集合 X,Y (同じでもよい) に対して定義されるものであると認識しましょう. 素朴には,X の元ひとつひとつそれぞれ対して Y の元 1 つを対応させる「規則」が「(X から Y への) 関数」です.

関数は英語で「function」と呼ばれることから,一般の関数は文字では f で表されることが多く (文字の並びから,もう一つ必要なときは g が使われることが多いです), f:XY で「fX から Y への関数である」ことを表し, X の元 xf で対応付けられる Y の元を f(x) で表します. また,Xf定義域 (あるいは始域) とよび,Yf終域とよびます.

なお,Y値域とよぶのではないかと思った人もいるかもしれませんが,これは少し微妙です. なぜなら,fX の元に対して Y の元を定める規則に過ぎず, Y の元がすべてこの規則に登場するかはわからない,すなわち fY の元をすべて返し得るかはわからないからです (参考:Y の元をすべて返すという性質は,後述の通り「全射」とよばれます).

関数にはこれ以上の定義はありません. 以下の「よくある間違い」で改めて強調していますが,f の挙動に関しても本当に何もわかりません. きれいな式で表せるとはまったく限りません. また,集合 X,Y の組み合わせはさまざまです.

もっとも良くあるのは,XY がともに R,すなわち実数全体の集合である場合です. これは数オリの問題文では「実数に対して定義され実数値をとる関数 f」などと表現されることが多いです. 要するに,任意の実数に対してなんらかの実数を対応付ける規則ということです. 例えば,同じ実数を常に返す f(x)=x や,常に 0 を返す f(x)=0 などが素朴な例でしょう.

なお,後者の例を考えれば,上の「値域」についての説明は納得いただけるでしょうか. 実数から実数への関数が,必ずすべての実数値をとるとはもちろん限りませんよね. 2 乗した値を常に返す f(x)=x2 などもそうです.

ここで,f(x)=xf(x)=0 などと書きましたが,等号は状況しだいで違う意味になり得ることに注意してください. ここでは,「任意の実数 x について f(x)=x」が成り立つといった,いわば f の「定義」を与える等式です. 方程式としての意味と混同しないように気を付けましょう. その場その場の意味を考えながら読み解いていけば絶対にわかるはずです.

なお,この曖昧さを回避するため,「任意の実数 x について f(x)=x」といった味合いとして f(x)x などと表現されることもあります. しかし,あまりフォーマルな表現ではないと思うのであくまで参考程度に留めておきます.

他にも「整数から整数」だとか「有理数から有理数」だとか,さまざまなパターンの関数が登場していきます.

具体的な問題

さて,これで準備は整ったので,さっそく具体的な問題を見てしまいましょう.JMO本選からのピックアップです.

#0
★★☆☆☆
JMO 2012 P2

実数に対して定義され実数値をとる関数 f であって,任意の実数 x,y に対して f(f(x+y)f(xy))=x2yf(y) が成り立つようなものをすべて求めよ.

「関数」に対する「方程式」というのは,このような形をしています.

以下,工事中

よくある間違い

さて,関数方程式をいかにして解くかを学ぶ前に,これだけは絶対にやってはいけないということを知りましょう.

もう本当に,とにかくこれだけは覚えて帰ってください. 関数方程式に慣れていない人がとにかくやりがちな,特に頻出の間違いたちです. 基本的にこれらを真っ先にやった瞬間,すべての進捗がゼロに帰すものと思ってください.

要するに,関数の形やクラスを制限してから議論したところで何の意味もないということです. これらの誤りは,そもそも「関数」という言葉の意味が正確に分かっておらず, 問題文が正しく読めていないことに起因するものでしょう. 上で述べたような「関数」の意味をしっかり理解していれば絶対に起こるはずのないことですし, そもそも皆さんは「奇妙な」挙動をする関数をすでにいくつも知っているはずです. たとえば f(x)=|x|(絶対値)はどうでしょうか? より一般に,二つの関数を「組み合わせた」ような形をしているものが解になることは良くあります. 例えば以下のようなものです. f(x)={1(x0)0(x<0) また,たとえば定義域が整数からなる場合には,より簡単に「奇妙な」関数をさまざま考えることが出来ますし, そもそも連続や微分といった概念はいよいよ何の意味も持たないものになります.

何度も何度もしつこいなと思いましたか? では,もう二度とこの種の誤りが発生しないことを祈っています.

解の予想

慣れるまでは解の予想は絶対に初めにやりましょう!!! 少なくとも,ある関数が与式をみたすかどうかは即座に確認できることです. すべての解が初めから予想できなかったとしても, ある関数が解であることがわかれば, 絶対に起こり得ない議論をせずに済むことがあります. 例えばですが,f(x)=xf(x)=1x が解であることがわかったら, (これらがすべてではなかったとしても,) 一般に f(0)=0 を示しに行って膠着することは避けられるわけです.

上で多項式を仮定して解くなと強調しました. しかしながら,実際には多くの場合は解は多項式(しかも高々一次,良くて二次)で表せることが多いです. ですから,まず解の予想を行うにあたって,例えば f(x)=ax+b を仮定して代入することは有効であり,むしろやるべきです. それとこれはまったく別の問題であるということがご理解いただけるでしょうか.

記号の準備

一般に,整数全体は Z,有理数全体は Q,実数全体は R で表されます.

また(上でも書きましたが),AB を集合とするとき,「 A の元に対して定義され B に値をとる関数 f 」「A から B への関数 f 」は「 f:AB 」と表されます.

また,「xR」で「xは実数である」や「実数 x」といった意味になります.

つまり「f:RR であって任意の x,yR について~~」 は「実数に対して定義され実数値をとる関数 f であって,任意の実数 x,y に対して~~」という意味です.

さらにこの記事では,例えば f(x)x と書いて「任意の実数 x について f(x)=x」を意味しています.

基本的な解き方

関数方程式は「関数に対する方程式」と書きましたが,いったいどのように考えればよいのでしょうか? 簡単な例を見て,雰囲気を掴んでいきましょう.

#1
★☆☆☆☆
例題

f:RR であって任意の x,yR について xf(x+y)=x2+f(xy) をみたすものをすべて求めよ.

関数方程式の解き方は,基本的に「 xy に別の式や具体的な値を代入して,新しい式を得る」ということの積み重ねです.

まず与式に x=0 を代入すると, 0f(0+y)=02+f(0y)f(0)=0 が得られます.次に与式に y=0 を代入すると,f(0)=0 より xf(x+0)=x2+f(x0)xf(x)=x2 が得られます.よって x0 のとき f(x)=x が得られ,f(0)=0 とあわせて任意の実数 x について f(x)=x であることがわかりました.

実はこれだけでは不十分です!! 何が足りないのでしょうか?

それは十分性の確認です.今までの議論では「f が問題の条件をみたすならば,f(x)x である」ということを証明できましたが,問題は「すべての f を求める」ことなので,f(x)x が問題の条件をみたすことを確認しなければいけません.

幸いこれを示すのは簡単です.f(x)x を与式に代入すれば x(x+y)=x2+xy となり,これは恒等式なので,f(x)x は実際に解となります.

十分性の確認は概ね簡単にできますが,忘れると減点される場合があるので,忘れないよう気を付けましょう.

項を消そう

左辺と右辺に同じ形を作ることで,その項を消すことができ,よりシンプルな形の式を得られます.

https://web.evanchen.cc/handouts/FuncEq-Intro/FuncEq-Intro.pdf から問題を引用します.

#2
★☆☆☆☆
David Yang

f:RR であって任意の x,yR について f(x2+y)=f(x27+2y)+f(x4) をみたすものをすべて求めよ.

f(x2+y)f(x4) を同じにして消してみましょう. x2+y=x4y=x4x2 です.なので yx4x2 を代入すると, f(x2+(x4x2))=f(x27+2(x4x2))+f(x4)0=f(x27+2x42x2) となります.x27+2x42x2 は全ての実数値をとるので,任意の実数 x に対して f(x)=0 であることが証明できました.十分性は明らかです.

単射

関数 f:XY単射であるとは任意の x,yX について,xy ならば f(x)f(y) であることをいいます. 対偶を考えると,任意の x,yX について,f(x)=f(y) ならば x=y とも言い換えられます.

王道の示し方:f(s)=f(t) をみたす s,t をとってきて s=t を示します.

王道の使い方:f(なんとか)=f(ほげほげ) の形の式を見つけて/作って,なんとか=ほげほげ という新たな情報を獲得します.

#2
★☆☆☆☆
例題

f:RR であって任意の x,yR について f(f(x)+y)=x+f(f(y)) をみたすものをすべて求めよ.

以下,解答では P(a,b) で,xayb を代入した式を表すことにします.

f(s)=f(t) のとき P(s,y), P(t,y) を比較して s=t を得るから,f は単射である. P(0,y) より f(y+f(0))=f(f(y)) であり,f の単射性より y+f(0)=f(y) がしたがう. 逆に任意の実数 c に対して f(y)=y+c は条件をみたすからこれが解である.

左辺では xf(x) の形でしか現れていません. このようなとき,f(s)=f(t) をみたす s,t について, x=s,t を代入したときに左辺の値は全く変わりません. また,右辺の xf の中に入っておらず,このような部分は何かと便利であることが知られています. このようなことを念頭に置くと解答のように単射を示すことにつながります. 単射を示したら欲しい式は f(なんとか)=f(ほげほげ) の形の式です. これは条件式をぢっと見つめると x=0 で作れることがわかります.

全射

関数 f:XY全射であるとは,任意の yY に対し,ある xX が存在し, f(x)=y が成り立つことをいいます.f(x) として任意の Y の要素をとりうるということです.

王道の示し方:f(なんとか)=(任意の値を取る部分) という式を見つけます.

王道の使い方:

例:

#2'
★☆☆☆☆
例題

f:RR であって任意の x,yR について f(f(x)+y)=x+f(f(y)) をみたすものをすべて求めよ.

任意の実数 x,y について P(xf(f(y))y) より f(f(xf(f(y)))+y)=x だから f は全射である. f(t)=0 をみたす実数 t をとると, P(t,y) より f(f(y))=f(y)t を得る. f(y) は任意の実数を取りうるから, 任意の実数 x について f(x)=xt が成り立つ. 逆に任意の実数 c について,f(x)=xc は条件をみたすからこれが解である.

別解. 全射性を示すところは同様.任意の実数 y について f(t)=f(y)y をみたす t がとれる.P(t,y) より t=0 であるから,f(y)=y+f(0) である.

y を固定して x を動かして考えると,x+f(f(y)) は任意の実数をとりうることを意識すれば全射性に気づきます. こういう点でも,f に入っていない x は便利なのです. 逆に x を固定して y を動かしても全射性を示すことに使えないことに注意してください. 全射性を示したので f(t)=0 となる t でもとってみますか.P(x,t)f(f(x)+t)=x+f(0).よくわかりません. P(t,y)f(y)=t+f(f(y)).これはぢっと見つめると f(f(y))f(y) で表す式となっていて,全射性を使うことで解にたどり着けます. 別解は f(f(x)+y)f(f(y)) において,f の中身をそろえてこれらの項を消したいというモチベーションに基づいています.

Cauchyの関数方程式

Cauthyの関数方程式とは,f(x+y)=f(x)+f(y) という形の関数方程式のことです.

まずは QR で解いてみましょう.

#3
★☆☆☆☆
Cauchyの関数方程式(Q 上)

f:QR であって任意の x,yQ について f(x+y)=f(x)+f(y) をみたすものをすべて求めよ.

解は f(x)=cxc は実数)と予想でき,実際に解はそれだけであることが証明できます. まず自分で考えてみることをお勧めします.

まず P(0,0)f(0)=0 を得る. 次に c=f(1)とおくと,正の整数 n に対し f(n)=f(1)+f(1)++f(1)n=cn が得られ,さらに f(n)+f(n)=0 から f(n)=n を得る.

そして f(p/q)q は正の整数)については, f(q)=f(p/q)+f(p/q)++f(p/q)q=qf(p/q) から f(p/q)=cp/q が得られ, 任意の有理数 x に対して f(x)=cx であることが示された.

逆に,f(x)=cxc は実数)が与式をみたすことは容易に確認できる.

では RR の場合はどうでしょうか?

f(1)=c とおくと,任意の有理数 x に対し f(x)=cx であることは上と同様にわかります. しかし f(2) とか f(π) とかの情報は得られるのでしょうか……?

実はこの問題の解は f(x)=x だけではありません! これを説明するのは少々面倒ですが,「実数全体は足し算だけでは全然制御できない」というイメージです.

RQ 上の線形空間であるため,(選択公理を仮定すれば)Q 上の基底がとれます(Hamel基底とよばれています). 基底の各元にどのように値を定めても f が定まってしまいます. 詳細は例えば次のページをご覧ください: https://mathlandscape.com/hamel/

しかし R 上の関数方程式でも,適切な条件を追加すれば解が f(x)cx のみに定まります.

例えば f(x)0 (x0) という条件です.

#4
★★☆☆☆
Cauchyの関数方程式(R 上)+条件

f:RR であって任意の x,yR について f(x+y)=f(x)+f(y) をみたし,かつ任意の 0 以上の実数 x について f(x)0 をみたすものをすべて求めよ.

解答には重要な要素が詰まっています.まず自分で考えてみることをお勧めします.

まず c=f(1) とおくと,上でやったとおり任意の有理数 q について f(q)=cq です.

次に f は広義単調増加,すなわち xy ならば f(x)f(y) です.これは f(y)f(x)=f(yx)0 からわかります.

ここから大学で学ぶ解析学のような議論をします. x を任意の実数とするとき,f(x)=cx であることと, 任意の ε>0 に対し |f(x)cx|<ε であることは同値です. これを用います.

c0 のとき δ=ε/2cc=0 のとき δ=1とすると 2cδ<ε をみたします. そこで q1xδq1x をみたすようにとります. このような q1 が存在することは,n1/δ 以上の整数とするとき,分母が n 以上の分数全体を考えればわかります. このような有理数 q1 がとれる性質は「稠密性」とよばれます. 同様に xq2x+δ なる有理数 q2 をとります.

このとき q1xq2 かつ c(q2q1)<ε が成り立ちます.

すると f が広義単調増加であることから f(x)xf(q1)cq2=c(q2q1)>εf(x)xf(q2)cq1=c(q2q1)<ε を得,|f(x)cx|<ε を得ました. ε>0 は任意にとれるので f(x)cxc は非負実数)が示されました (十分性は自明です).

実数の加法の構造だけでなく「順序」という構造まで考えたことで解けるようになったのでした.

また,上の解答で登場した「QR における稠密性(ちゅうみつせい)」は覚えておくとよいです.(一般に R の部分集合 A は,任意の xR および ε>0 に対し |xa|<ε なる aA が存在するとき,R において稠密であるといいます.この概念は一般の位相空間で定義できます.)

ここから得られる教訓は何でしょうか? コンテストで出題される関数方程式は基本的に解ける方程式です.だからもしあなたが関数方程式を解いているとして,Cauchyの関数方程式が登場した場合,「不等号や連続性を言えないか?」と考えるべきです.

他のバージョン:

#5
★★☆☆☆
Cauchyの関数方程式(R 上)+条件2

f:RR であって任意の x,yR について f(x+y)=f(x)+f(y),f(xy)=f(x)f(y) をみたすものをすべて求めよ.

f(xy)=f(x)f(y) を用いると,任意の x0 に対し f(x)=f(x)20 を得る.すると上の問題から f(x)cx.このうちみたすのは f(x)0,x