あらきけいすけの雑記帳

2016-12-24 (Sat)

[][]3行で語るe:=¥lim_{N¥to¥infty}(1+¥frac{1}{N})^N(ここでNは自然数)の由来

授業のための覚書

no title

学習したことを内省して概念化して理解を深めていくプロセスってこんな感じだよなあ。てゆーか、ボク自身受験勉強最中(とそれ以降)は無自覚、無批判

指数法則a^{x+y}=a^xa^y, a^{xy}=(a^x)^y任意の実数 x, y で成り立つ
ことを受け入れて式変形にいそしんでいた。

それって社畜ならぬ数畜?

具体的に「0.5回の掛け算」って実行できる?「0.5回の掛け算」は「平方根」で平方根は「開平計算*1」や「バビロニアアルゴリズム*2」で値を求めることができて…という風に、「同じ値を与える(とせんせーがゆっていた)別の方法」に焼き直して計算していない?先生に言われるままに¥sqrt{2}=1.4142...を受け入れてなかった?

eの定義と万能の指数

ボクはここ数年の数学の授業では次の話を振ることにしている:

¥underbrace{(1.001)¥times(1.001)¥times¥cdots¥times(1.001)}_{694times}=2.001...¥approx2 だから  ¥underbrace{(1.001)¥times(1.001)¥times¥cdots¥times(1.001)}_{347times}=1.414...¥approx¥sqrt{2} じゃね?
この計算って1.1, 1.01, 1.001, 1.0001, ..., 1.00...001って細かくしたら、どんどん値が正確になるし、x=(1.00...01)^N で1より大きいどんな数でも作れるから、究極の「n乗根計算表」って作れね?*3
例えば¥sqrt{2}
¥sqrt{2}¥approx(1.1)^{3}¥approx(1.01)^{34}¥approx(1.001)^{346}¥approx(1.0001)^{3465}¥approx...
ただこれでは指数の桁が膨大になるので、指数に小数もOKという風に指数のかけ算ルールの定義a^{xy}=(a^x)^yを拡大して
¥sqrt{2}¥approx((1.1)^{10})^{0.3}¥approx((1.01)^{100})^{0.34}¥approx((1.001)^{1000})^{0.346}¥approx((1.0001)^{10000})^{0.3465}¥approx...
となる。ここで出てきたのがネイピア数 e
(1.1)^{10},(1.01)^{100}, (1.001)^{1000}, (1.0001)^{10000}, ..., e:=¥lim_{N¥to¥infty}(1+¥frac{1}{N})^N=2.718...
くそまじめな整数回の掛け算が考え方の基本になっているので、これは値を求める計算のアルゴリズムが明快。逆にいくつかの参考書で見かける定義 e:=¥lim_{x¥to0}(1+x)^{¥frac{1}{x}} は直接のアルゴリズムで書けない「実数回の掛け算」がコッソリと導入されているので、いただけない。

ついでにeの定義を使わずにロジックだけで対数関数、指数関数の導関数を求める

高校までの微分積分の知識(合成関数、逆関数の導関数、微分と積分が逆演算)が一通りあるなら、こんな導出もある;

  1. 対数関数は f(xy)=f(x)+f(y)…(1) を満たす。
  2. (1)に x=1 を代入すると f(1)=0 とわかる。
  3. (1)に x=0 を代入すると f(y)=0 になっちゃうのでf(0)は定義できない。
  4. (1)をyで微分すると、x¥,f’(xy)=f’(y) なので、これにy=1を代入すると f’(x)=f’(1)x^{-1}
  5. だから対数関数は ¥displaystyle f(x)=f’(1)¥int_1^x¥frac{dx}{x} である。つまり y=¥frac{1}{x} のグラフを描いて面積を求めれば対数の値が求まることがわかる。
  6. ついでに対数関数は f’(x)=f’(1)x^{-1} なので、対数関数の逆関数(gとする)の導関数は逆関数の導関数の公式より g’(x)=g(x)/f’(1) となる。というわけで指数関数(対数関数の逆関数)の導関数の公式が求められる。

