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関連のブログ記事

コメント

スポンサーリンク


このブログの人気の投稿

Ubuntu Softwareが起動しないのでいろいろと調べてみる(Ubuntu 20.04.1 LTS)

gnuplotでプロットなどの色をcolornameの指定で変更する

gnuplot : グラフにグリッド線を描く方法(set grid)

gnuplot : プロット画像のサイズ指定について(set sizeとの違い)

円の直径の2乗から円の面積を求める?