MENU
273,725

スレッドNo.2156

常用対数値の手計算

先日、私はふと 4374 と 4375 がどちらも 1 桁の素因数しか持たないことに気づきました。
そして、224 と 225、2400 と 2401 も同様の性質を持つと知っていた私は、以下のような計算を得ました。
log は全て常用対数です。

224 ≒ 225 より
5 log 2 + log 7 ≒ 2 log 3 + 2 log 5

2400 ≒ 2401 より
5 log 2 + log 3 + 2 log 5 ≒ 4 log 7

4374 ≒ 4375 より
log 2 + 7 log 3 ≒ 4 log 5 + log 7

そして、
log 2 + log 5 = 1

これらを連立して 4 元 1 次方程式と思って解くと、小数第6位四捨五入で
log 2 ≒ 72/239 ≒ 0.30126 (真値 0.30103)
log 3 ≒ 114/239 ≒ 0.47699 (真値 0.47712)
log 5 ≒ 167/239 ≒ 0.69874 (真値 0.69897)
log 7 ≒ 202/239 ≒ 0.84519 (真値 0.84510)

こうして比較的簡単によい近似値が得られるようです。


これを見て疑問がいくつか。

(1)
分母 239 というのはどのくらいの優秀さなんでしょうか?
すなわち、4 つの対数を分母が共通な有理数で近似する場合、分母<1000 くらいで何番目くらいに優秀な近似値を得られる分母なんでしょうか?
(絶対誤差の和で評価するか相対誤差の和で評価するかでも変わると思いますが)

(2)
4 桁で差が 1 であるものよりも、7桁以上で差が 11 や 13 あるいはそれらを含む 2 桁くらいの合成数であるものを用いた方が精度がよくなりそうな気がします……本当でしょうか?
本当だとして、具体的にどのくらい精度を上げられるでしょう?
(差も 1 桁の素因数しか持たないものは、ABC予想の証明を信じるなら 44100 より先には存在しないはず)

(3)
≒ ではなく、不等号での評価は同様の方法で可能でしょうか?

(4)
使う素数に 11 を含めて 5 元 1 次にする、使う素数に 13 まで含めて 6 元 1 次にする、などで精度の向上は可能でしょうか?

特に (1) (2) (4) は手作業では無謀にもほどがあるので、コンピュータ系の援軍をお願いします。

引用して返信編集・削除(未編集)

とりあえず(1)だけ
> 分母 239 というのはどのくらいの優秀さなんでしょうか?

分母<1000では(相対誤差の合計で)70番目に優秀でした。
239で相対誤差の合計は0.001457…です。
1位は568で、相対誤差の合計は0.0001758…です。
2位以下は897,960,807,794,…と続きますが、分母が大きければ相対誤差が小さいのは当然で、
そういう意味では69番目までに分母が239未満のものはありませんので、239は結構優秀と言えると思います。
分母の大きさも考慮して「相対誤差の合計×分母」でランキングを作ると、
1位の568、2位の897は変わりませんが、3位が329、そして4位が239となります。
相対誤差の合計×分母の具体値(5位まで)は
568 0.099882607730
897 0.222871229356
329 0.285662258393
239 0.348293385746
103 0.383956736568
のようになっていて、これを見ても568だけ突出している感じです。
ちなみに分母が568の場合の対数の近似値は
log2 ≒ 171/568 ≒ 0.30106
log3 ≒ 271/568 ≒ 0.47711
log5 ≒ 397/568 ≒ 0.69894
log7 ≒ 480/568 ≒ 0.84507
なのでかなり良い近似になっていますね。
分母が568になるような組合せを適当に探してみると、
(2400,2401),(4374,4375),(250000,250047)
から式を立てれば上記の値になるようです。
(検算していません。)

引用して返信編集・削除(未編集)

おおー、568 優秀ですね。
しかし 250047 は人力じゃ流石にちょっと出てこない……。

やっぱり桁数が多いと 2 数の差が少しあっても気にならなくなっていくので精度上がるっぽいですね。

引用して返信編集・削除(未編集)

