| # らすかるさんが既にコメントされていますが、私も一生懸命下書きを作ったので書き込ませて頂きます。
質問の問題文が曖昧だと思います。
Mが定義されていないので、何の値かが不明です。 > 例:10進数で0から999999までの整数を表現するコストはlog[10](100000)*10
「例」での数の範囲「10進数で0から999999まで」に含まれる整数の個数は1000000個で、 「log[10](100000)*10」の100000は0が1つ(1桁)少ないのは何故? 書き間違い???
以下、私の想像で補った解釈で回答しますので、話半分に聞いといてください。 ・「b進数」「b(>=2)」ということなので、bは2以上の整数である。 ・Mを固定して、log[b](M+1)*bを最小にするbを求めれば良い。
自然対数をlnで表すことにします。b ≧ 2に対して f(b) = log[b](M+1)*b = ln(M+1)*{b/ln(b)}とおきます。
f'(b) = ln(M+1)*{(1*ln(b)-b*(1/b))/(ln(b)^2)} = ln(M+1)*{(ln(b)-1)/(ln(b)^2)} eを自然対数の底とすれば、 2 ≦ b < eで、f'(b) < 0なので、f(b)は減少 b = eで、f'(b) = 0なので、f(b)は極小 e < bで、f'(b) > 0なので、f(b)は増加
2 < e < 3かつ、bは整数なので、b = 2またはb = 3でf(b)は最小になります。 f(2) = ln(M+1)*{2/ln(2)} f(3) = ln(M+1)*{3/ln(3)} ⇒ f(2)/f(3) = (2/3){ln(3)/ln(2)} = log[2](3^(2/3)) = log[2](9^(1/3)) > log[2](8^(1/3)) = log[2](2) = 1 ⇒ f(2) > f(3)
よって、b = 3のとき、f(b) = log[b](M+1)*bは最小になります。 # f(b)が最小になるbの値がMに依存しないので、問題文がおかしい気がする。
|