15.3 関数 (Functions)

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

数学ライブラリ、組み込み関数
関数 引数   戻り値 (c は複素数)
abs(x) 整数または実数   x の絶対値, | x|
abs(x) 複素数   x の長さ, $\sqrt{{{\mbox{real}(x)^{2} +
\mbox{imag}(x)^{2}}}}$
acos(x)    c cos-1x (アークコサイン)
acosh(x)    c cosh-1x (逆双曲余弦)
airy(x) 実数   実数 x に対するエアリー関数 Ai(x)
arg(x) 複素数   x の偏角, - $\pi$ $\leq$arg(x)$\leq$ $\pi$
asin(x)    c sin-1x (アークサイン)
asinh(x)    c sinh-1x (逆双曲正弦)
atan(x)    c tan-1x (アークタンジェント)
atan2(y,x) 整数または実数   tan-1(y/x) (アークタンジェント)
atanh(x)    c tanh-1x (逆双曲正接)
besj0(x) 実数   x ラジアンの J0 ベッセル関数 (0 次ベッセル関数)
besj1(x) 実数   x ラジアンの J1 ベッセル関数 (1 次ベッセル関数)
besjn(n,x) 整数, 実数   x ラジアンの Jn ベッセル関数 (n 次ベッセル関数)
besy0(x) 実数   x ラジアンの Y0 ベッセル関数 (0 次ノイマン関数)
besy1(x) 実数   x ラジアンの Y1 ベッセル関数 (1 次ノイマン関数)
besyn(n,x) 整数, 実数   x ラジアンの Yn ベッセル関数 (n 次ノイマン関数)
besi0(x) 実数   x ラジアンの I0 (0 次) 変形ベッセル関数
besi1(x) 実数   x ラジアンの I1 (1 次) 変形ベッセル関数
besin(n,x) 整数, 実数   x ラジアンの In (n 次) 変形ベッセル関数
cbrt(x) 実数   x の三乗根 (定義域、値域は共に実数に限定)
ceil(x)      $\lceil$x$\rceil$, x の実部以上の最小の整数
conj(x) 複素数 c x の複素共役
cos(x)    c x のコサイン cos x
cosh(x)    c cosh x, x ラジアンのハイパボリックコサイン
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 種完全楕円積分
erf(x)      erf(real(x)), x の 実部の誤差関数
erfc(x)      erfc(real(x)), 1.0 - (x の実部の誤差関数)
exp(x)    c 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$(x), x の実部のガンマ関数
ibeta(a,b,x) a, b > 0, x $\in$ [0 : 1]   B(a, b, x) = ${\frac{{\Gamma(a+b)}}{{\Gamma(a)\Gamma(b)}}}$$\intop_{{0}}^{{x}}$ta-1(1 - t)b-1dt, 不完全ベータ関数
inverf(x)      x の実部の逆誤差関数
igamma(a,z) 複素数, $\Re$(a) > 0 c 不完全ガンマ関数 P(a, z) = ${\frac{{1}}{{\Gamma(z)}}}$$\intop_{{0}}^{{z}}$ta-1e-tdt
imag(x) 複素数   x の虚数部分 (実数)
int(x) 実数   x の 0 に向かって丸めた整数部分
invnorm(x)      x の実部の逆正規分布関数
invibeta(a,b,p) 実数   逆 (正規化) 不完全ベータ関数
invigamma(a,p) 実数   逆 (正規化) 不完全ガンマ関数
LambertW(z,k) 複素数, 整数 c 複素 Lambert W 関数の第 k 分岐
lambertw(x) 実数   Lambert W 関数の主値 (第 0 分岐)
lgamma(x) 実数   実数 x に対する ln$\Gamma$(x) (ガンマ対数関数)
lnGamma(x) 複素数 c 複素平面全体で正当な ln$\Gamma$(x)
log(x)    c logex, x の自然対数 (底 e)
log10(x)    c log10x, x の対数 (底 10)
norm(x)      x の実部の正規分布 (ガウス分布) 関数
rand(x) 整数   開区間 (0:1) 内の疑似乱数生成器
real(x)      x の実部
round(x)      $\lfloor$x$\rceil$, x の実部に一番近い整数
sgn(x)      x > 0 なら 1, x < 0 なら -1, x = 0 なら 0 (虚部は無視)
Sign(x) 複素数 c x = 0 なら 0、それ以外は x/| x|
sin(x)    c sin x, x のサイン
sinh(x)    c sinh x, x ラジアンのハイパボリックサイン
sqrt(x)    c $\sqrt{{x}}$, x の平方根
SynchrotronF(x) 実数   F(x) = x$\intop_{{x}}^{{\infty}}$K$\scriptstyle {\frac{{5}}{{3}}}$($\nu$d$\nu$
tan(x)    c tan x, x のタンジェント
tanh(x)    c tanh x, x ラジアンのハイパボリックタンジェント
uigamma(a,x) 実数, 実数   上方不完全ガンマ関数 Q(a, x) = ${\frac{{1}}{{\Gamma(x)}}}$$\intop_{{x}}^{{\infty}}$ta-1e-tdt
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))
zeta(s) 複素数 c リーマンゼータ関数 $\zeta$(s) = $\Sigma^{{\infty}}_{{k=1}}$k-s