(3)について
5log2 + log7 ≒ 2log3 + 2log5
5log2 + log3 + 2log5 ≒ 4log7
log2 + 7log3 ≒ 4log5 + log7

5log2 + log7 + a = 2log3 + 2log5
5log2 + log3 + 2log5 + b = 4log7
log2 + 7log3 + c = 4log5 + log7
(a,b,c>0)
として計算すると
log2 = (72 - 27a - 5b - 7c) / 239
log3 = (114 + 17a + 12b - 31c) / 239
log5 = (167 + 27a + 5b + 7c) / 239
log7 = (202 - 16a + 59b - 13c) / 239
となります。この式から
log2 < 72/239
log5 > 167/239
はただちにわかりますが、log3 と 114/239 の大小関係は
17a + 12b - 31c の符号を調べないとわかりません。
しかし 17a + 12b - 31c の符号を調べるために計算すると
17a + 12b - 31c = 239log3 - 114log10
となって 3^239 と 10^114 の大小関係を調べることになり、本末転倒です。
よって同様の方法で不等式で上下からおさえるためには
近似式を多数用意してたまたま大小関係がわかることに期待するぐらいしか
思いつきませんが、追加の近似式を用意しようとすると桁数が増えて
手計算に不向きになってきますので、とりあえず
「この方法での不等号での評価は難しい」
と言ってよいかと思います。

引用して返信編集・削除(未編集)

> 17a + 12b - 31c の符号を調べないとわかりません。

なるほど、差分を定数化してしまえばよかったのですね。
連立方程式を解く手間はけっこう増えてしまいますけれども。
手でやるなら逆行列用意して解くのが一番早いかな?

{1/n - 1/(2*n^2)} log e < log{1+(1/n)} < {1/n} log e
を使えば、log e は括り出して放置でいいので、a, b, c の線型結合の正負評価はなんとかなるケースが多そうに思います。
(224, 225), (2400, 2401), (4374, 4375) のケースは実際それでなんとかなるみたいです。

引用して返信編集・削除(未編集)

長文です。
(2)について
素数2,3,5,7、10桁以下で(2400,2401)より誤差率が小さいものは
以下の6個しかありませんでした。左端は誤差率(大きい方の値÷小さい方の値-1)です。
0.000040616 78121827 78125000
0.000066758 645657712 645700815
0.000107377 3954653486 3955078125
0.000188000 250000 250047
0.000228624 4374 4375
0.000295397 184473632 184528125
0.000416667 2400 2401

