プログラムで計算した数学関数の値をプロットしたい。C言語の標準ライブラリには、グラフィック表示の機能がないので、計算した数値を外部ファイルに保存して、Excel 上でグラフを描画することにする。
今回保存するファイルの拡張子は csv とする。カンマ区切り形式(comma-separated values)と呼ばれるもので、1行の中での項目の区切りにコンマを記入する。
x,sin(x),cos(x)
-3.500000,0.350783,-0.936457 -3.400000,0.255541,-0.966798 ...
+3.5 の行が出力されないことがあるが、浮動小数点演算の誤差のためであるので、気にしなくてよい。→202ページの13.7.1「丸め誤差」
#ref(): File not found: "func.png" at page "プログラミング実習II知機2022/11_6_4"
#ref(): File not found: "func-xlsx.png" at page "プログラミング実習II知機2022/11_6_4"
double sin_maclaurin(int n, double x) { double sum = 0; double expx = 1; // x^i double fact = 1; // i! for (int i=1; i<=n; i++) { expx *= x; fact *= i; if (i%4==1) sum += expx/fact; if (i%4==3) sum -= expx/fact; } return sum; }
- Excel以外にも、グラフ描画に都合のよいソフトはいくつもある。自動生成にはフリーソフトの gnuplot や R のほうが便利。
- C言語プログラムに限らず、このようにCSV形式を介して別ソフトとの連携を行う機会は多い。