LOG3(eを底とする)
LOGの級数展開
log3= | 2{ | 1 ――― 2 |
+ | 1 ――― 3・2^3 |
+ | 1 ――― 5・2^5 |
+ | 1 ――― 7・2^7 |
+・・・} |
1.
0986122886 6810969139 5245236922 5257046474 9055782274
9451734694 3336374942 9321860896 6873615754 8137320887
8797002906 5957865742
3680042259 3051982105 2801870767 2774106031 6276918338 1367179373 6988443609
5990374257
0316795911 5211455919 1775067134 7054940166 7755802222 0317025294
6897560690 1065215056 4286813803 6317373298
5777823669 9165479213 1818149020
0301038236 3012224865 2748198225 9910974524 9089645805 3467008845
9650857484
4411901885 7087647494 8670796130 8582941160 2166121184 0014098255
1439194876 8893679849 4302255731 5353296853
4529525145 9213876494 6859325627
9441655694 1578272310 3551688661 0211846989 0439943063 1382552857
3646688282
4988136822 8006341439 1078689325 1456437510 2044516275 6193497398
2116941585 7405353617 5890097512 2233797736
9696877543 5479513571 2982177017
5812421223 5140581016 3272465588 9372495649 1918524296 0796684234
6470693772
3725265508 2032078333 9280558928 5314687309 5132606458 3091843974
9682223032 5765467533 3118230196 4927525759
9132217851 3533902374 8296433950
2546074245 8249346668 6612188143 6526565429 5427676105 0547779542
2933973323
1000桁目
尚、
log(1+x)= x- | x2 ――― 2 |
+ | x3 ――― 3 |
- | x4 ――― 4 |
+ | x5 ――― 5 |
-・・・@ |
log(1-x)=-x- | x2 ――― 2 |
- | x3 ――― 3 |
- | x4 ――― 4 |
- | x5 ――― 5 |
-・・・A |
を使って、@-Aで 偶数項が消滅する
(1+x) log―――= (1-x) |
2{x+ | x3 ――― 3 |
+ | x5 ――― 5 |
+ | x7 ――― 7 |
+・・・} |
ここで、x=1/2とすると log3。
!★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
!★ln3の計算★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
!★log3=2{1/2+1/3・2^3+1/5・2^5+1/7・2^7・・・}★★★★★★★★★★★★★★★★★★★★
!★★★★★★★★★★★★★★★★★★★★★★100桁処理版★★★★★★★★★★★★
!★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
!――(宣言文)――――――――――――――――――――――――――――――――――
OPTION
ARITHMETIC RATIONAL
option base
0
!――――――――――初期設定――――――――――――――――――――――――――
LET BLOKS=100 !100桁区切り
LET
JJJ=10^BLOKS
LET QQ=JJJ-1
print "■■■■■■LOG3の計算開始■■■■■■■■■■"
input
PROMPT "何桁まで計算しますか?":KTA_2
LET KTA=KTA_2/BLOKS*1.05 !桁数へ変換 5%マージン追加
print
"計算開始時間:";date$,time$
print
"KTA=";KTA
!――配列を準備する―商・余・Σ・基底――――――――――――――――――――――――
dim
SYO(KTA*2),JOYO(KTA*2),(KTA*2),BASE(KTA*2)
!
――――――――――――――――――――――――――――――――――――――――
!★log3=2{1/2+1/3・2^3+1/5・2^5+1/7・2^7・・・}★★★★★★★★★★★★★★★★★★★★
!項数の項数計算
kou
!項数=(log2+KTA_2-logk)/log2
LET kou=(0.3010+KTA_2)/0.3010
print
"項数:";int(kou);"項まで"
!★★★★★★★★第1項は、1/2★★★★★★★★★★★★★★★★★★★★
LET
BASE(0)=1
LET DIV_X=2
for I=0 to KTA
LET JOYO(I)=BASE(I)
NEXT
I
GOSUB 600 ! 1/2の計算
for I=0 to KTA
LET BASE(I)=SYO(I)
LET
(I)=BASE(I)
! print BASE(I)
NEXT
I
!★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
!★log3=2{1/2+1/3・2^3+1/5・2^5+1/7・2^7・・・}★★★★★★★★★★★★★★★
!★★★★★★★第3項以降の計算★★★★★★★★★★★★★★★★★★★★
for
k=3 to kou step 2
! print "k=";k
GOSUB 1100 !そろばんリセットルーチン SYO と
JOYOを0にする
for I=0 to KTA
LET JOYO(I)=BASE(I)
NEXT
I
!★★前の項(BASE)を2^2で割る
LET DIV_X=4
GOSUB 600
!答えはSYOで返ってくる
!★★この項をBASEに一旦保存する
for I=0 to KTA
LET
BASE(I)=SYO(I)
! print BASE(I)
NEXT I
!★★前の項(JOYO)をkで割る
LET
DIV_X=k
GOSUB 600 !答えはSYOで返ってくる
!★★狽ノ足す
for I=1 TO KTA
LET
(I)=(I)+SYO(I)
NEXT I
next k
!最後に2倍し、桁上げ処理する
FOR I = 0
TO KTA
LET (I)=2*(I)
NEXT I
GOSUB 910
!桁上げ処理
!印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷
print
"計算終了時刻:";date$,time$
print str$((0));"."
FOR I =1 TO KTA
LET
p$=repeat$("0",100-LEN(str$((I))))&str$((I))
print mid$(p$,1,10);"
";mid$(p$,11,10);" ";mid$(p$,21,10);" ";mid$(p$,31,10);" ";mid$(p$,41,10);"
";
print mid$(p$,51,10);" ";mid$(p$,61,10);" ";mid$(p$,71,10);"
";mid$(p$,81,10);" ";mid$(p$,91,10)
if I/10=int(I/10) then print str$(
I*100);"桁目"
NEXT
I
!印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷印刷
stop
600 !
*DIV_X
! ■■■■■■■■■■割算■■■■■■■■■■■■■■■■■■■■■■■■
!
*******ソロバン・ルーチン開始*********************
for I= 1 to KTA
! 商を計算
LET
SYO(I)=int((JJJ*JOYO(I-1) + JOYO(I)) / DIV_X)
! 余りを算出
LET
JOYO(I)=(JJJ*JOYO(I-1) + JOYO(I))-SYO(I)*DIV_X
next I
!
******ソロバン・ルーチン終了!!******************
! ***商の結果を余りへ置換え*****
for I=1 to
KTA
LET JOYO(I) =SYO(I)
next I
!
***置換え終了!****************
return
! ■桁処理■■■■■■■■■■■■■
910 !
*KEA_UP
FOR G_KTA=KTA to 1 step -1
LET (G_KTA-1)=(G_KTA-1)+int((G_KTA)
/ JJJ)
LET (G_KTA)=MOD( (G_KTA) , JJJ )
next G_KTA
return
!
■■■■■■■■■■■■■■
! ■■リセットルーチン■■■■■
1100 ! *RE_SET
for I =0 to
KTA
LET SYO(I)=0
LET JOYO(I)=0
next I
return
!
■■■■■■■■■■■■■■■
END