行列で素数の常用対数値を求める
備忘録で付けていたノートを見返していて
以前DD++さんがlog[10]2,log[10]3,log[10]5,log[10]7 (常用対数)
の近似値を行列Mを使って
M=
[5 -2 -2 1]
[5 1 2 -4]
[1 7 -4 -1]
[1 0 1 0]
に対し
M^(-1)*[0;0;0;1]
から
log[10]2≒72/239,log[10]3≒114/239,log[10]5≒167/239,log[10]7≒202/239
(小数第3位ほどまで一致する)
の方法がとても面白かったので、log[10]11
まで拡張できないか挑戦していたら
M=
[-1 4 0 -2 2]
[ 1 7 -4 -1 0]
[ 4 3 -2 1 -2]
[-3 -1 0 4 0]
[ 2 3 1 -2 -1]
に対し
M^(-1)*[2;0;0;2;0]
から
log[10]2≒72/239,log[10]3≒114/239,log[10]5≒167/239,log[10]7≒202/239,log[10]11≒249/239
までの値が一気に算出出来ることができました。
はてlog[10]13まで広げられるのか?
p=17まで拡張して調べていたら
M17=
[ 1 3 0 1 0 1 -3]
[ 1 1 0 3 -2 0 -1]
[-4 -2 0 1 2 0 1]
[ 3 6 0 -3 0 0 -1]
[-1 7 0 0 -1 -2 1]
[ 2 -1 -1 -1 -1 0 2]
[ 3 -2 -3 1 -1 1 1]
gp > matdet(M17)
%153 = -239
gp > M17^(-1)*[0;0;2;0;1;0;0]より
%154 =
[ 72/239]
[114/239]
[167/239]
[202/239]
[249/239]
[266/239]
[294/239]
で再び239の共通分母でp=2,3,5,7,11,13,17の常用対数の近似値を
上記の分数で示す結果が入手できた。
(p=13までは行列M13の行列式は-897で239は出現できなかったのだが、
ひょっとして他の組合せからは可能だったかも知れないが未確認)
そこでp=19を239の分母での常用対数を指定して近似分数を構成してみると
306/239が対応してくるが、そこまでの絶対誤差と相対誤差を数値化すると
素数p;絶対誤差;相対誤差
2;+0.000225;+0.0748%
3;-0.000134;-0.0280%
5;-0.000225;-0.0322%
7;+0.000090;+0.0107%
11;+0.000448;+0.0430%
13;-0.000973;-0.0873%
17;-0.000323;-0.0263%
19;+0.001581;+0.1236%
となりp=17までは共通分母239でかなりの精度で表示できることが判明出来た。
p=19ではそれまでの精度は一気に落ちてしまった。
結論:
p=17までの常用対数値の近似分数式では239の分母が大変有効な値であることがわかった。
ここまで広範囲で使えるとは全く予想できなかった。
(勿論もっといい精度の近似分数を考えれば、各素数で全て異なる分母系を用いることになるが・・・)