はじめに
数学において絶対値を処理することは極めて難しいとされる。初学者向けの説明では、符号を取っただけのものと説明されがちであるが、本質はそこではない。絶対値とは、原点から対象の値までの数直線上の距離である。なので、実数の領域では、絶対値の中身が正であれば1倍をし、負であれば0からその数を減算する操作、つまり-1倍することを意味する。そこで今回は、ある1次関数の絶対値を無限に足していった場合それがある2次関数に収束することを示す。その後、Pythonを用いたプログラムでその結果が正しいことを視覚的に確認する。
問題
以下の関数$f(x)$を考える。
f(x)=\frac{1}{n}\sum_{k=0}^{n} |x-\frac{k}{n}|
このとき、$n\to \infty$とした場合、$f(x)$はどのような関数に漸近するか考えよ。ただし、$0\le x\le 1$とする。
ヒント
まず、$n$といった抽象的な数をいきなり考えるのではなく、具体的な数で実験してみる。
また、絶対値の外し方は、2乗か中身を正負によって1倍もしくは-1倍するという方法しかない。しかし、今回の場合、2乗をしても意味がなさそうである。ということは、中身によって場合分けをしていく方針で考えてみよう。
$n=2$の場合、
f(x)=|x|+|x-\frac{1}{2}|+|x-1|
となり、グラフを描写すると、以下の青線のようになる。
これは、受験勉強をするとよく出る絶対値の折れ線である。
面白いので、$n=3$でも行ってみる。
このように、何となく中心の$x=0.5$付近で最小をとるような関数になってくように見える。
試しに、$n=10$だと以下のようになる。
このように、かなりある2次関数に漸近しているのが分かる。
解法
$0\le m\le n$となる整数$m$をおく。
\frac{m}{n}\le x\le \frac{m+1}{n}
の場合、$f(x)$は以下のようになる。
f(x)=\frac{1}{n}\{ x+(x-\frac{1}{n})+\cdot\cdot\cdot\ (x-\frac{m}{n})\}-\frac{1}{n}\{ (x-\frac{m+1}{n})+\cdot\cdot\cdot\ (x-\frac{n}{n})\}
これをシグマ計算(和の公式)を駆使して計算していくと以下のようになる。
f(x)=\frac{2m-n}{n}x+\frac{1}{n}\{\frac{-m(m+1)}{n}+\frac{n+1}{2} \}
ここで、
\frac{m}{n}\le x\le \frac{m+1}{n}
という制限のもとで、$n,m\to \infty$とすると、以下のことが分かる。
\frac{2m-n}{n}\to2(\frac{m}{n})-1
\frac{1}{n}\{\frac{-m(m+1)}{n}+\frac{n+1}{2} \}\to -(\frac{m}{n})^2+\frac{1}{2}
ここで、最後に$\frac{m}{n}\to x $を用いると、
\frac{2m-n}{n}\to 2x-1
\frac{1}{n}\{\frac{-m(m+1)}{n}+\frac{n+1}{2} \}\to -x^2+\frac{1}{2}
したがって
f(x)\to(2x-1)x+(-x^2+\frac{1}{2})=x^2-x+\frac{1}{2}
となる。
プログラム
さて、上記の議論をプログラムに反映と以下のようになる。
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
import math
#基準となる2次関数の描写
nn=100
xx=np.linspace(0,1,nn)
y_opt=xx**2-xx+0.5
#1次関数の絶対値の和
n1=100
## プログラム上の仕様
n=n1+1
x=np.linspace(0,1,n)
y=np.zeros(n)
for i in range(n):
y=y+abs(x-i/n)/n
plt.plot(x,y,color="blue",label="絶対値の和(n=%d)"%(n1))
plt.plot(xx,y_opt,color="red",label="二次関数")
plt.legend()
plt.savefig("1次関数の絶対値の和の極限と2次関数_%d.png"%(n1))
plt.show()
上記のプログラムを実行すると以下のようになる。($n=100$といった十分に大きい数を用いた場合)
このように、1次関数の絶対値の和は2次関数に漸近する。
まとめ
高校数学1で学習する、場合分けによる絶対値の外し方を用いてある1次関数の絶対値の和が2次関数に漸近することを確認した。また、Pythonを用いることで、そのような漸近の様子を視覚的に示すことができた。このように、極限を考える問題の場合はいきなり抽象的に考えるのではなく、具体的な数で考え、それを拡張していくべきである。