- not so Frequently Asked Questions - update 2004/9/5
|
|
not so FAQ |
媒介変数表示のあれこれ媒介変数表示について.gnuplotで2次元関数を表示するときは,y=f(x)という形でy座標を表しますが, 媒介変数tを用いて. x = f(t) y = g(t) のように媒介変数表示することもできます.この形式を用いることで,複雑 な関数をgnuplotに表示させることが可能になります.なお,2つの変数 u,vを用いて3 次元の曲面を表現する方法は 球面調和関数の項 で 説明しています. 媒介変数を用いてグラフを描くには,まず set parametric を用 いて,関数が媒介変数表示されていることを明示します. plot に続けて,x座標となる関数f(t)とy座標のg(t)を, plot f(t),g(t) のように与えます. 垂直線の描き方.最も単純かつy=f(x)という関数型で表現できないのが,x=const.という垂直 の線です.この縦線は媒介変数tを用いると, x=const y=t と書き,tを適当な範囲で変化させた場合に相当します.tの 範囲は set trange で設定できます. gnuplot> set parametric dummy variable is t for curves, u/v for surfaces gnuplot> const=3 gnuplot> set trange [1:4] gnuplot> set xrange [0:5] gnuplot> set yrange [0:5] gnuplot> plot const,t この例ではx=3の所に垂直線を描いています. set trange [1:4] としていますので,線分のy座標は1から4までとなっています.もし trangeを設定しないなら,グラフの表示領域一杯に線が引かれま す. 円,正多角形の描き方.円の媒介変数表示は, x=cos(t) y=sin(t) で与えられ,tを0から2πまで変化させれば円が描けます.縦横比は, 綺麗な円になるように,固定しています.tの範囲は, plotコマンドのオプションで与えています. gnuplot> set parametric dummy variable is t for curves, u/v for surfaces gnuplot> set size square gnuplot> set xrange [-1:1] gnuplot> set yrange [-1:1] gnuplot> plot [0:2*pi] cos(t),sin(t) 上の図では,変数tは連続的に変化しているように見えますが,実際 にはtはある頻度で変化し,その変化の程度は set samples で決まります.defaultは100ですが, set samples 8 とす れば,gnuplotは0から2πの範囲で8つのtを発生してグラフを表示 し,結果として円は正七角形になります.つまり,正N角形を描きたければ, set samples N+1とすれば良いことになります. 2次元関数の媒介変数表示は極座標で表示された 関数を表示するのに適しています.2次元極座標では変数として半径 rと偏角thetaが用いられますが,このthetaにパラ メータtを使います.半径rは角度の関数とし,r(t) とtを用いると,任意の(x,y)座標は,次式の関係から計算できます. x=r(t)*cos(t) y=r(t)*sin(t) 円はr(t)=const.の特殊な例です.円の半径をtに比例するように変 化させれば,渦巻になりますね. gnuplot> set xrange [-10*pi:10*pi] gnuplot> set yrange [-10*pi:10*pi] gnuplot> plot [0:10*pi] t*cos(t),t*sin(t) 以下の例はr(t)=const*(1+cos(t))として描かれるCardioidです. gnuplot> set parametric dummy variable is t for curves, u/v for surfaces gnuplot> r(t) = 1+cos(t) gnuplot> plot [0:2*pi] r(t)*cos(t),r(t)*sin(t) X軸とY軸を入れ換える.関数表示は普通 y=f(x) と書かれますが,媒介変数を用いると x=f(y)のグ ラフを表示することができます.y=tと考え,xを媒介変数tの関数 f(t) で表現します. gnuplot> set parametric dummy variable is t for curves, u/v for surfaces gnuplot> c=2*pi gnuplot> set size square gnuplot> set trange [-c:c] gnuplot> set xrange [-c:c] gnuplot> set yrange [-c:c] gnuplot> plot c*sin(t),t with lines, t,c*cos(t) with impulses 2つのグラフを重ねて表示しています.一つは y=2pi*cos(x)で,緑の縞模様で 表示しました.もう一つは x=f(t)=2pi*sin(y)で赤の実線です. with impulse は,グラフ上の点からY=0の軸に垂直に足を降ろし ます.ここの例で最初の赤の実線 x=2pi*sin(y) に対して with impulses を使っても,やはり垂直線(縦縞)になります. |