16.3 関数 (Functions)

特に注意がなければ、gnuplot の数学関数の引数は整数、実数、複素数の値 を取ることができます。角を引数や戻り値とする関数 (例えば sin(x)) は、 その値をラジアンとして扱いますが、これはコマンド set angles によって 度に変更できます。

数学ライブラリ関数
関数 引数 戻り値
     
abs(x) 任意 x の絶対値, | x|; 同じ型
abs(x) 複素数 x の長さ, $\sqrt{{{\mbox{real}(x)^{2} +
\mbox{imag}(x)^{2}}}}$
acos(x) 任意 cos-1x (アークコサイン)
acosh(x) 任意 ラジアンでの cosh-1x (逆双曲余弦)
airy(x) 任意 エアリー関数 Ai(x)
arg(x) 複素数 x の偏角
asin(x) 任意 sin-1x (アークサイン)
asinh(x) 任意 ラジアンでの sinh-1x (逆双曲正弦)
atan(x) 任意 tan-1x (アークタンジェント)
atan2(y,x) 整数または実数 tan-1(y/x) (アークタンジェント)
atanh(x) 任意 ラジアンでの tanh-1x (逆双曲正接)
EllipticK(k) 実数 k $\in$ (-1:1) K(k) 第 1 種完全楕円積分
EllipticE(k) 実数 k $\in$ [-1:1] E(k) 第 2 種完全楕円積分
EllipticPi(n,k) 実数 n<1, 実数 k $\in$ (-1:1) $\Pi$(n, k) 第 3 種完全楕円積分
besj0(x) 整数または実数 J0 ベッセル関数 (0 次ベッセル関数)
besj1(x) 整数または実数 J1 ベッセル関数 (1 次ベッセル関数)
besjn(n,x) 整数, 実数 Jn ベッセル関数 (n 次ベッセル関数)
besy0(x) 整数または実数 Y0 ベッセル関数 (0 次ノイマン関数)
besy1(x) 整数または実数 Y1 ベッセル関数 (1 次ノイマン関数)
besyn(n,x) 整数, 実数 Yn ベッセル関数 (n 次ノイマン関数)
besi0(x) 実数 I0 変形ベッセル関数 (0 次変形ベッセル関数)
besi1(x) 実数 I1 変形ベッセル関数 (1 次変形ベッセル関数)
besin(n,x) 整数, 実数 In 変形ベッセル関数 (n 次変形ベッセル関数)
ceil(x) 任意 $\lceil$x$\rceil$, x (の実部) 以上の最小の整数
cos(x) 任意 x のコサイン cos x
cosh(x) 任意 cosh x, x のハイパボリックコサイン
erf(x) 任意 erf(real(x)), x の 実部の誤差関数
erfc(x) 任意 erfc(real(x)), 1.0 - (x の実部の誤差関数)
exp(x) 任意 ex, x の指数関数
expint(n,x) 整数 n$\ge$ 0, 実数 x$\ge$ 0 En(x) = $\int_{1}^{\infty}$t-ne-xt dt, x の指数積分
floor(x) 任意 $\lfloor$x$\rfloor$, x (の実部) 以下の最大の整数
gamma(x) 任意 gamma(real(x)), x の実部のガンマ関数
ibeta(p,q,x) 任意 ibeta(real(p, q, x)), p,q,x の実部の不完全ベータ関数
inverf(x) 任意 x の実部の逆誤差関数
igamma(a,x) 任意 igamma(real(a, x)), a,x の実部の不完全ガンマ関数
imag(x) 複素数 x の虚数部分 (実数)
invnorm(x) 任意 x の実部の逆正規分布関数
int(x) 実数 x の整数部分 (0 に向かって丸め)
lambertw(x) 実数 Lambert W 関数
lgamma(x) 任意 lgamma(real(x)), x の実部のガンマ対数関数
log(x) 任意 logex, x の自然対数 (底 e)
log10(x) 任意 log10x, x の対数 (底 10)
norm(x) 任意 x の実部の正規分布 (ガウス分布) 関数
rand(x) 整数 開区間 (0:1) 内の疑似乱数生成器
real(x) 任意 x の実部
sgn(x) 任意 x > 0 なら 1, x < 0 なら -1, x = 0 なら 0. x の虚部は無視
sin(x) 任意 sin x, x のサイン
sinh(x) 任意 sinh x, x のハイパボリックサイン
sqrt(x) 任意 $\sqrt{{x}}$, x の平方根
tan(x) 任意 tan x, x のタンジェント
tanh(x) 任意 tanh x, x のハイパボリックタンジェント
voigt(x,y) 実数 Voigt/Faddeeva 関数 ${\frac{{y}}{{\pi}}}$$\int$${\frac{{exp(-t^2)}}{{(x-t)^2+y^2}}}$dt
    注意: voigt(x, y) = real (faddeeva(x + iy))
     

