Octaveで遊ぶ逆関数

ビジュアル
Octaveで遊ぶ逆関数
2014年9月
1
逆関数(inverse function)とは
𝑦 = 𝑓(𝑥)の関数をxについて解いたとき、𝑥 = 𝑔(𝑦)の形になったとします。g(y)は、yか
らxへ値を与えますので、f(x)の逆変換となっています。
逆変換は、𝑔 = 𝑓 −1 とも書かれます。これはつぎのような関係があるためです。
𝑦 = 𝑓 𝑥 = 𝑓 𝑔 𝑦 ですので、𝑓𝑔 = 𝐼。つまり𝑔 = 𝑓 −1
𝑎−1 = 1/𝑎ですが、𝑓 −1 ≠ 1/𝑓です。
この逆変換で、xとyを入れ替えた𝑦 = 𝑔 𝑥 が逆関数です。例えば、
𝑦 = 𝑥2
をxについて解けば、つぎのようになります。
𝑥=± 𝑦
xとyを入れ替えれば、つぎのようになります。
𝑦=± 𝑥
逆関数のグラフは、y=xの線に対して、もとの関数のグラフと対称になっています(な
ぜでしょうか)。
2
逆関数のグラフ
逆関数のグラフは、y=xの線に対してもとの関数と対称になりますが、Octaveで逆関
数を描く方法には、つぎの3つがあります。
A 逆関数をもとめて描く。
例えば、𝑦 = 𝑥 2 の逆関数のグラフは、𝑦 = ± 𝑥 のグラフを描きます。この場合、逆
関数を求める必要がありますが、y=x-sin(x)のように、必ずしも、逆関数が簡単に求
められない場合があります。
B もとの関数で、xとyを入れ替え、yを変化させながらグラフを描く。
例えば、𝑦 = 𝑥 2 の逆関数のグラフは、𝑥 = 𝑦 2 として、yを変化させながらxの点を求
め、描く。
C Octaveでプロットする関数plot( )で、xとyを入れ替える。
例えば、𝑦 = 𝑥 2 のグラフはplot(x,y)で描きますが、逆関数はplot(y,x)で描きます。
この方法では、逆関数を求める必要がなく、一番簡単です。
3
y=x2の逆関数のグラフ
前のスライドの方法で、y=x2の逆関数のグラフをOctaveで描いてみます。
まずy=x2のグラフです。
x=linspace(-5,5,50);
y=x.^2;
plot(x,y); hold on; grid on
つぎは、𝑦 = ± 𝑥のグラフです。
x1=linspace(0,25,50);
y1=sqrt(x1);
plot(x1,y1,’r’)
plot(x1,-y1,’r’)
つぎは、xとyを入れ替えたx=y2のグラ
フをyを変えて描きます。
y2=linspace(-5,5,50);
x2=y2.^2;
plot(x2,y2,’r’);
つぎは、もとのグラフのxとyを入れ替え
ます。
plot(y,x,’b o’)
o(オーの小文字)で描いています。
4
y=xの線と対称な点(1)
問
点A(x,y)があります。この点がy=xの線に
ついて対称な点B(X,Y)の座標はどうなるで
しょうか。
B(X,Y)
答え
点Aを通る傾きが-1の直線の方程式を求
め、y=xとの交点を求めます。点Aからその
交点までの距離を求め、それを反対側に
伸ばした点がBになりますが、そのように
解く人はいないと思います。
A(x,y)
この問題の解き方は3つあります。
5
y=xの線と対称な点(2)
A 代数的に解く
点A(x,y)と点B(X,Y)の中点はy=xの線上にあ
りますので、
𝑋+𝑥
𝑌+𝑦
=
2
2
これから、𝑌 = 𝑋 + 𝑥 − 𝑦 となりますが、こ
の式からは点Bは求められません。たとえば
点A(5,3)とすると、𝑌 = 𝑋 + 2でy切片が2で、
傾きが1の直線となります。この直線上の点と
点A(5,3)との中点はy=xの線上にあります。
点Aと点Bを通る直線の傾きは-1ですので、
𝑦−𝑌
= −1
𝑥−𝑋
の式と組み合わせれば、
X=y
Y=x
となります。つまり点Aのx座標とy座標を入れ
替えた座標が点Bの座標になります。
B(X,Y)
A(x,y)
6
y=xの線と対称な点(3)
B ベクトル的に解く
中点Cの座標を(a,a)とします。点Aから中点Cま
でのベクトルは、
𝑎 − 𝑥, 𝑎 − 𝑦
となります。これと(a,a)のベクトルは、直交しま
すので、
𝑎, 𝑎 ∙ 𝑎 − 𝑥, 𝑎 − 𝑦 = 0
これより2𝑎2 − 𝑎 𝑥 + 𝑦 = 0
これより、𝑎 =
B(X,Y)
C(a,a)
A(x,y)
𝑥+𝑦
2
点Bの座標は、
𝑎, 𝑎 + 𝑎 − 𝑥, 𝑎 − 𝑦 = (2𝑎 − 𝑥, 2𝑎 − 𝑦)
= 𝑦, 𝑥
となります。
7
y=xの線と対称な点(4)
C 幾何的に解く
右の図から、点A(x,y)が作る長方形をy=xの線
で折り返した長方形を考えれば、点Bの座標は
(y,x)となります。
B(X,Y)
A(x,y)
点Bは点Aをy=aの線で折り返せばよいが、三角
関数などは、折り返す点を探すのが難しい。
この場合は、もとの図形を時計まわりに90度回
転して新しいx軸に折り返せば、y=xの線と対称
な図形が得られる。
あるいは、時計と反対まわりに90度回転して新
しいy軸に折り返してもよい。
x
y
8
y=sin(x)のグラフ
逆関数のグラフは、y=xの線に対し
てもとの関数に対称になりますが、
三角関数のような周期関数の対称
なグラフはすぐには分かりません。
三角関数の逆関数のグラフを求め
てみましょう。
Octaveでsin(x)のグラフを書くと右の
ようになります。
x=linspace(-5,5,50);
y=sin(x);
plot(x,y);
hold on; grid on
9
sin(x)とsin-1(x)のグラフ
sin(x)のグラフに、逆関数sin-1(x)のグラ
フを重ね合わせたのが、右のグラフで
す。予想していた通りですか。
x=linspace(-5,5,50);
y=sin(x);
plot(x,y);
hold on; grid on
plot(y,x,’r’);
sin-1(x)は、arcsin(x)と呼ばれています。
Octaveにはsinの逆関数としてasinが
用意されています。
10
cot(x)のグラフ
同じようにして、cot(x)のグラフを描
いてみます。cot(x)はx=0で不連続に
なるため、xの区域を分割します。
x1=linspace(-pi+0.1,-0.1,50);
x2=linspace(0.1,pi-0.1,50);
y1=cot(x1);
y2=cot8x2);
plot(x1,y1);
hold on; grid on
plot(x2,y2);
11
cot(x)の逆関数のグラフ(1)
Octaveには、cot(x)の逆関数としてacot(x)が
あります。それを使い描くと右のようになりま
す。
x=0で不連続のようなグラフとなっています。
acot(x)でx=0の値を求めるとつぎのような
メッセージが表示されます。
acot(0)
warning: division by zero
ans = 1.5708
cot(x)の定義はつぎのとおりです。
cos(𝑥)
cot 𝑥 =
sin(𝑥)
従って、𝑥 = 𝜋/2 で、cot(x)=0となりますが、
不連続ではありません。
x=linspace(-10,10,100);
y=acot(x);
plot(x,y); grid on
12
cot(x)の逆関数のグラフ(2)
x<0の部分をπだけ上に上げてみます。
ここではlinspaceを使わずに範囲を設
定してみます。
x1=0:0.1:5;
x2=-5:0.1:-0.1;
y1=acot(x1);
y2=acot(x2);
y2=pi + y2;
plot(x1,y1);
hold on; grid on
plot(x2,y2)
x=0で切れていますが、不連続ではありません。
13
cot(x)と逆関数arccot(x)のグラフ
cot(x)のグラフに逆関数arccot(x)の
グラフを重ねてみます。
逆関数のグラフは、plot()でxとyを
入れ替えて描きます。
x1=linspace(-pi+0.1,-0.1,50);
x2=linspace(0.1,pi-0.1,50);
y1=cot(x1);
y2=cot(x2);
plot(x1,y1);
hold on; grid on
plot(x2,y2)
plot(y1,x1,’r’)
plot(y2,x2,’r’)
14
累積正規分布関数のグラフ(1)
問 右上のグラフは、正規確率分布のグラフです。
横軸の𝑥 = −∞から + ∞ まで積分した値は1に正
規化されています。x まで積分した値のグラフは
右下に描かれています。左にいくほど0に近づき、
x=0で0.5になり、右にいくほど1に近づきます。
Octaveでは、正規確率分布はnorm(x)で、累積の
確率分布は normcdf(x)で表されます。
CDF: Cumulative Distribution Function
右下のグラフの逆関数はどのように描かれます
か。横軸と縦軸の範囲が異なりますので、注意が
必要です。
15
累積正規分布関数のグラフ(2)
答え
右の図は、累積確率分布関数のグラフに
その逆関数のグラフを重ね合わせたもの
です。
x=linspace(-3,3,50);
y=normcdf(x);
plot(x,y);
hold on; grid on
plot(y,x,’r’)
16
逆関数はなんの役に立つのか
逆関数の求め方とOctaveを使ったグラフの描き方は分かりました。
しかし、逆関数は、なんのご利益(りやく)があるのでしょうか。数学的には、どのよ
うな場合、逆変換があるのかを調べるのは、おもしろいですが、実用的にはどうな
のでしょうか。
物理学では、cot(x)がときどきでてきますが、y=cot-1(x)がでてくれば、x=cot(y)で考
えてしまいます。逆関数の微分ももとの関数で考えます。たとえば、y=cot-1(x)のxで
の微分はx=cot(y)の両辺をxで微分するとつぎのようになります。
𝑑
−1 𝑑𝑦
1=
cot y =
𝑑𝑥
sin 2 𝑦 𝑑𝑥
𝑑𝑦
−1
2
⇒ = −𝑠𝑖𝑛 (𝑦) =
𝑑𝑥
1 + 𝑥2
17