大学生クイズ?

確かそういう名称だったと思う。
それに出ていた大学生がある問題をあまりに即答するので不思議がっていて、解法を教えてくれとの要請があったため調べることにした。

内容は次のような問題。

「年利3パーセントの金利が発生する預金で、何年預ければ2倍になるか」

これを頭の中で3秒程度で計算したという。つまり今回の要請は、答えを見つけることではなく、アルゴリズムの探求、ということだ.

問題を正確に述べると, ある自然数nでn\geq \log 2 / \log(1+0.03)を満たす最小のものを選べということだ. pythonで

[code language=”python”]
math.log(2)/math.log(1.03) = 23.449772250437736
[/code]

と出るので, 答えは24年ということだが, これを暗算で求める方法などあるだろうか.

まず言えることは, シュナイダーの定理(正確にはGel’fond-Schneider’s theorem)によって, \alpha = \log 2/\log(1+3/100)という数は超越数である, つまり任意のQ[X]\ni fが, f(\alpha)\neq 0を満たす, あるいは有理数係数多項式の根にならない. 2と1.03は乗法独立であるから, これは正しい. ちなみに1でも0でもない代数的数a, bに対し,

    \[\log a/\log b\in Q\Leftrightarrow a,\ b \text{ are multiplicatively dependent} \qquad \cdots \ (*)\]

が成り立つ. この証明は以下で一応示してある.

有限回の加減乗除で生成されない, もっと言えば有理関数で生成されないような数の大小を決定するようなことは, 代数的には難しいように思われる.

さて, 潔くテイラー展開しよう!
せいぜい2, 3回程度の加減乗除で判定可能にするためには(その大学生が暗算で解答したというから), まぁ近似法を使わざるを得まい.

まずは基本公式から分かることを調べる. 次のようにする.

関数f(z)=\log(z+1)は, 閉円盤|z|\leq 1上一様収束級数

    \[f = \displaystyle{\sum_{m=1}^\infty \frac{(-1)^{m-1}}{m} z^m}\]

に展開される. あるいは|z-1|\leq 1/2上一様収束級数

    \[f = \log2 + \displaystyle{\sum_{m=1}^\infty \frac{(-1)^{m-1}}{2^m\cdot m} (z-1)^m}\]

に展開される. これらは交代級数の収束条件を満たす(|a_n|\rightarrow 0)ので, zが円周上にあるときでも成立する. 今最初の展開を第n項で打ちきった部分和を\rho_nと定義する.

好ましいのは, \rho_nの商がnの若い段階で収束する場合である.

    \[\log 2\sim \begin{cases} \rho_4(1) = 1-1/2+1/3-1/4=7/12 \\ \rho_5(1) = 1-1/2+1/3-1/4+1/5=47/60 \end{cases}\]

また\log 1.03f(0)にかなり近いので, \log 1.03\sim 0.03=3/100を使う. すると,

    \[\log 2/\log 1.03\sim \begin{cases} \frac{100}{3}\cdot \frac{7}{12}=19.\dot{4} \\ \frac{100}{3}\cdot \frac{47}{60}=26.\dot{1} \\ \end{cases}\]

やはりこの程度ではなかなか不正確な値を出してくれる. 交代級数でない近似をしたい. 2=1/(1-1/2)から, 正級数

    \[\log 2 = \displaystyle{\sum_{m=1}^\infty \frac{1}{2^mm}}\]

を得る. この第n項までの部分和を上と同様に\eta_nと定義すると, それによる近似は

    \[\eta_6= (1/2+1/8+1/24+1/64+1/160+1/384) / 0.03 = 23.03819\dot{4}\]

であり, 実に6項を要する. ちょっと有り得ない.

ところでいきなり結論だが, log2の下二桁が0.69であると知っていた場合は..

n ≧ log2/log1.03 > 0.69/0.03 = 23 (0.03>log1.03はx>\log (x+1)による)

から直ちに出る.

その可能性は高い.

————————————————–
(*)の証明
まず仮定a^mb^l=1\ (m,\ l\in Z)のもと, ←を言う. そのためにa, bが乗法従属であることと, aとbの(複素数としての)偏角が共にπの有理数倍であることが同じであること, そしてそれが(logの適当な枝を定めた時)\log a/\log b\in Qが成り立つことと同値であることを言う.

    \[\begin{array}{l} 0 \neq |a|^m=|b|^{-l}, \\ \ e^{i(m\theta+l\phi)}=1\ (arg(a)=\theta\neq 0,\ arg(b)=\phi\neq 0)\]

である. つまりm\theta+l\phi\in 2\pi Z. 従属性からm, lいずれか一方は0でないが, 今はmもlも両方非零を仮定する. πは有限回の整数の加減乗除で生成されないので, θとφは\mod \piの中で0になることが必要. 一方θとφが\mod \piの中で0になれば, \displaystyle{m\frac{q}{p}\pi+l\frac{q'}{p'}\pi}の分母を払って(mqp'+lq'p)\pi\in 2\pi Zとなるよう(m,l)の組を任意に選ぶことができる.

これはa=re^{iq/p\pi},\ b=r^{-m/l}e^{iq'/p'\pi}となる表示があるとき, またそのときに限ってa, bは乗法従属になるということである(r, m, lは非零. またp, p’, q, q’は0でない整数).

このとき

    \[\begin{array}{lcl} \displaystyle{\log a/\log b}&=&\displaystyle{\frac{\log r + i\frac{q}{p}\pi}{-m/l\log r + i\frac{q'}{p'}\pi} } \\ &=&\displaystyle{\frac{lpp'\log r + ilp'q\pi}{-mpp'\log r + ilpq'\pi}} \\ &\equiv&\displaystyle{\frac{lp'(p\log r + iq\pi)\mod 2\pi i}{mp'(-p\log r - iq\pi)\mod 2\pi i}} \\ &\equiv& -l/m\in Q\]

である. 途中のmodは, logの枝の違いを吸収する意味がある. 逆に言えば上のようにπやiを含む因子が割りきれるように枝を選べるということを言う必要があるが, それはここでは調べないことにする.

この考察により, →は簡単に示せる. つまりlogの商が有理数であることと, 非有理数因子が割りきれることは同値で, それにはどうしても上のような形を取らざるを得ない. 極形式の表示の一意性から結局a, bの乗法従属性が言える.

コメントする