78121827 = 3^13 * 7^2, 78125000 = 2^3 * 5^10, 差 = 3173 = 19 * 167
645657712 = 2^4 * 7^9, 645700815 = 3^17 * 5, 差 = 43103 (素数)
3954653486 = 2 * 7^11, 3955078125 = 3^4 * 5^11, 差 = 424639 (素数)
これを使って
13log3 + 2log7 = 3log2 + 10log5 (78121827, 78125000)
4log2 + 9log7 = 17log3 + log5 (645657712, 645700815)
log2 + 11log7 = 4log3 + 11log5 (3954653486, 3955078125)
log2 + log5 = 1
を解くと一次従属で解けませんでした。
あらためて
78121827 = 3^13 * 7^2, 78125000 = 2^3 * 5^10, 差 = 3173 = 19 * 167
645657712 = 2^4 * 7^9, 645700815 = 3^17 * 5, 差 = 43103 (素数)
250000 = 2^4 * 5^6, 250047 = 3^6 * 7^3, 差 = 47 (素数)
これを使って
13log3 + 2log7 = 3log2 + 10log5 (78121827, 78125000)
4log2 + 9log7 = 17log3 + log5 (645657712, 645700815)
4log2 + 6log5 = 6log3 + 3log7 (250000, 250047)
log2 + log5 = 1
を解くと
log2 = 171/568, log3 = 271/568, log5 = 397/568, log7 = 480/568
これは見覚えがありますね。
しかしこの値は(2400,2401),(4374,4375),(250000,250047)
からも得られるのではないかと思って上で「検算していません」と書いたのを
あらためて検算してみると、なんと
5log2 + log3 + 2log5 = 4log7 (2400, 2401)
log2 + 7log3 = 4log5 + log7 (4374, 4375)
4log2 + 6log5 = 6log3 + 3log7 (250000, 250047)
log2 + log5 = 1
は一次従属で解けませんでした。結構解けない場合が出てくるのですね。
それではいろいろ組合せを変えて試すことにします。
13log3 + 2log7 = 3log2 + 10log5 (78121827, 78125000)
log2 + 11log7 = 4log3 + 11log5 (3954653486, 3955078125)
4log2 + 6log5 = 6log3 + 3log7 (250000, 250047)
log2 + log5 = 1
→ log2 = 171/568, log3 = 271/568, log5 = 397/568, log7 = 480/568
4log2 + 9log7 = 17log3 + log5 (645657712, 645700815)
log2 + 11log7 = 4log3 + 11log5 (3954653486, 3955078125)
4log2 + 6log5 = 6log3 + 3log7 (250000, 250047)
log2 + log5 = 1
→ log2 = 171/568, log3 = 271/568, log5 = 397/568, log7 = 480/568
13log3 + 2log7 = 3log2 + 10log5 (78121827, 78125000)
4log2 + 9log7 = 17log3 + log5 (645657712, 645700815)
log2 + 7log3 = 4log5 + log7 (4374, 4375)
log2 + log5 = 1
→ log2 = 171/568, log3 = 271/568, log5 = 397/568, log7 = 480/568
13log3 + 2log7 = 3log2 + 10log5 (78121827, 78125000)
log2 + 11log7 = 4log3 + 11log5 (3954653486, 3955078125)
log2 + 7log3 = 4log5 + log7 (4374, 4375)
log2 + log5 = 1
→ log2 = 171/568, log3 = 271/568, log5 = 397/568, log7 = 480/568
13log3 + 2log7 = 3log2 + 10log5 (78121827, 78125000)
4log2 + 6log5 = 6log3 + 3log7 (250000, 250047)
log2 + 7log3 = 4log5 + log7 (4374, 4375)
log2 + log5 = 1
→ 一次従属
4log2 + 9log7 = 17log3 + log5 (645657712, 645700815)
4log2 + 6log5 = 6log3 + 3log7 (250000, 250047)
log2 + 7log3 = 4log5 + log7 (4374, 4375)
log2 + log5 = 1
→ log2 = 171/568, log3 = 271/568, log5 = 397/568, log7 = 480/568
13log3 + 2log7 = 3log2 + 10log5 (78121827, 78125000)
log2 + 7log3 = 4log5 + log7 (4374, 4375)
5log2 + log3 + 2log5 = 4log7 (2400, 2401)
log2 + log5 = 1
→ 一次従属
解が得られても同じものばかりでした。ちょっと精度が良いぐらいだと
あまり変わらないようです。

ではさらに精度が良いものを見つけて試します。
しかし「10桁以下」を11桁以下、12桁以下、・・・と増やしてもなかなか見つかりません。
「15桁以下」まで増やして、やっと
0.000026141 205885750000000 205891132094649
0.000033563 281474976710656 281484423828125
の二つが見つかりましたので、これと(78121827, 78125000)で試します。
205885750000000 = 2^7 * 5^9 * 7^7, 205891132094649 = 3^30,
差 = 5382094649 = 3673 * 1465313
281474976710656 = 2^48, 281484423828125 = 5^11 * 7^8,
差 = 9447117469 (素数)
7log2 + 9log5 + 7log7 = 30log3 (205885750000000, 205891132094649)
48log2 = 11log5 + 8log7 (281474976710656, 281484423828125)
13log3 + 2log7 = 3log2 + 10log5 (78121827, 78125000)
log2 + log5 = 1

log2 = 3125/10381 = 0.30103073 (真値 0.30103000)
log3 = 4953/10381 = 0.47712166 (真値 0.47712125)
log5 = 7256/10381 = 0.69896927 (真値 0.69897000)
log7 = 8773/10381 = 0.84510163 (真値 0.84509804)
ようやく少し精度が上がりました。

