フォトギャラリー用画像#17
この企画の目的
毎日投稿のバッジ獲得(365日)のため少ない労力で記事を書く
「みんなのフォトギャラリー」で使える数学の画像を増やす
理屈は抜きで、目で見て数学を楽しんで頂く
画像の説明
こちらの本で紹介されている方法で、高木関数のグラフを描いてみるための準備で作成した画像です。
関数$${\varphi(x)}$$を
$$
\varphi(x):=
\begin{cases}
2x & (0\leq x \leq 1/2)\\
2(1-x) & (1/2 < x \leq 1
\end{cases}
$$
で定義すると、$${y=\varphi(x)/2}$$のグラフは、
のようになります。以下は、この関数を何回も合成してあそんでみます
$${y=\varphi(\varphi(x))/2^2}$$のグラフは、
になります。参考のため、上の図では$${y=\varphi(x}$$のグラフを点線で表示しています。
さらに$${y=\varphi^3(x)/2^3}$$のグラフは、
となります。以下同様に続けると、
というようにギザギザがどんどん細かくなっていくという仕組みです。
ソースコード
以下は、ヘッダ画像に用いたPythonのコードです。Google Collaboratory で実行しました。
import matplotlib.pyplot as plt
import numpy as np
def phi_internal(x):
if (0.0<=x) & (x<=0.5):
retv = 2.0*x
elif (0.5<x) & (x<=1.0):
retv = 2.0*(1.0-x)
else:
retv = 0.0
return retv
phi = np.frompyfunc(phi_internal, 1, 1)
plt.rcParams['font.size'] = 14 # デフォルトの文字サイズ
r = 5.0
fig, ax = plt.subplots(figsize=(1.91*r,r))
N = 10
for k in range(1,N):
x = np.linspace(0.0, 1.0, 2**k + 1)
y = phi(x)
for i in range(k-1):
y = phi(y)
ax.plot(x,y * 2**(-k))
plt.show()