TikZで使うことができる数学関数
TikZのライブラリー,tikzmathを使用する。
関数
定数関数
pi
円周率
e
自然対数の底
三角関数
引数はデフォルトでは,度数で記述。
sin()
\begin{tikzpicture}
\draw[very thick,-latex](0,0) --(2*pi+0.25,0) node[right] {$x$};
\draw[very thick,-latex](0,-1.2) --(0,1.2) node[above] {$y$};
\draw[very thick,red,samples=100,domain=0:2*pi] plot(\x,{sin(\x r)});
\end{tikzpicture}
点の座標に関数が含まれている場合は,( ,{sin( )})
のように,中カッコに入れる必要があります。
cos()
tan()
sin(30)
が返す値は,
✕ sin(30ラジアン)
○ sin(30度)
となります。
引数にラジアンを使用する場合は,
sin(\x r)
r
を記入します。
sin(3 r)
sin(3ラジアン)
と解釈されます。
注意 sin(\x+\y r)
とした場合,\y
のみがラジアンと解釈されてしまいます。
例えば,
sin(3 + 3 + 3 r)
とするとどうなるでしょうか。この場合,最後の3だけラジアンと解釈されます。
すべての3をラジアンを解釈させるためには,
sin(3 r + 3 r + 3 r)
と,引数の項毎にr
を付けなければいけません。積や分数だけからできている項の場合は,たとえば,
sin(3 * 3 r)
のように,r
は1つで十分です。
カッコを使う
sin(3 r + 3 r + 3 r)
のかわりに,
sin((3 + 3 + 3) r)
とすること,すべての項にr
が係ります。
引数の限界
三角関数の引数として取れる値には限界がある。
度数法 16383
ラジアン およそ285
三角関数は周期関数だから,数値計算の際には定期的に $2\pi$ の整数倍ずつ引数を調整することが必要になる。
逆三角関数
asin()
acos()
atan()
これらは度数で値を返します。
数値を度数からラジアン,ラジアンから度数に変換する関数もあります。
度数→ラジアン:rad()
ラジアン→度数:deg()
指数関数
exp()
底はe
です。
\begin{document}
\begin{tikzpicture}
\draw[very thick,-latex](-4,0) --(4+0.25,0) node[right] {$x$};
\draw[very thick,-latex](0,0-0.25) --(0,4) node[above] {$y$};
\begin{scope}
\clip(-4,0) rectangle (4,4);
\draw[very thick,red,samples=100,domain=-4:4] plot(\x,{(exp(\x))});
\end{scope}
\end{tikzpicture}
\end{document}
対数関数
ln()
底はe
です。
\begin{document}
\begin{tikzpicture}
\draw[very thick,-latex](-0.5,0) --(4+0.25,0) node[right] {$x$};
\draw[very thick,-latex](0,-4) --(0,2) node[above] {$y$};
\begin{scope}
\clip(-0.5,-4) rectangle (4,2);
\draw[very thick,red,samples=100,domain=0+0.01:4] plot(\x,{(ln(\x))});
\end{scope}
\end{tikzpicture}
\end{document}
常用対数
log10()
底は10
です。
双曲関数
sinh()
cosh()
tanh()
平方根
sqrt()
\begin{document}
\begin{tikzpicture}
\draw[very thick,-latex](-0.25,0) --(4+0.25,0) node[right] {$x$};
\draw[very thick,-latex](0,-0.5) --(0,4) node[above] {$y$};
\begin{scope}
\clip(-0.5,-0.25) rectangle (4,4);
\draw[very thick,red,samples=100,domain=0:4] plot(\x,{sqrt(\x)});
\end{scope}
\end{tikzpicture}
\end{document}
絶対値関数
abs()
\begin{document}
\begin{tikzpicture}
\draw[very thick,-latex](-4,0) --(4+0.25,0) node[right] {$x$};
\draw[very thick,-latex](0,-0.5) --(0,4) node[above] {$y$};
\begin{scope}
\clip(-4,-0.5) rectangle (4,4);
\draw[very thick,red,samples=100,domain=-4:4] plot(\x,{abs(\x)});
\end{scope}
\end{tikzpicture}
\end{document}
符号関数
sign()
引数が正ときは$+1$, 負のときは$-1$,0のときは0を返します。
私の環境には,この関数はありませんでした。
\begin{document}
\begin{tikzpicture}
\draw[very thick,-latex](-4,0) --(4+0.25,0) node[right] {$x$};
\draw[very thick,-latex](0,-2) --(0,2) node[above] {$y$};
\begin{scope}
\clip(-4,-2) rectangle (4,2);
\draw[red,very thick,samples=200,domain=-4:4] plot(\x,{sign(\x)});
\end{scope}
\end{tikzpicture}
\end{document}
2変数関数
2成分ベクトルの長さ
'veclen(x,y)'
入れ子で使うと,3成分ベクトルの大きさに応用することができる。
最大公約数
gcd(x,y)
二項演算
和
add(x,y)
差
subtract(x,y)
差
multiply(x,y)
商
\divide(x,y)
$x \div y = \frac{x}{y}$
商(あまりを出す)
\div(x,y)
剰余(あまり)
mod(,)
正の剰余
Mod(,)
冪
pow(x,y)
$x^y$
二項関係
x > y
$x$が$y$より大きいとき1,それ以外で0を返します。
\begin{document}
\begin{tikzpicture}
\draw[very thick,-latex](-4,0) --(4+0.25,0) node[right] {$x$};
\draw[very thick,-latex](0,-0.5) --(0,2) node[above] {$y$};
\begin{scope}
\clip(-4,-0.5) rectangle (4,2);
\draw[red,very thick,samples=200,domain=-4:4] plot(\x,{\x > 0});
\end{scope}
\end{tikzpicture}
\end{document}
x >= y
$x$が$y$以上のとき1,それ以外で0を返します。
\begin{document}
\begin{tikzpicture}
\draw[very thick,-latex](-4,0) --(4+0.25,0) node[right] {$x$};
\draw[very thick,-latex](0,-0.5) --(0,2) node[above] {$y$};
\begin{scope}
\clip(-4,-0.5) rectangle (4,2);
\draw[red,very thick,samples=200,domain=-4:4] plot(\x,{\x >= 0});
\end{scope}
\end{tikzpicture}
\end{document}
x < y
, x<=y
$x$が$y$より小さいとき,あるいは$y$以下のとき1,それ以外で0を返します。
\begin{document}
\begin{tikzpicture}
\draw[very thick,-latex](-4,0) --(4+0.25,0) node[right] {$x$};
\draw[very thick,-latex](0,-0.5) --(0,2) node[above] {$y$};
\begin{scope}
\clip(-4,-0.5) rectangle (4,2);
\draw[red,very thick,samples=200,domain=-4:4] plot(\x,{\x < 0});
\end{scope}
\end{tikzpicture}
\end{document}
x == y
$x$が$y$と等しいとき1,それ以外では0を返します。
\begin{document}
\begin{tikzpicture}
\draw[very thick,-latex](-4,0) --(4+0.25,0) node[right] {$x$};
\draw[very thick,-latex](0,-0.5) --(0,2) node[above] {$y$};
\begin{scope}
\clip(-4,-0.5) rectangle (4,2);
\draw[red,very thick,samples=100,domain=0:-4] plot(\x,{\x == 0});
\draw[red,very thick,samples=100,domain=0:4] plot(\x,{\x == 0});
\end{scope}
\end{tikzpicture}
\end{document}
\loop``\repeat
の組み合わせで使う。ループは
\ifnum\countA < \stepA
は\countA
が\stepA
よりも小さいときを条件にして実行される。この条件を満たさないとき,\loop
内の処理が終了する。