ちなみにもう一桁上の
0.000007053 2251783932057135 2251799813685248
2251783932057135 = 3^13 * 5 * 7^10, 2251799813685248 = 2^51,
差 = 15881628113 = 13 * 71 * 17206531
を使って
13log3 + log5 + 10log7 = 51log2 (2251783932057135, 2251799813685248)
7log2 + 9log5 + 7log7 = 30log3 (205885750000000, 205891132094649)
48log2 = 11log5 + 8log7 (281474976710656, 281484423828125)
log2 + log5 = 1
としても上と同じ分母10381の値になりました。
というわけで、
使う数字の桁数をかなり増やしても結果の精度もあまり上がらないらしい
ということがわかりました。

引用して返信編集・削除(編集済: 2024年09月16日 09:12)

使う桁数が上がっても、2, 3, 5, 7 で作れる合成数の割合が減ることで打ち消されてしまい、誤差率がなかなか小さくならないんですね。
そうなると、11や13の使用を検討する方が精度上げには重要なのかな?

引用して返信編集・削除(未編集)

また長文です。これで当初の課題はとりあえず完結。
(4)

【11を追加した場合】

(1万まで)
0.000102041 9800 9801
0.000228624 4374 4375
0.000330688 3024 3025
0.000416667 2400 2401
0.001244444 5625 5632
9800 = 2^3 * 5^2 * 7^2, 9801 = 3^4 * 11^2
4374 = 2 * 3^7, 4375 = 5^4 * 7
3024 = 2^4 * 3^3 * 7, 3025 = 5^2 * 11^2
2400 = 2^5 * 3 * 5^2, 2401 = 7^4
3log2 + 2log5 + 2log7 = 4log3 + 2log11 (9800, 9801)
log2 + 7log3 = 4log5 + log7 (4374, 4375)
4log2 + 3log3 + log7 = 2log5 + 2log11 (3024, 3025)
5log2 + log3 + 2log5 = 4log7 (2400, 2401)
log2 + log5 = 1
→ 一次従属
5625 = 3^2 * 5^4, 5632 = 2^9 * 11, 差 = 7
3log2 + 2log5 + 2log7 = 4log3 + 2log11 (9800, 9801)
log2 + 7log3 = 4log5 + log7 (4374, 4375)
5log2 + log3 + 2log5 = 4log7 (2400, 2401)
2log3 + 4log5 = 9log2 + log11 (5625, 5632)
log2 + log5 = 1

log2 = 270/897 = 0.301003 (真値 0.301030)
log3 = 428/897 = 0.477146 (真値 0.477121)
log5 = 627/897 = 0.698997 (真値 0.698970)
log7 = 758/897 = 0.845039 (真値 0.845098)
log11 = 934/897 = 1.041249 (真値 1.041393)
897は上の方で568に次いで精度の良い分母です。

(1億まで)
0.000016089 3294172 3294225
0.000022158 67108864 67110351
0.000040616 78121827 78125000
0.000050668 14348180 14348907
3294172 = 2^2 * 7^7, 3294225 = 3^2 * 5^2 * 11^4, 差 = 53 (素数)
67108864 = 2^26, 67110351 = 3 * 7^5 * 11^3, 差 = 1487 (素数)
78121827 = 3^13 * 7^2, 78125000 = 2^3 * 5^10, 差 = 3173 = 19 * 167
14348180 = 2^2 * 5 * 7^2 * 11^4, 14348907 = 3^15, 差 = 727 (素数)
2log2 + 7log7 = 2log3 + 2log5 + 4log11 (3294172, 3294225)
26log2 = log3 + 5log7 + 3log11 (67108864, 67110351)
13log3 + 2log7 = 3log2 + 10log5 (78121827, 78125000)
2log2 + log5 + 2log7 + 4log11 = 15log3 (14348180, 14348907)
log2 + log5 = 1

log2 = 6421/21330 = 0.3010314 (真値 0.3010300)
log3 = 10177/21330 = 0.4771214 (真値 0.4771213)
log5 = 14909/21330 = 0.6989686 (真値 0.6989700)
log7 = 18026/21330 = 0.8451008 (真値 0.8450980)
log11 = 22213/21330 = 1,0413971 (真値 1.0413927)
結構精度が上がりました。