libcerf (利用可能な場合のみ) による特殊関数
関数                  引数   戻り値 (c は複素数)
       
cerf(z) 複素数 c 複素誤差関数 cerf (z) = ${\frac{{\sqrt{\pi}}}{{2}}}$$\int^{{z}}_{{0}}$e-t2dt
cdawson(z) 複素数 c Dawson 積分 D(z) = ${\frac{{\sqrt{\pi}}}{{2}}}$e-z2erfi(z) の複素拡張
faddeeva(z) 複素数 c スケール化複素相補誤差関数 w(z) = e-z2 erfc(- iz)
erfi(x) 実数   虚誤差関数 erf (x) = - i*erf (ix)
FresnelC(x) 実数   フレネル積分 C(x) = $\int^{{x}}_{{0}}$cos(${\frac{{\pi}}{{2}}}$t2)dt
FresnelS(x) 実数   フレネル積分 S(x) = $\int^{{x}}_{{0}}$sin(${\frac{{\pi}}{{2}}}$t2)dt
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$
VP_fwhm($\sigma$,$\gamma$) 実数   Voigt プロファイルの半値全幅 (FWHM)

Amos ライブラリ (利用可能な場合のみ) による複素特殊関数
関数                  引数   戻り値 (c は複素数)
       
Ai(z) 複素数 c 複素エアリー関数 Ai(z)
Bi(z) 複素数 c 複素エアリー関数 Bi(z)
BesselH1(nu,z) 実数, 複素数 c H(1)$\scriptstyle \nu$(z) 第 1 種ハンケル関数
BesselH2(nu,z) 実数, 複素数 c H(2)$\scriptstyle \nu$(z) 第 2 種ハンケル関数
BesselJ(nu,z) 実数, 複素数 c J$\scriptstyle \nu$(z) 第 1 種ベッセル関数
BesselY(nu,z) 実数, 複素数 c Y$\scriptstyle \nu$(z) 第 2 種ベッセル関数
BesselI(nu,z) 実数, 複素数 c I$\scriptstyle \nu$(z) 第 1 種変形ベッセル関数
BesselK(nu,z) 実数, 複素数 c K$\scriptstyle \nu$(z) 第 2 種変形ベッセル関数
expint(n,z) 整数 n $\geq$ 0, 複素数 z c En(z) = $\int_{1}^{\infty}$t-ne-zt dt, 指数積分

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

時刻関数
関数 引数 戻り値
time(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)
tm_year(t) 秒数による時刻 西暦
weekdate_iso(year,week,day) 整数 ISO 8601 規則での週曜日に対応する時刻
weekdate_cdc(year,week,day) 整数 CDC による疫学的週曜日に対応する時刻

他の gnuplot の関数
関数 引数 戻り値
column(x) 整数か文字列 データ入力中の x 列目の数値
columnhead(x) 整数 データファイルの最初の x 列目中の文字列
exists("X") 文字列 変数名 X が定義されていれば 1, そうでなければ 0
hsv2rgb(h,s,v) h,s,v $\in$ [0:1] 24 ビット RGB 色値
index(A,x) 配列, 任意 A[i] = x となる整数 i。なければ 0。
palette(z) 実数 z に割り当てられた 24 ビット RGB パレット色
rgbcolor("name") 文字列 色名か文字列表現の色の 32 ビット ARGB 値
stringcolumn(x) 整数か文字列 文字列としての x 列目の内容
valid(x) 整数 データ入力中の x 列目の正当性
value("name") 文字列 名前 name の変数の現在の値
voxel(x,y,z) 実数 点 (x,y,z) を含む有効ボクセルの値



Subsections
竹野茂治@新潟工科大学
2024-02-26