田原総一朗著『日本コンピュータの黎明』の 124 ページに、次のように書いてありました。
「無理は承知だ。しかし、チャレンジャーには、無理だ、などという贅沢は許されないんだよ」
これが池田敏雄の口ぐせだった。
どっかで、耳にした、セリフの起原までもが、わかっちまったのでした。
ところで、少し前に、〝常用対数に 10 の自然対数を掛け算すると自然対数になる〟と知って、さっそく、計算式を作って試みたのでした。「常用対数」は、「 10 を底とする対数」で、「自然対数」とは「(自然対数の底) e を底とする対数」であります。
JavaScript を利用して計算してみたところ、少々の誤差は残るものの、その通りの結果を確認できました。
―― が、このところ〈エントロピー〉に関わる資料を読んでいて紛らわしいのは、
〝 2, e, 10 が底の場合には、底の省略が可能である〟という「対数」での取り決めであります。
log 2 = lb / log e = ln / log 10 = lg
という、簡単明瞭に区別できる ISO 規格の記号があるのに、なぜ、それがあまり使われないのでしょうか?
専門家であれば、無論、底が何かは、書くまでもないことなのでしょうが。
JIS 規格の記載には「常用対数」と「自然対数」に並んで「 2 進対数」などと言葉はあれども、どうやら〈ビット〉数を算出する lb にいたっては、JIS 規格では採用すら、されていないらしく……。
わざわざ、日本ではそのひとつを除外する理由が、専門家でない身にはわかりかねます。
それはそうと ――。
JavaScript で、常用対数の計算を直接可能とする関数はないようなのですが、
この度、とある本に〝 2 を底とする対数に 2 の自然対数を掛け算すると自然対数になる〟と書いてあったので、
ln N = ln 2 × log 2 N
ln N = ln 10 × log 10 N
ならば、
log 2 N = lb N = ln N ÷ ln 2
log 10 N = lg N = ln N ÷ ln 10
という割り算で、求めることができるのであれば。
これも、さっそく試してみたところ、多少の誤差は残るものの、まったくもって、その通りの結果となりました。
というわけで、この下のほうでリンクしている資料ページの末尾に、【計算例】として、見本をのっけておきました。
JavaScript のコードは、ページ末尾の HTML の近辺に記載しておりますが、文字のスタイルやレイアウトなどは、別途スタイル・シートを読み込んだり、またヘッダー内にも少々書いております。
function init() {
var i;
// set Num
var Str = '<OPTION value=1 SELECTED>1</OPTION><OPTION value=2>2</OPTION><OPTION value=2.718281828459045>2.718281828459045</OPTION>';
for(i=3; i<11; i++) {
Str = Str + '<OPTION value=' + i + '>' + i + '</OPTION>';
}
Str += '<OPTION value=16>16</OPTION><OPTION value=32>32</OPTION><OPTION value=64>64</OPTION><OPTION value=100>100</OPTION>';
Str += '<OPTION value=128>128</OPTION><OPTION value=256>256</OPTION><OPTION value=512>512</OPTION><OPTION value=1000>1000</OPTION>';
Str += '<OPTION value=1024>1024</OPTION><OPTION value=2048>2048</OPTION><OPTION value=4096>4096</OPTION><OPTION value=8192>8192</OPTION>';
for(i=10000; i<100000000000; i*=10) {
Str = Str + '<OPTION value=' + i + '>' + i + '</OPTION>';
}
document.getElementById('sNum').innerHTML = '<SELECT NAME="selN" id="selN" onChange="logMath(this.value)">' + Str + '</SELECT>';
}
// ln Math
function logMath(target) {
document.getElementById('lnMath').value = Math.log(target);
document.getElementById('lbMath').innerHTML = Math.log(target) / Math.LN2;
document.getElementById('lgMath').innerHTML = Math.log(target) / Math.LN10;
}
コピーして、参考にしていただくことは可能なのですが、注意事項として、
〈 BODY タグ内に、 onLoad="init()" 〉の記述をしないと、
数字の選択肢としての、オプション・ボックスが存在しなくなります。
ページ読み込み時の、組み込み機能を使っているというわけです。
便利なのは、選択ボックスに一度フォーカスがあえば、そのあとは、
カーソルキーの上下で動作して、数字がずずいと変わっていくところです。
デフォルトで、フォーカスをあわせておくことも、組み込み時に可能なので、
ご希望で、お試しください。
情報エントロピー Ⅰ: 情報化とエントロピー教化思想
http://theendoftakechan.web.fc2.com/sStage/entropy/information.html
0 件のコメント:
コメントを投稿