- not so Frequently Asked Questions - update 2005/11/19
|
|
陰関数の解法関数がy=f(x)のように明示的に表現されておらず,f(x)+g(y)=0のような 形で与えられている場合は,gnuplotで関数定義することができません.この 様な陰関数をgnuplotで表示するには,パラメータ表示するか,関数を3次元で 定義し直し,z=0面との交線を求める方法を使います. パラメータで関数を再定義できるなら,図の表示は簡単です.例えば 円の方程式 x*x+y*y=r*r はx=r*sin(t), y=r*cos(t)と表すことができますので, 次のようにして円を描くことができます. gnuplot> set parametric dummy variable is t for curves, u/v for surfaces gnuplot> set size square gnuplot> r=1 gnuplot> plot r*sin(t),r*cos(t) パラメータで表すことが難しい陰関数の場合は,まず関数を3次元曲面とし て定義します.次の例は,x^3-2xy + y^3=0 という関数です. gnuplot> f(x,y)= x**3 - 2*x*y + y**3 この曲面 f(x,y) と z=0の交線が,この関数の解となります.z=0面を3次元プロットの 底面とするために, set ticslevel 0 を与えておきます. gnuplot> set xrange [-2:2] gnuplot> set yrange [-2:2] gnuplot> set zrange [0:5] gnuplot> set ticslevel 0 gnuplot> set view 40,340 gnuplot> set isosample 100,100 gnuplot> splot f(x,y) この図の底面に描かれた曲線が,f(x,y)=0の解となります.この曲線を取り 出すために,等高線を用います.等高線データを一旦ファイルに落しておきます. gnuplot> set xrange [-2:2] gnuplot> set yrange [-2:2] gnuplot> set zrange [*:*] gnuplot> set cont base gnuplot> set cntrparam levels discrete 0,0 gnuplot> unset surface gnuplot> set surface gnuplot> set term table gnuplot> set output "cont.dat" gnuplot> splot f(x,y) 次にファイルに書き出されたデータを,いつもの要領でグラフにします. gnuplot> set xrange [-2:2] gnuplot> set yrange [-2:2] gnuplot> set size square gnuplot> plot "cont.dat" w l ファイルに書き出さない方法もあります.等高線を-0.4から0.1づつ増やして描いて いますが,それぞれの曲線が x^3-2xy + y^3=定数 の解となっています. gnuplot> set xrange [-2:2] gnuplot> set yrange [-2:2] gnuplot> set view 0,0 gnuplot> set isosample 100,100 gnuplot> set size square gnuplot> set cont base gnuplot> set cntrparam levels incre -0.4,0.1,0.4 gnuplot> unset surface gnuplot> splot f(x,y) |