« gnuplotでグラフが正しく描画されてないように思える場合 | トップページ | gnuplot フォント関係 with Linux »

2018年5月 4日 (金)

gnuplotで定義域(変域)のあるグラフの作成

定義域(変域)のあるグラフは三項演算子というものを活用して作れます。

条件 ? A : B

条件を満たすならば、Aの値を、満たさなければBの値を返すというもの。
if文みたいなものと考えれば良さげ。
 
ということで、以下、例をば。
 
201  
 

plot (x > 2) ? 8/x : 1/0

(x > 2) の範囲ならば、8/x を、そうでなければ、1/0 を描画せよ、となります。
(※ 1/0 は定義されない値。あえて言うのであれば、1/0 = 1÷0 ≒ ∞ 。なので 2/0 とかでも行けたりする。)

ちなみに、上図のものは若干プロットが欠けています。
 
201_r
 
これは、サンプル数が足りないことから来ています。
(サンプル数については、「gnuplotでグラフが正しく描画されてないように思える場合」を参照のこと。)
 
ということで、サンプル数を増やしてやれば良かとです。
 
202_
 
 
 
入れ子状態にすれば、以下のようにもできます。
 
203
 

plot (x > 2) ? ((x < 8) ? 8/x : 1/0) : 1/0


式の可読性は悪いですけどね。
参考までに。
 
 

 
 

※おまけ

1/0 は定義されない値なので、

plot 1/0

などとすると、無地のグラフが得られたりします。

 
 

〔関連ページ〕
 ・gnuplot で比例・反比例・放物線のグラフの作成 
 ・gnuplot グラフ-座標平面づくり 
 ・gnuplotでグラフが正しく描画されてないように思える場合(サンプル数の話)  

 
 
<外部サイト>
 ・三項演算子を用いた条件分岐 
 ・if文の省略形 三項演算子って何? 
 ・三項演算子?:は悪である。 
 ・三項演算子は悪か? 

 
 
 
 
 
 
 
 

« gnuplotでグラフが正しく描画されてないように思える場合 | トップページ | gnuplot フォント関係 with Linux »

gnuplot」カテゴリの記事

2021年5月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
無料ブログはココログ