【13も追加した場合】

(1万まで)
0.000102041 9800 9801
0.000150263 6655 6656
0.000228624 4374 4375
0.000236742 4224 4225
0.000244200 4095 4096
0.000330688 3024 3025
0.000416667 2400 2401
9800 = 2^3 * 5^2 * 7^2, 9801 = 3^4 * 11^2
6655 = 5 * 11^3, 6656 = 2^9 * 13
4374 = 2 * 3^7, 4375 = 5^4 * 7
4224 = 2^7 * 3 * 11, 4225 = 5^2 * 13^2
4095 = 3^2 * 5 * 7 * 13, 4096 = 2^12
3024 = 2^4 * 3^3 * 7, 3025 = 5^2 * 11^2
2400 = 2^5 * 3 * 5^2, 2401 = 7^4
3log2 + 2log5 + 2log7 = 4log3 + 2log11 (9800, 9801)
log5 + 3log11 = 9log2 + log13 (6655, 6656)
log2 + 7log3 = 4log5 + log7 (4374, 4375)
7log2 + log3 + log11 = 2log5 + 2log13 (4224, 4225)
2log3 + log5 + log7 + log13 = 12log2 (4095, 4096)
log2 + log5 = 1
→ 一次従属
3log2 + 2log5 + 2log7 = 4log3 + 2log11 (9800, 9801)
log5 + 3log11 = 9log2 + log13 (6655, 6656)
log2 + 7log3 = 4log5 + log7 (4374, 4375)
7log2 + log3 + log11 = 2log5 + 2log13 (4224, 4225)
2log3 + log5 + log7 + log13 = 12log2 (4095, 4096)
4log2 + 3log3 + log7 = 2log5 + 2log11 (3024, 3025)
log2 + log5 = 1
→ 一次従属 (式が一つ多くてもなお一次従属なので他の式が必要)
3log2 + 2log5 + 2log7 = 4log3 + 2log11 (9800, 9801)
log5 + 3log11 = 9log2 + log13 (6655, 6656)
log2 + 7log3 = 4log5 + log7 (4374, 4375)
7log2 + log3 + log11 = 2log5 + 2log13 (4224, 4225)
5log2 + log3 + 2log5 = 4log7 (2400, 2401)
log2 + log5 = 1

log2 = 270/897 = 0.301003 (真値 0.301030)
log3 = 428/897 = 0.477146 (真値 0.477121)
log5 = 627/897 = 0.698997 (真値 0.698970)
log7 = 758/897 = 0.845039 (真値 0.845098)
log11 = 934/897 = 1.041249 (真値 1.041393)
log13 = 999/897 = 1.113712 (真値 1.113943)
11だけ追加したときと同じ精度です。

(1億まで)
0.000007456 5767125 5767168
0.000008117 123200 123201
0.000013783 72772425 72773428
0.000015573 1990625 1990656
0.000016089 3294172 3294225
0.000018861 19140264 19140625
0.000022158 67108864 67110351
5767125 = 3 * 5^3 * 7 * 13^3, 5767168 = 2^19 * 11, 差 = 43 (素数)
123200 = 2^6 * 5^2 * 7 * 11, 123201 = 3^6 * 13^2
72772425 = 3^7 * 5^2 * 11^3, 72773428 = 2^2 * 7^2 * 13^5, 差 = 1003 = 17 * 59
1990625 = 5^5 * 7^2 * 13, 1990656 = 2^13 * 3^5, 差 = 31 (素数)
3294172 = 2^2 * 7^7, 3294225 = 3^2 * 5^2 * 11^4, 差 = 53 (素数)
19140264 = 2^3 * 3^2 * 11^2 * 13^3, 19140625 = 5^8 * 7^2, 差 = 361 = 19^2
67108864 = 2^26, 67110351 = 3 * 7^5 * 11^3, 差 = 1487 (素数)
log3 + 3log5 + log7 + 3log13 = 19log2 + log11 (5767125, 5767168)
6log2 + 2log5 + log7 + log11 = 6log3 + 2log13 (123200, 123201)
7log3 + 2log5 + 3log11 = 2log2 + 2log7 + 5log13 (72772425, 72773428)
5log5 + 2log7 + log13 = 13log2 + 5log3 (1990625, 1990656)
2log2 + 7log7 = 2log3 + 2log5 + 4log11 (3294172, 3294225)
log2 + log5 = 1
→ 一次従属
log3 + 3log5 + log7 + 3log13 = 19log2 + log11 (5767125, 5767168)
6log2 + 2log5 + log7 + log11 = 6log3 + 2log13 (123200, 123201)
7log3 + 2log5 + 3log11 = 2log2 + 2log7 + 5log13 (72772425, 72773428)
2log2 + 7log7 = 2log3 + 2log5 + 4log11 (3294172, 3294225)
3log2 + 2log3 + 2log11 + 3log13 = 8log5 + 2log7 (19140264, 19140625)
log2 + log5 = 1

