gnuplotで何らかの計算をするとき、その結果に浮動小数点を期待する場合は注意が必要

gnuplotでの計算

 gnuplotで以下のような計算をするとします。
1/5
この答えは"0.2"となるはずです。しかし実際にgnuplotで以下のように計算すると
gnuplot> print 1/5
このときの出力は"0"となってしまいます。

整数で計算すると結果も整数で返される

 gnuplotでは計算で整数のみを用いた場合は、その結果は整数で返されます。なので、結果が浮動小数点で表される数になる場合、小数点以下は切り捨てられて整数部分だけ返ってくることになります。

浮動小数点となる結果が返ってくるようにするには

 計算結果で浮動小数点となる値が返ってくるようにするには、計算式で用いる数値を浮動小数点のものを用います。例えば
gnuplot> print 1.0/5.0
とすれば"0.2"という結果が返ってきます。また省略して
gnuplot>print 1./5.
とも書くことができます。


まとめ

 計算するとき以上のことを失念していると、おかしな結果のままグラフが出来たりしてしまいます。上の例のように結果が"0"となってしまうと間違いに気が付きやすいですが、例えば"3.2"という値が"3"となってしまっていると正解に近い値が返ってくるため間違いに気が付きにくいでしょう。
 表計算ソフトや電卓ソフトを使うときはこのようなことは意識しないで済むことが多いですが、gnuplotはプログラミング言語寄りなので使う際はそのへんしっかり意識して使う必要があります。


追記 2019年5月9日

 データファイル内の数値については、値が整数で記述してあっても浮動小数点として扱われるようです。ドキュメントの方がいまひとつ読み切れていないのですが、簡単に試した限りでは整数値で記述されているデータファイルで"using 1:($2/$3)"のようなプロットをしても浮動小数点とした計算がされました。


gnuplot関連のブログ記事

コメント

スポンサーリンク


このブログの人気の投稿

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

catコマンドの出力を行番号付きにするためのコマンドラインオプション(-n, -b)

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

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

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