プロが教える店舗&オフィスのセキュリティ対策術

log2の近似値を求めよ。
で、やり方がわからないので教えてください。

A 回答 (7件)

テイラー展開


log(1+x)=x-1/2x^2+1/3x^3-1/4x^4… に代入するのがいいかと
    • good
    • 0

多分log2の底は10だろうと思います。



関数電卓でもとめると
log2=0.3010299957
という値です。
「近似値を求める」を「この値を普通の電卓で求める」という意味だとします。

方針は2^nを10^mで近似するというものです。
x=log2とします。
1番荒いのでやってみます。
2^3=8<10  3x<1  x<1/3
2^10=1024>10^3 10x>3  x>0.3 
0.3<x<0.3333・・・
これで少数点下第1位の数字が3であると求められました。
この2つを組み合わせると近似を上げることが出来ます。

2^13=8×1024=8×1.024×10^3<10^4
13x<4、 x<4/13=0.30769・・・

2^23=8×1.024×1.024×10^6<10^7
23x<7  x<7/23=0.3043・・・

2^33<10^10
2^43<10^13



2^93<10^28
2^103>10^31
これより
31/103<x<28/93
0.3009708<x<0.301075
x≒0.3010・・・
は言えそうですね。

電卓で3×4=12と出して=のキーを押していくと
3^(n)×4の計算が次々出てきますので頭の数字が8から始まって9になり10と変わるところを探せば上の計算は出来ます。

log(1+x)=x-(1/2)x^2+・・・
は自然対数についてのものですから底の変換が必要です。
これは普通の電卓ではできません。
またx<<1の場合でないと収束が悪すぎて使えません。
    • good
    • 1

#1ですが、#2さんの回答を見てなるほど と思いました



というわけで私の回答は撤回して置いてください
    • good
    • 0

使えますよ、テーラー展開。


log 2 = - log(1 - 1/2) から、No.1 の式に x = -1/2 を代入すると、
4桁程度の精度なら、7~8項のΣで十分です。
これなら、電卓を使わず、手計算でもできますね。

底の変換をするには、
No.1 の式に x = -1/5 を代入して log(4/5) を求め、
log[10] 2 = (log 2) / (log 10) = (log 2) / { 3 (log 2) - log(4/5) }
とすればよい。
    • good
    • 0

#2です。


#4様のご回答を見て底の変換のやり方がわかりました。
これでテーラー展開を使うことが出来ます。

それならということでΣの項数を減らすことを考えました。
x=1/2では収束が悪いです。
2^10=1024ですからΣの10項目、(1/10)x^10での計算で小数点下第4位です。この桁までの数値を求めるのであれば少なくとも後3項は増やさなければいけないでしょう。

必要なのはlog2とlog5です(最終的にはlog2とlog10です)。テーラー展開式を使うのですからですからついでにlog3も求めてしまうと計算の項数を減らすことが出来ます。
(#4のご回答に合わせてlogは自然対数とします。)

a=log(1-1/10)=log(9/10)=2log3-log2-log5
b=log(1-1/9)=log(8/9)=3log2-2log3
c=log(1-1/6)=log(5/6)=log5-log2-log3

a、b、cを求めるとlog2,log3,log5は求められます。
log2=-(2a+b+2c)
log5=2log2-(a+b)
log3=2log2+(a+c)

a、b、cの収束はかなり速い(Σは4~5項で十分でしょう)です。
でもやはり手計算では面倒です(電卓でも結構面倒です)。しかしlog2,log3,log5と一度に求まってしまうということころはメリットです。

d=log(1-1/5)=log(4/5)=2log2-log5
#4ではこの値を求めています。d=a+bですからa,bを使うときはdを使うことは出来ません。
    • good
    • 0

収束の早さの話になっていますが、早さを気にするならlog(1+x)の展開を使うよりlog((1+x)/(1-x))の展開を使う方が便利です。



  log(1+x) = Σ[i=1~∞]{((-1)^(i+1))*(x^i)/i}
  log(1-x) = -Σ[i=1~∞]{(x^i)/i}
より
  log((1+x)/(1-x)) = log(1+x) - log(1-x)
     = (1/2)*Σ[i=0~∞]{(x^(2i+1))/(2i+1)}

log(2)であれば、(1+x)/(1-x)=2よりx=1/3を代入します。
この方法ならばlog(2)やlog(3)等もちゃんと収束域に含まれますし、奇数項しか現れないので計算回数が少なくて済みます。
    • good
    • 0

#2、#5です。


#4のご解答を参考にさせていただいて#5を書きました。
でも中途半端でした。
log2,log3,log5、・・・を個別に求めるのではなくて一緒に求めるという立場であればもっと効率のよいテーラー展開を考えることは難しくありません。#5はちょっと工夫が足りませんでした。どこかにまだ2とか3にこだわりがあったような気がします。
xが小さければlog(1+x)の収束が速いのですからそういう数字を探せばいいのです。#5と違う数字で考えます。

a=log(9/10)=log(1-1/10)
b=log(24/25)=log(1-1/25)
c=log(80/81)=log(1-1/81)
aの場合で4項、bで3項、cで2項で済みます。
log7の値もほしい場合は
d=log(50/49)
を入れればいいでしょう。
log11は、とかlog13は、とか増やしていく時も考え方が簡単です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!