log2 = 6079/20194 = 0.3010300089 (真値 0.3010299957)
log3 = 9635/20194 = 0.4771219174 (真値 0.4771212547)
log5 = 14115/20194 = 0.6989699911 (真値 0.6989700043)
log7 = 17066/20194 = 0.8451025057 (真値 0.8450980400)
log11 = 21030/20194 = 1.0413984352 (真値 1.0413926852)
log13 = 22495/20194 = 1.1139447361 (真値 1.1139433523)
精度は11だけ追加のときと同程度です。
(log2とlog5は精度がいいですが、他はそこまで良くありません)

【29まで追加した場合(素数10個)】
(1億まで)
0.000000010 96059600 96059601
0.000000055 18085704 18085705
0.000000075 26578123 26578125
0.000000084 11859210 11859211
0.000000095 10556000 10556001
0.000000121 8268799 8268800
0.000000155 12901779 12901781
0.000000169 5909760 5909761
0.000000194 5142500 5142501
0.000000244 4096575 4096576
0.000000244 4090624 4090625
0.000000250 4004000 4004001
0.000000315 22194425 22194432
0.000000365 13697019 13697024
0.000000365 90312467 90312500
0.000000371 2697695 2697696
0.000000485 8254125 8254129
0.000000489 88012332 88012375
0.000000494 2023424 2023425
0.000000520 90312453 90312500
0.000000540 1852200 1852201
0.000000560 67874587 67874625
0.000000569 75557027 75557070
0.000000587 46000759 46000786
96059600 = 2^4 * 5^2 * 7^2 * 13^2 * 29, 96059601 = 3^8 * 11^4
18085704 = 2^3 * 3 * 7^3 * 13^3, 18085705 = 5 * 11 * 17 * 23 * 29^2
26578123 = 11 * 13^2 * 17 * 29^2, 26578125 = 3^5 * 5^6 * 7
11859210 = 2 * 3^4 * 5 * 11^4, 11859211 = 7 * 13 * 19^4
10556000 = 2^5 * 5^3 * 7 * 13 * 29, 10556001 = 3^4 * 19^4
8268799 = 7^2 * 11 * 23^2 * 29, 8268800 = 2^10 * 5^2 * 17 * 19
12901779 = 3^2 * 11 * 19^4, 12901781 = 23^2 * 29^3
5909760 = 2^8 * 3^5 * 5 * 19, 5909761 = 11^2 * 13^2 * 17^2
5142500 = 2^2 * 5^4 * 11^2 * 17, 5142501 = 3^3 * 7^2 * 13^2 * 23
4096575 = 3^4 * 5^2 * 7 * 17^2, 4096576 = 2^6 * 11^2 * 23^2
4090624 = 2^8 * 19 * 29^2, 4090625 = 5^5 * 7 * 11 * 17
4004000 = 2^5 * 5^3 * 7 * 11 * 13, 4004001 = 3^2 * 23^2 * 29^2
22194425 = 5^2 * 11^3 * 23 * 29, 22194432 = 2^8 * 3^3 * 13^2 * 19
13697019 = 3^4 * 7^3 * 17 * 29, 13697024 = 2^16 * 11 * 19
90312467 = 7 * 23^2 * 29^3, 90312500 = 2^2 * 5^7 * 17^2
2697695 = 5 * 7^3 * 11^2 * 13, 2697696 = 2^5 * 3^2 * 17 * 19 * 29
8254125 = 3^2 * 5^3 * 11 * 23 * 29, 8254129 = 13^4 * 17^2
88012332 = 2^2 * 3^4 * 17 * 19 * 29^2, 88012375 = 5^3 * 11^3 * 23^2
2023424 = 2^13 * 13 * 19, 2023425 = 3^2 * 5^2 * 17 * 23^2
90312453 = 3^2 * 7 * 11 * 19^4, 90312500 = 2^2 * 5^7 * 17^2
1852200 = 2^3 * 3^3 * 5^2 * 7^3, 1852201 = 13 * 17^3 * 29
67874587 = 11^2 * 23 * 29^3, 67874625 = 3^3 * 5^3 * 7 * 13^2 * 17
75557027 = 7 * 13^3 * 17^3, 75557070 = 2 * 3^3 * 5 * 23^4
46000759 = 7^6 * 17 * 23, 46000786 = 2 * 13^3 * 19^2 * 29
4log2 + 2log5 + 2log7 + 2log13 + log29 = 8log3 + 4log11 (96059600, 96059601)
3log2 + log3 + 3log7 + 3log13 = log5 + log11 + log17 + log23 + 2log29 (18085704, 18085705)
log11 + 2log13 + log17 + 2log29 = 5log3 + 6log5 + log7 (26578123, 26578125)
log2 + 4log3 + log5 + 4log11 = log7 + log13 + 4log19 (11859210, 11859211)
2log7 + log11 + 2log23 + log29 = 10log2 + 2log5 + log17 + log19 (8268799, 8268800)
2log3 + log11 + 4log19 = 2log23 + 3log29 (12901779, 12901781)
8log2 + 5log3 + log5 + log19 = 2log11 + 2log13 + 2log17 (5909760, 5909761)
4log3 + 2log5 + log7 + 2log17 = 6log2 + 2log11 + 2log23 (4096575, 4096576)
6log7 + log17 + log23 = log2 + 3log13 + 2log19 + log29 (46000759, 46000786)
log2 + log5 = 1