*1開平法 - Wikipedia

*2Methods of computing square roots - Wikipedia 日本語のWikipediaには載っていない。

*3ネイピア数 - Wikipediaの「歴史」「定義」の項のベルヌーイの利子計算の話を参照。

2015-10-21 (Wed)

[][]シュレーダーのアルゴリズム:ニュートン・ラフソン法の高次バージョン

教育用のメモ岡本久, 『ニュートン法の話 近似法から微分方程式の解の存在証明まで』, 数学のたのしみ, 2006春, p.70-91 に紹介されている。公式としての収束は速いが、演算数で不利になるので、アルゴリズムとして速いというわけでもない、という注意書きがなされていた。

F(z)=z+¥sum_{n-1}^{N-1}(-1)^n¥frac{f(z)^n}{n!}¥left(¥frac{1}{f^¥prime(z)}¥frac{d}{dz}¥right)^{n-1}¥frac{1}{f^¥prime(z)}とおいて, z_{n+1}=F(z_n)とすると{z_n}はN次収束する。
E Schroeder, Ueber unendlich viele Algorithmen zur Aufloesung der Gleichungen, Math. Ann., Vol.2 (1870), 317-365.

2015-05-30 (Sat)

[][]指数関数の指数法則

授業のための覚書。いまのところ次の式は対数法則を首尾一貫して実行できるようになるための「定義」であって、何かから導出できる「公式」ではないような気がしている

(e^a)^b=¥left(1+a+¥frac{a^2}{2!}+¥cdots¥right)^b:=1+(ab)+¥frac{(ab)^2}{2!}+¥cdots
もやもやが取れない。

2015-04-12 (Sun)

[]モノグラフ公式集』メモ

  • 「積分区間」という語が出てこない(これは意外)。区間の「上端」「下端」はp.196とp.244に出ている(索引には上がっていない)。

2013-06-01 (Sat)

[][]スプレッドシートとその四則演算を使って「対数表」を作り、2のルート,3乗根,4乗根を求める

教育用の覚書。「ペーパーテストにしづらいが、数学の基礎を掘り下げるような、高校までの教程の知識で解ける、大学の一般教養的な内容の問題」にならないかなと思って考えてみた。

ビュルギは1.0001を、ネイピアは0.9999999を掛け算して対数表を作りあげたが*1、Google Drive のスプレッドシート*2を用いて 1.01 を掛け算して「対数表」を作ってみた*3

セルに値 1.01 を書き込み、式 =[直上のセル]*1.01 をコピー・アンド・ペーストをすると、69番目に 1.98689442415385, 70番目に 2.00676336839539 がくる*4。つまり (1.01)69 ≒ 1.98689442415385, (1.01)70 ≒ 2.00676336839539 である。ここから線形補間を用いて 2 ≒ (1.01)69.6596010178917 となる。これより 21/2 ≒ (1.01)34.8298005089459 となるが、この値を (1.01)34 ≒ 1.40257698616957 と (1.01)35 ≒ 1.41660275603127 の線形補間から求めると、

21/2 ≒ (1.01)34.8298005089459 ≒ 1.41421557713917
となった。これを2乗すると
(1.41421557713917)2 ≒ 2.00000569862306
となる。同様にして
21/3 ≒ (1.01)23.2198670059639 ≒ 1.25992710503696, (1.25992710503696)3 ≒ 2.00002883595533,

21/4 ≒ (1.01)17.4149002544729 ≒ 1.18921811347244, (1.18921811347244)4 ≒ 2.00007398961649

となる。

ふーん、5~6桁の精度なら「スプレッドシート」「底 1.01」「線形補間」で求められるのね*5。パソコン教室を用いた1回分くらいの授業のネタ(何の単元の?)にはできそう。

*1対数 - Wikipedia

*2:この問題程度ならフリーの「計算ノート」として十分に使える。ソフトウェアのインストールがいらないので便利かも。

