gnuplot : ユーザー関数について
gnuplotで自分で定義出来るユーザー関数について
gnuplotでは用意されている関数(sin(x)、exp(x)などなど)の他に自分で定義出来るユーザー関数を使用することが出来ます。簡単なユーザー関数の定義は次のようになります。
f(x) = a*sin(x)
このユーザー関数では変数aを用いているので、プロットするにはあらかじめaを変数として宣言しておく必要があります。宣言せずに関数をプロットしようとすると以下のようにエラーとなります。
undefined variable: a
ユーザー関数定義の書式
ユーザー関数を定義するときの書式は例えば次のようになります。関数名(変数1, 変数2, 変数3...) = 変数1 + 変数2 * 変数3 + ...
変数はx, yや自分で宣言する変数などになります。
ユーザー関数のプロット
定義した関数をプロットするときは(例:ユーザー関数f(x)をプロット)plot f(x)
とします。
注意点としては、ユーザー関数の括弧を省略して"plot f"と記述してしまうとユーザー関数f(x)はプロットされません。これは何故かと言うと、"plot f"とした場合はユーザー関数f(x)ではなく、変数fとして扱われるためです。紛らわしいですがplotなどのコマンドにユーザー関数として認識させるには明確に関数として記述必要があります。
文字列関数として定義
ユーザー関数は数式に用いるもの以外に、文字列を生成するものも定義することが出来ます。例えば以下のようにファイル名を生成する文字列関数を作ることも出来るわけです。
name(n) = sprintf("test%03.0f.dat",n)
ユーザー関数ではいくつまで変数を使用出来る?
ユーザー関数で使用出来る変数の数には制限があって12個までとなっています。例えば以下の関数は変数が12個なので大丈夫ですが、
f(a,b,c,d,e,f,g,h,i,j,k,l) = a+b+c+d+e+f+g+h+i+j+k+l
次の関数は変数が13個なのでエラーとなるため無効とされます。
f(a,b,c,d,e,f,g,h,i,j,k,l,m) = a+b+c+d+e+f+g+h+i+j+k+l+m
function contains too many parameters
変数の数を分かりやすいように書くと次のようになります。a1〜a12までの変数12個なら大丈夫ですが、a1〜a13までの変数13個ならエラーとなって無効とされます。
gx(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) = b
gx(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) = b
function contains too many parameters
gnuplot関連のブログ記事
コメント
コメントを投稿