合成関数・逆関数

 webGLという3Dのライブラリが動かないブラウザ環境では遅くなる場合があります。できるかぎり、webGLの使える環境で動かしてください。

 関数は「数→数」の対応関係であるが、この対応関係を二段階にしたもの「数→数→数」を合成関数と呼ぶ。y=x2というxyという対応関係があり、さらにz=sinyというyzの対応関係があれば、この二つをまとめて、z=sinx2というxzという「合成関数」を作ることができる。

 たとえば、ある気体を電気ヒーターで暖めているとしよう。ヒーターの電力を変えれば温度が変わる(電力→温度)。そして、温度が変わればその気体中の音速が変わる(温度→音速)。こうすると「電力を変えれば(温度の変化を通じて)音速が変わる」(電力→温度→音速)という関数関係ができることになる(こういう例を自分でも考えてみよう)。

 二つの関数をy=f(x)(yxの関数である)および$z=g(y)(zyの関数である)と書けば、合成関数はz=g(f(x))のように書ける(この式の意味は「まずf(x)を計算して、計算結果をg(y)のyに代入すると、zが求められる」ということだ)。

 三つの変数が関与する関数なので、立体的に図を描くと次のようになる。

 ↓の図は、マウスを使って視点の移動/拡大縮小などができます。

y=
z=

a=1.0

b=1.0

 ここでは、

y=xという関数と

z=yという関数が合成され、

z=(x)という関数になっている。


 のような形が走り回っているが、これはx,y,zの変化を表したものである。

 初期状態ではy=xz=yというつまらない状態になっているが、図の下にあるセレクタやボタンで関数の種類やパラメータを変化させることができるので、いろいろと試してみよう。
  • y=x2z=
    1
    y
    を合成すると、z=
    1
    x2
  • y=x2z=exp(-y)を合成すると、z=exp(-x2)
  • y=sin(x)とz=y2を合成すると、z=sin(x)2

のように関数が合成されるところを確認しよう(もちろん他にももっといろいろなパターンがあるので、試してみよう)。

コンピュータにグラフを描かせる時の注意

たとえば、

y=
1
x
z=sin(3y)を合成して、
z=sin(
3
x
)という関数を作ったとすると、そのグラフは、

のようになる。このx=0付近のぐしゃっとなっているところは、実は無限回の振動が隠れているなぜ無限回振動するのか、考えてみよう!。しかしコンピュータの画面も内部での計算でも「無限回の振動」を表すようにはできていない。実際にはxを0.01とか0.02とか、小さなステップで増加させては線を引く、というのを繰り返している。そのステップとステップの間に関数が激しく振動してしまうと、描かれたグラフは正確なものにはならないのである。

逆関数のペア

 これらの関数は互いに逆関数になっているペアがある。それらを確認しよう。

 上の図ではxyzという合成関数を考えているが、2個めのy zが1個めのx yの逆関数であるので、xyxというつながりで元に戻ってくる。

 よって、正しく逆関数になっていれば、z=xになるはずだ。

  • y=axの逆関数はx=by(ただし、a=
    1
    b
    )。
  • y=
    a
    x
    の逆関数はx=
    a
    y
  • y=x2の逆関数はx=√(
    |y|
    a
    )
  • y=sin(ax)の逆関数はx=
    arcsin(y)
    a
  • y=exp(ax)の逆関数はx=log(
    |y|
    a
    )

 ただし、実際やってみるとわかるように、これらは全てがちゃんとした逆関数にはなっていない。たとえばy=x2という関数はxが正でも負でも結果のyは正になる。そして、x=√|y|)の結果はどちらにしろ正の数になる。よって、x<0である状況では「xの符号を外す(絶対値を取る)」ということをしてしまって、逆関数にならないじゃあどうなるか、は上で確認すべし!

 同じような状況が他の場合でも起こり、上の例が逆関数になっていると言ってよいxの範囲は制限されることになる。これも、確認しよう。

動く教科書のページに戻る

 プログラムについて御質問、御要望、バグ報告などございましたら、前野[いろもの物理学者]昌弘へメールくださるか、または、twitterにてirobutsuまでメンションしてください。