*3:1.01を100回かけるとeの近似値になる。「なぜeなんて数を考えるのか」「高校数学で指数法則を分数や小数や無理数の冪にまで拡張することがいかに論理が飛躍しているのか」の解説のイントロにならないかとも思っている。

*4:式 =exp( N * ln(1.01) ) を計算させてみたが、全く同じ数値を出力したのでビックリする。Microsoft Exceel 2010 も同様だった。どんな計算してるんだ?掛け算だと「桁落ち」はそう心配しなくていいということかな?

*5:底 1.1 だと精度が3桁程度で悪いし、1.001 だと掛け算が700回程度のオーダーになる。精度の悪さは線形補間で使った演算に由来するのかな?わからん。

2011-07-10 (Sun)

[]2階導関数の符号と凸について

教育用の覚え。a<x<b で f ''(x)>0 ならば、f '(x) は単調増加なので f '(a)<f '(x)<f '(b) である。これより ¥int_a^bf^¥prime(a)dx<¥int_a^bf^¥prime(x)dx<¥int_a^bf^¥prime(b)dx ⇔ (b-a) f '(a)<f(b)−f(a)<(b-a) f '(b) である。ここで関数 F(t):= f( (1-t)a + tb ) - [ (1-t) f(a) + t f(b) ] を考える。まず F(0)=F(1)=0 である。導関数は F '(t)=(b-a) f '( (1-t)a + tb ) - [ f(b) - f(a) ] であるから、F '(0)<0, F '(1)>0 となる。だからグラフが 0¥searrow¥nearrow0 となるので、F(t)<0となる。だから a<x<b で y=f(x) のグラフは2点 (a,f(a)), (b,f(b)) を結ぶ直線より下にある。

2011-05-30 (Mon)

[][]自分の板書中心の授業をビデオに撮ってみる

自分の授業の板書のノート起こしをしてみて、ノートテイクの時間を自在にコントロールできるので、例えば板書の量がある程度たまったところで一気に整理するように書いたりとかできるので便利だということに気が付いた。例えば授業をLMSにあげておいて、ノートテイクを予習として課して、授業時間の本体は演習にあててしまうとか。先生やアシスタントはノートテイクや演習のチェックや不明な個所の指導をするとか。ノートテイクが出来ていない人は欠席扱いするとか。

2010-11-10 (Wed)

[]ベルヌーイの不等式

解析教程 上 新装版

解析教程 上 新装版

教育用の覚書。自然対数の底 e (ネイピア数)の定義に現れる数列 a(N)=(1+1/N)Nが単調増加列であることの証明が思いつかなかったので、ハイラー, ワナー, 『解析教程(上)』を見てしまったのだが、その I.2, 演習問題 2.4 に次の二つの不等式が紹介されていて、この2番目の不等式を使ってくだんの数列の単調性を証明しろと演習問題2.5にあった*1

  1. a≧-1,n=0,1,2,..のとき (1+a)n≧1+na
  2. 0<a<1, n=2,3,...のとき 1-na<(1-a)n<1/(1+na)
この本で参照されている文献は『ヤコブ・ベルヌーイ(1689)『全集』(1744), p.380, バロー(1670)『著作集』(1860)第7講§13, p.224』である。2番目の不等式もベルヌーイの名前で呼んでいいのかは分からない。

1の証明のアウトライン:y=(1+x)nグラフはx≧-1で下に凸で、y=1+nxはそのx=0での接線なので、(1+x)n≧1+nx.

2(左)の証明のアウトライン:y=xnのグラフはx>0で下に凸で、y=1+n(x-1)はそのx=1での接線なので、0<x<1 のとき xn>1+n(x-1).これに x=1-a を代入。

2(右)の証明のアウトライン:y=x-nのグラフはx>0で下に凸で、y=1-n(x-1)はそのx=1での接線なので、0<x<1 のとき x-n>1-n(x-1)>0.これに x=1-a を代入して逆数をとる。

*1:問題には b(N)=(1+1/N)N+1が単調減少列であることを示せともあった。計算してみると確かに b(N) は減少列であることが2番目の不等式の右側を使って示すことができた。へぇ。

