2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
対数(全1記事)
リンクをコピー
記事をブックマーク
安原祐二氏(以下、安原):それではパート3ですね。「対数」というテーマでがんばっていきます。パート1から8まである中で、たぶんこのパート3に一番大事な話が含まれているので、ここはぜひ真剣に聞いてもらえればなと思います。
まず、指数関数の話をしましょう。f(x)、イコール例えばa(なにかの数字)があったとしてそのx乗、これを指数関数と呼びます。aは必ず0以上です。負だとこれは考えられないんですよね。0以上です。
どんなグラフになるか。これはまた、aが1以上か1以下かでだいぶ形が変わりますが、1より大きい場合を考えましょう。例えばaが1.5とか2とか。例えばf(x)=2x(※2のx乗)みたいなグラフがあるとこんな感じになります。xが0の時は、aの0乗でそこは1になるという性質があるので、このy軸の1は必ず通るんですね。こういうのが指数関数です。
逆関数を意識しようという話をパート1でしました。指数関数の逆関数はどうなっているのかなと考えてみた時に、y=ax(※aのx乗)とあった時にx=?というのが逆関数の解き方だったわけです。これは単に知識の問題ですが、x=logaのyみたいに書くのが対数と呼ばれるものです。つまり、指数の逆関数が対数ということになります。よって指数関数の逆関数f-1(x)というのはlogaのxになるわけです。
逆関数の見方として、この45度の線でクルッと回すという話をしました。(スライドを示して)なので今グレーで書いてあるのが指数関数だとしたら、それをグルッと回すと対数な関数になるので、どちらかをわかっていれば逆関数のグラフはすぐにわかります。なので、対数の関数はx軸の1と必ず交わっているということになります。
logをがんばっていきましょう。logbのaと書いてあった場合、どういう意味になるかというと、この式全体ではbの何乗がaなのかという問いになるわけです。例えば、log10の100というのがあったとしましょう。(問いは)log10の100は10の何乗なのか? なんですね。なので2になるわけです。10の2乗は100ですよね。
じゃあlog2の16はどうでしょう。16は2の4乗なので、log2の16は4ですね。大丈夫ですか? 一番下のはちょっと難しいですよね。10は100の何乗なのか。これは1/2乗で、つまりルート100が10になるので答えは1/2になります。これがlogです。
ここから大事な話に入っていきます。底(てい)というものがあります。底とは何か。今ここに書いたのは、logaのxですが、この小さいaの部分を底と呼びます。英語では確かbaseだったと思うのですが、baseを底と翻訳した方は偉いなと思います。僕は底のほうがわかりやすいと思います。aは底です。底であるところのaを、別の底であるbにしたいという変換があって、これが公式であります。
学校で対数を習った時、フワーッと流れていって計算をさせられて終わったみたいなパターンが多くて、何が大事だったのかな? みたいなところがあるかと思います。実は対数で大事なのは、この公式ただ1つです。これだけはきっちり覚えたほうがいいですね。数学で暗記はあまり推奨されませんが、これだけは覚えたほうがいいです。これはプログラムをやっていても絶対に使います。
一番下の公式をよく見ていきましょう。「超便利公式」と書きましたが、logaのxですね。logaのx、aがどこに行くのかよく見てください。分母のほうに行っていますよね。そして、なにか適当な底のbを持って来ている。2でも100でもなんでもよくて、分母と分子に適当なbを持ってきて、それで分子と分母にこの底とこのxの部分を持ってくる公式があります。
これは何回でも復習をして暗記してください。絶対に暗記したほうがいいです。なんでこんなにしつこく言うのかを話をしていきましょう。
例えばlog4のxという式があったとしましょう。これは、xは4の何乗なのかという問いになるわけですが、この4がなんか鬱陶しい。使いにくいから2にしたいと思ったとしましょう。その時に先ほどの公式を使うんですね。(分母と分子には)なんでも持ってきていいので、当然2でもいいわけです。log2の4を分母に持って来て、log2のxを分子に持ってくるという公式があって、分母の部分の4は2の2乗なので、今赤い丸で囲っているとおり、2になるわけです。
なので1/2になって、log2のxになって、見事に底4を底2に変換できます。1/2をかけるだけでよかったんだなとわかります。
まだしつこくやっていきます。「つまりこういうことだった」と、底を交換したい場合、結局すでにわかっている数値である場合が多いんですね。ほぼ間違いなく底の交換は既知の値です。4を2にしたいとか、10を2にしたいとか、そういう予めわかっている数字になるわけです。なので絶対に、定数倍で片付けることができます。
なので、底に変な値が入っていて困ったなと思ったら自分の好きな値に変換しちゃえばいいんですよ。底に100が入っていて嫌だなと思ったら2に変換する術があって、それは定数倍するだけという大事な話でした。
応用例に入っていきましょう。今話した話をノートに書いてみたりしてほしいんですが、2a=10b(※aとbは指数)みたいな式があった時に、aとbの関係が定まるわけですが、これは比例関係にあることがわかります。つまりこの10と2は底の交換みたいな話なんですよね。
なので、今10のb乗と書いてあるのを見ると、10進数の桁の数がbになっているとなんとなくわかります。2のa乗のaというのは、だいたい2進数での桁の数なんですよ。なので、10進数と2進数の桁の数は比例関係にあることがわかります。
例えばlog2の10を電卓で叩いて出すと3.32192……みたいな数字が出てきます。逆にlog10の2を電卓で叩くと0.3010……みたいな数字が出てきます。結局10と2の関係は、すごくざっくり言うと3倍したりまたは1/3倍することで交換できます。
(スライドを示して)例えば今一番下に書きましたが、32bitというのは2の32乗です。それだけの表現の能力があると。というのは、この32の部分をだいたい1/3すると10進数だと10桁ぐらいなんだなというのがパッとわかるわけです。意外とベテランプログラマーでもここまでパッとわかる人は少ないのですが、非常に有効な考え方であることがわかるかと思います。
例えば2の64乗。つまりlongだった場合に、10進数で何桁になるか。だいたい1/3をすればいいんだから、10進数でだいたい20桁か21桁ぐらいかなというと、当たっているわけです。そういうのが暗算でできるということになります。
より具体的な例を出してみましょう。これは古式ゆかしい復活の呪文ですが、今64種類の文字があって、これをユーザーに52文字までプチプチと打ち込ませるとしましょう。けっこうな苦行をユーザーに強いるんですが、やらせてみましょう。それをセーブデータにしようと思った時に、何byteの情報がそこに格納されるのか計算できるでしょうか。
これを計算できないと、こういうゲームを実装できないということになります。ヒントは、1byteは256種の文字を使っているということ。つまり256進数なんですね。だから4byteだと、256の4乗の情報量があるということになります。なのでこの問題はこういう転換ができます。
64種の文字があるということは、64進数の数字を256進数で表現すると何桁になるかという問題に帰着するわけです。
ここまでくれば答えはほとんど出るのですが、log256の64。これを計算するのが面倒だなと思ったら、先ほどの公式を使ってください。log2がいいですよね。2とかを持って来てlog2の256を分母に持ってきて、log2の64を分子に持ってくれば簡単に答えを計算できます。
3/4になりますね。すると、ユーザーに52文字打ち込ませる。つまり52桁を3/4すると39byteということがわかります。これを打ち込ませると、セーブデータとしては39byte使えるねという話でした。
1行しか書いていませんが、本当にこれは大事なところです。対数というのは、定数倍で底が交換できるよという話です。なので、恐れないでください。そんなに難しい話じゃないはずです。ここまで理解すればプログラム中に対数を使うはめになっても、そんなに恐れずに対応できるんじゃないかなと思います。というわけでパート3はここまでになります。
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略