libcerf (利用可能な場合のみ) による特殊関数
関数 引数 戻り値
     
cerf(z) 複素数 複素誤差関数
cdawson(z) 複素数 Dawson 積分 D(z) = ${\frac{{\sqrt{\pi}}}{{2}}}$e-z2erfi(z) の複素拡張
faddeeva(z) 複素数 再スケール化複素誤差関数 w(z) = e-z2 erfc(- iz)
erfi(x) 実数 虚誤差関数 erf (x) = - i*erf (ix)
VP(x,$\sigma$,$\gamma$) 実数 Voigt プロファイル VP(x,$\sigma$,$\gamma$) = $\int^{{\infty}}_{{-\infty}}$G(x$\scriptstyle \prime$;$\sigma$)L(x-x$\scriptstyle \prime$;$\gamma$)dx$\scriptstyle \prime$
     

文字列関数
関数 引数 返り値
gprintf("format",x,...) 任意 gnuplot の書式解析器を適用した結果の文字列
sprintf("format",x,...) 複数個 C 言語の sprintf の返す文字列
strlen("string") 文字列 文字列中の文字数
strstrt("string","key") 文字列 部分文字列 "key" が現れる先頭位置
substr("string",beg,end) 複数個 文字列 "string"[beg:end]
strftime("timeformat",t) 任意 gnuplot による時刻解析結果の文字列
strptime("timeformat",s) 文字列 文字列 s を変換した 1970 年からの秒数
system("command") 文字列 シェルコマンドの出力を持つ文字列
trim(" string ") 文字列 前後につく空白を取り除いた文字列
word("string",n) 文字列, 整数 文字列 "string" の n 番目の単語
words("string") 文字列 文字列 "string" 中の単語数

他の gnuplot の関数
関数 引数 返り値
column(x) 整数か文字列 データファイル処理中の x 列目
columnhead(x) 整数 データファイルの最初の x 列目中の文字列
exists("X") 文字列 変数名 X が定義されていれば 1, そうでなければ 0
hsv2rgb(h,s,v) h,s,v $\in$ [0:1] 24 ビット RGB 色値
palette(z) 実数 z に割り当てられた RGB パレット色
stringcolumn(x) 整数か文字列 文字列としての x 列目の内容
timecolumn(N,"timeformat") 整数, 文字列 データ入力中の N 列目の日時データ
tm_hour(t) 秒数による時刻 時 (0..23)
tm_mday(t) 秒数による時刻 日 (1..31)
tm_min(t) 秒数による時刻 分 (0..59)
tm_mon(t) 秒数による時刻 月 (0..11)
tm_sec(t) 秒数による時刻 秒 (0..59)
tm_wday(t) 秒数による時刻 曜日 (日から土を 0..6 で)
tm_week(t) 秒数による時刻 ISO 8601 規則での週番号 (1..53)
tm_yday(t) 秒数による時刻 その年の何日目 (0..365)
time(x) 任意 現在のシステム時刻 (秒単位)
valid(x) 整数 データ中の column(x) の正当性
value("name") 文字列 名前 name の変数の現在の値
voxel(x,y,z) 実数 点 (x,y,z) を含む有効ボクセルの値


Subsections
竹野茂治@新潟工科大学
2021-06-08