2010-08-11 (Wed)

[][][]累乗根の近似値を具体的に計算する方法を習わずにn乗根を受け入れていたんだなあ

教育用の覚え。指数法則の教材を整理しながら、指数を有理数に拡張し、n乗根と分数の指数の関係  を導入するところで、正の数のn乗根が必ず存在することを天下り的に保証してしまっていることと*1、n乗根の値を求める算法をまったく与えていない*2ことに気がつく(何をいまさら>あらき)。ググっても上位のページは「受験向き」の形式的な指数の算法の話が多いように思われる*3

a の n 乗根、すなわち方程式 xn=a (x>0, a>0, nは整数)の解は漸化式  で決まる数列 xn の極限値  で与えられる*4。この漸化式は方程式 xn=a の解をニュートン法*5で求める計算を、高校数学の漸化式っぽく書き下したものであり、実際には無限の計算はせずに、適当な正の数を初期値にとって、(いまどきなら表計算ソフトを使って*6)必要とする桁数まで収束したところで漸化式を解くのをやめればよい。漸化式をC言語の関数で書くと次のようになる*7
[追記:2014.12.7] math.h の pow を使わないバージョンを http://d.hatena.ne.jp/arakik10/20141202/p1 に書いた。

#include <stdio.h>
#include <math.h>
double myNthRoot ( // n乗根の計算をする関数
    double base    // (base) の (1/order) 乗の近似値を求める
   ,double order   //
   ,double EPS     // 収束の精度
){
    double root=base ,root_prev=0.;
    while ( fabs(root-root_prev)/fabs(root_prev) > EPS ) {
        root_prev= root;
        root=((order-1)*root)/order + base/(order*pow(root,order-1));
    }
    return x;
}


蛇足:404 Not Foundというページによれば、 a が 1 に近いとき、a の n 乗根が で与えられるそうだ。へぇ。うまい Pade 近似だなあ*8

*1:n次関数 f(x):=xn が正の実数 x に対して全単射であることを前提している。…てゆーか、指数の四則のうち ax+y, ax-y, axy までは「安直に a を並べて書いて」導入できるのに、商だけは「それがある」ことを考えるだけでも実数の連続性や極限の概念を必要としている…ってのがひっかかっているのだ。指数を無理数に拡張することよりも、深刻なギャップがある…ような気がしているのだ。

*2:何なのだろうね、これに限らないけど、高校数学における具体的な数値を求める算法の軽視は。

*3Google: 累乗根 計算

*4:n=2のとき、有名な「平方根のバビロニア式算法」になる。Methods of computing square roots - Wikipedia. 残念ながら日本語版にバビロニア式の開平アルゴリズムの項目はないようだ。

*5ニュートン法 - Wikipedia

*6:表計算ソフトなら =2^(1/3) でOK…というツッコミは今はなしで。分数のまま処理しようとすると、分母の桁数の増えるペースが速いので、筆算は途中でいやになるだろう。漸化式の収束のペースは速い。
 2の3乗根(1.25992...)の場合に計算を3回繰り返すと次のようになる

*7:pow(base,1./order)で済むのではないか…というツッコミは今はなしで。

*8Padé approximant - Wikipedia. 残念ながら日本語版にパデ近似の項目はないようだ。

2010-02-04 (Thu)

[]福山行きの各駅停車、あるいは凸関数の性質について

卒研の指導で大学から帰るのが遅くなってしまい、22:08岡山発の各駅停車に乗った。倉敷のあたりであろうか、隣に座られた若い先生(らしき方)が滋賀医科大学の入試問題を解き始めたので、あらきは思わず覗き込んで暗算を始めてしまった(実に品がないことするなあ>あらき)。問題文の細かいところは違うけど、こんな問題である

  1. a,bを正の数とするとき、a<x<b ならば ¥log x ¥geq ¥log a+¥frac{x-a}{b-a}(¥log b - ¥log a)を示せ
  2. a1,a2,p1,p2を正の数とし、p1+p2=1 とする。このとき log (p1a1+p2a2)≧p1 log a1+p2 log a2 を示せ
  3. a1, ..., an, p1, ..., pnを正の数とし、p1+...+pn=1 とする。このとき log (p1a1 +...+ pnan) ≧ p1 log a1 +...+ pn log an を示せ*1
  4. a1, ..., an を正の数とするとき ¥frac{a_1+¥cdots+a_n}{n}¥geq (a_1¥cdots a_n)^{¥frac1n}を示せ

