こんにちは。研究開発本部AIエンジニアの平田朋義と申します。
「身近に有る数学」のテーマで何か書いてと言われたので自分の昔から好きなテーマ、
簡単な機能しかない電卓で「e,π,cos(x),exp(x),log(x)を求めてみる」というのを書いてみます。
オイラー数(γ)も求めたいのですがいい方法が思いつかないので、どなたか教えてください。
ここで簡単な機能しかない電卓というのは次のようなものを想定しています。
1.四則演算とルート、±ボタンが使える。(±ボタンは–==でも代用可能)
2.関数電卓でない。
3.メモリー機能がない。
ここで2は当然として3を想定するのはなぜかと言うと、メモリー機能があると級数の計算が簡単にできてしまうので、$$\exp(x) = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + …$$などの計算が簡単にできてしまうからです。(log(x)の計算は収束が遅くて大変ですが)
では一つずつやってみましょう。
e
自然対数の底『e』は数学で非常に重要な数値であり、高校数学Ⅲで学びます。自然対数の底は、e ≒ 2.71828と無限に続く値であり、微積分や指数関数、対数関数、複素数などの数学的な概念や応用において重要な役割を果たしています。また、自然対数の底は自然現象を記述する数学的な式にも現れるため、物理学や工学などでもよく使われ、理系の人には馴染み深いと思います。
eの定義$$\lim_{h \to 0}(1+h)^{1/h}$$を使用します。
ここで$h = 1/2^n$とすると
$$e= \lim_{n \to \infty} (1+ 1 /2^n)^{2^n} $$
つまりnを十分大きい数字、例えば10として
- 1を2でn回割る
- 1を足す
- 2乗(×=)をn回する
で求まります。
n=10としたときの値は
2.71695571854となりました。
本当の値は2.718281828ですので、わりといいですね。
exp(x)
自然対数の底eとともに使われるのがその指数関数exp(x)です。
こちらも高校数学Ⅲで習いますが、文系の方でも統計の分野を学んだ方は、正規分布などで見たことがあるかと思います。
こちらもeの計算と同じで、
$$\exp(x) = \lim_{n \to \infty} (1+x/2^n)^{2^n}$$
を使用します。つまり、十分大きなnに対して、
- xを2でn回割る
- 1を足す
- 2乗(×=)をn回する
で求めることができます。
π
円周率(π)は、円の周囲の長さと直径の比として定義される定数で、数学において非常に重要な役割を持っています。円周率の値は、約3.1415926535…であり、eと同様に無限に続く小数です。
円周率は、幾何学や解析学、統計学、物理学などの様々な分野で利用されます。たとえば、円周率を用いて円の面積を求めたり、円柱や球体の体積を求めたりすることができます。
円周率は、古代から多くの人々によって研究され、計算されてきました。
ここでは
『θが小さい時、sinθ ≒ θ』を使用し、
πの近似値を求める計算式$\pi \approx 2^n\sin(\pi/2^n)$)を用いて計算します。
$m$を十分大きい自然数として、
$\sin(\pi/2^m)$を計算し、$2^m$を掛けて求める方針で行きます。
これを計算するには、半角の定理
$$\cos^2(\theta/2) = (1 + \cos\theta)/2$$
を使用します、
つまり
$c_1 = \cos(\pi/2)=0$
$c_{n+1} = \sqrt{(1 + c_n)/2}$
と漸化式で計算し
$c_n = \cos(\pi/2^n)$
$\sin(\pi/2^m ) = \sqrt{1-c_n^2}$
$\pi \approx \sin(\pi/2^n) \times 2^n$
と$\pi$が求まります。
具体的な操作は以下のようになります
- はじめに0を入力
- 以下をm回繰り返す
- 1を足す
- 2で割る
- ルートを取る
- 2をm+1回掛ける
計算した所、
8回で3.141513801と結構速くπが戻ります。(正解は3.141592653…)
cos(x)
先ほど円周率を求める際にcos(コサイン)を使用したので、次はこれを求めてみたいと思います。他の三角関数については、cosの値から求めることができます。
今回は二倍角の定理、$\cos(2\theta) = 2 \cos^2(\theta) -1$を使用します。
求めたいxに対して十分大きいmについて$x/2^m$を考えます。
これに対して
$c_0 = \cos(x/2^m) \approx 1 – 1/2\times (x/2^m)^2$
$c_{n+1} = 2c_n^2 -1$
と漸化式で計算すると。
$c_n = \cos(x/2^{m-n})$
$c_m = \cos(x)$と求まります。
(全ての計算がメモリー機能なしの電卓でできることをご確認ください)
具体的な計算は以下の通りになります。
c[0]の計算
- xをm回2で割る
- 2乗する
- 2で割る
- ±を押す
- 1を足す
cos(x) = c[m]の計算
- 以下をm回繰り返す
- 二乗する
- 2倍する
- 1を引く
実験的にm=5,x = π/6とすると
c[5] = 0.4999595となり、いい精度を出していることが分かります。
log(x)
最後に対数について計算してみましょう。これはスマートに計算できます。
$a^x$の微分が$\log(a)a^x$であることを使います。
$x=0$での微分を考えて、
$$\log(a)= \lim_{h\to 0} \frac{a^h -1}{h}$$
$h=1/2^m$とすると。
十分大きなmに対して
$$\log(a) \approx (a^{1/2^m} -1 )2^m$$
つまり、ルートボタンをm回押して1を引いて$2^m$を掛ければできます。
具体的な操作は以下のようになります。
- ルートボタンをm回押す
- 1を引く
- 2をm回掛ける
実験的に常用対数と自然対数の底の変換で使われる log(10)=2.3025850..を計算してみます。
m=10とすると、2.305175852となり、いい精度を出していることが分かります。
このように、シンプルな電卓だけでも計算することはでき、一定程度の精度ある数字を導くことができました。複雑な計算式も、咀嚼して簡略化することができます。これからも、算術(Arithmetic)の運動がてら、いろいろと考えてみたいと思います。
数学の定数や関数は、長い歴史の中で計算されてきました。その過程は非常に重要であり、自分自身で計算法を発見し、試してみることで、数学の歴史を追体験することができます。また、このような取り組みを通じて、数学の面白さを再発見することができるでしょう。この記事が読者の皆様にとって、数学の楽しみの新たな発見のきっかけとなれば、筆者としても大変うれしく思います。