log2 = 360565/1197771 = 0.3010299966 (真値 0.3010299957)
log3 = 571482/1197771 = 0.4771212527 (真値 0.4771212547)
log5 = 837206/1197771 = 0.6989700034 (真値 0.6989700043)
log7 = 1012234/1197771 = 0.8450981031 (真値 0.8450980400)
log11 = 1247350/1197771 = 1.0413927203 (真値 1.0413926852)
log13 = 1334249/1197771 = 1.1139433164 (真値 1.1139433523)
log17 = 1473796/1197771 = 1.2304488922 (真値 1.2304489214)
log19 = 1531654/1197771 = 1.2787536182 (真値 1.2787536010)
log23 = 1631038/1197771 = 1.3617277426 (真値 1.3617278360)
log29 = 1751618/1197771 = 1.4623980711 (真値 1.4623979979)
分母の1197771は10000000までで最も誤差が少なくなる値です。
# 誤差の少ない順に9個+(log2+log5=1)だと一次従属になります。
# そこから1個ずつ追加していってもしばらく一次従属のままで、
# 24個目の(46000759,46000786)の式を追加してようやく一次独立になります。
# そしてそこから逆順に消せる行を消していって10行に減らしたのが
# 上に書いた式です。
結論として、素数を2,3,5,7に限定してしまうと巨大な数にしても
あまり精度が向上しませんが、素数の個数を増やしていけば
現実的な値(といっても手計算は無理)で精度を上げられることが
わかりました。

引用して返信編集・削除(未編集)

非常に深く調査してくださり、ありがとうございました。
だんだんと方程式が一時従属になってしまう問題が強敵になっていくのは思いもよりませんでした。
手計算でやる大変さと得られるもののバランス的には、最初のやつが思った以上に優秀だったんですねえ……。

引用して返信編集・削除(未編集)

このスレッドに返信

ロケットBBS

Page Top