久々に見る相加平均、相乗平均の証明(これ学生時代にちゃんと解いたことあったかなー?)。出題者は「関数論」か何かが専門なのかなー?こんな問題をほとんど「生」で出して受験生解けたのかなー?

まず4番の概略は

3番の式に p1=...=pn=1/n を代入すれば、¥log¥frac{a_1+¥cdots+a_n}{n}¥geq¥log(a_1¥cdots a_n)^{¥frac1n}となる。

f:id:arakik10:20100206054925g:image
だいたいこんなイメージ
1番の概略は

y=¥log a+¥frac{x-a}{b-a}(¥log b - ¥log a) は2点 (a,log(a)), (b,log(b)) を結ぶ直線であり、y=log(x) は y''=-x-2<0, すなわち上に凸の関数なので、区間 [a,b] 上では y=log(x) のグラフはこの直線の「上の方」にある。*2

2番の概略は

y=log(x)上の2点 P (a1,log(a1)), Q (a2,log(a2)) を考えると、点 R ( p1a1+p2a2, p1 log a1+p2 log a2 ) は線分PQを p2:p1 に内分する点である。y=log(x)のグラフは区間 [a1,a2] 上では線分PQの「上の方」*3にあるので、log(p1a1+p2a2) は p1 log a1+p2 log a2 よりも大きい。

…で、3番も2番の計算の発想(というか凸関数の性質)を繰り返し使えば解けるよなー*4

…と考えたところでボクの降りる駅になったので、その先生に「3番は2番を繰り返し使えば解けますよ」と話しかけて列車を降りたのであった。


帰宅した後、すぐに電車の中で思いついたアイディアを3項のときに試して「繰り返せばよい」ことを確かめた。


3番の概略は

数学的帰納法を使う。n-1 までが証明済みと仮定する。

まず P=(p1 +...+ pn-1), A=(p1/P)a1 +...+ (pn-1/P)an-1 とおくと p1a1 +...+ pnan=P A + pnan となる。

ここで A, P は正の数で P + pn = 1 だから2番の不等式の条件を満たすので log( P A + pnan ) ≧ P log(A) + pn log(an) となる。

ここで log(A) = log((p1/P)a1 +...+ (pn-1/P)an-1) であるが、 pk/P, ak (k=1,...,n-1)は正の数で (p1/P) +...+ (pn-1/P) = 1 であるから、n-1 のときの

*1: [2010.2.5] log E(X) ≧ E( log(X) ) とも読めるなー。

*2:図を描くと自明なのだが、式で評価しようとするとちょっと面倒。 F(x) = log(x) - log(a) - (x-a)/(b-a)( log(b)-log(a) ), a < x < b とおくと、F(a)=F(b)=0 でその導関数が F'(a) > 0, F'(b) < 0 で連続だから 「増加→減少」のグラフになるので [a,b] 上で F(x) > 0 である。1/a > ( log(b)-log(a) )/(b-a) > 1/b の計算が受験生にはちょっと面倒かも。
[2010.8.9]いやいや、そんなに面倒ではないよ。というのも、y=1/xのグラフを描いて、そのa≦x≦bの面積を考察すると、¥frac{b-a}{a}>¥int_a^b¥frac{dx}{x}=¥log b-¥log a>¥frac{b-a}{b}が直観的に出るよ。

*3:この「上の方」で1番の結果を利用することになるのかな。図形的には自明なので、1番のような誘導が必要とはちょっと気付かなかったな。

*4:[2010.2.7] Jensen's inequality と言うのか。初めて知った…。 イェンセンの不等式 - Wikipedia