gnuplot / implicit / solve
陰関数の解法 関数がy=f(x)のように明示的に表現されておらず,f(x)+g(y)=0のような パラメータで関数を再定義できるなら,図の表示は簡単です.例えば 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次元曲面とし gnuplot> f(x,y)= x**3 - 2*x*y + y**3 この曲面 f(x,y) と z=0の交線が,この関数の解となります.z=0面を3次元プロットの 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づつ増やして描いて 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) ![]() |