TikZ:底が分数(小数)の対数関数のグラフの書き方

こんにちは。今回は底が分数だったり, 底が小数だったりする場合の対数関数のグラフの書き方です。私もこれに気づいたときはひどく感心というか, そんなの知らないよと思ったのでここに書いておきます。

TikiZのグラフの書き方

普通TikZではグラフは次のように書きます。

\draw[domain=-4:4] plot(\x, \x) node [above] {$y=x$};

ここで\log_{2}xのグラフは次のように書きます。

\draw[domain=0.0625:4] plot(\x, {log2(\x)}) node [right] {$y=\log_2x$};

では\log_{\frac12}xのグラフは,

\draw[domain=0.0625:4] plot(\x, {log0.5(\x)}) node [right] {$y=\log_{\frac12}x$};

と思うのが普通?ですが, これでは何にも描いてくれません。
log(1/2)(\x)としても同じことです。

解決方法は底変換

これの解決方法は底変換の公式を用いることだったのです。
\log_{\frac12}xを底を10にすると,
\log_{\frac12}x=\dfrac{\log_{10}x}{\log_{10}\frac12}なので,
これを用いて, 先のコマンドを次のように底変換したもので書き換えます。

\draw[domain=0.0625:4] plot(\x, {log10(\x)/log10(1/2)}) node [right] {$y=\log_{\frac12}x$};

これで\log_{\frac12}xのグラフを描いてくれます。
因みに, 底変換するときの底は10が無難です。それ以外では動作しないことが多いです。

グラフの精度を上げたいときは,
samples=100を定義域のところに追加すればいいです。
例えば, [samples=100,domain=0.0625:4]
このような感じです。100というのはプロット数だと思うので, 数を増やせばより精度は上がるでしょう。
それでは。

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)