12行目で計算の幅の2ではなく,2.000001としたのは小数点以下が切り捨てられて19999となるのを防ぐためである.
数学関数を使っているので,コンパイルは gcc -o hoge func.c -lm とする.
01: #include <stdio.h> 02: #include <math.h> 03: 04: int main(void) 05: { 06: FILE *ofile; 07: double x, dx=0.001, f, g, h; 08: int i, n; 09: 10: ofile=fopen("func.txt","w"); 11: 12: n=2.000001/dx; // n:計算回数 2.000001は切り捨てを防ぐ 13: 14: for(i=0; i<=n; i++){ 15: x = -1.0+i*dx; // x=初期値+回数*ステップ幅 16: 17: f=x*x; 18: g=cos(x)*sin(x); 19: h=pow(2,x); 20: 21: fprintf(ofile,"%f\t%f\t%f\n", f, g, h); 22: } 23: 24: fclose(ofile); 25: 26: return 0; 27: }
次のような数値が記述されたファイルができあがる.
1.000000 -0.454649 0.500000 0.998001 -0.455064 0.500347 0.996004 -0.455477 0.500694 0.994009 -0.455889 0.501041 0.992016 -0.456299 0.501388 0.990025 -0.456707 0.501736 0.988036 -0.457113 0.502084 0.986049 -0.457517 0.502432 0.984064 -0.457920 0.502780 0.982081 -0.458320 0.503129 0.980100 -0.458719 0.503478 0.978121 -0.459116 0.503827 0.976144 -0.459511 0.504176 0.974169 -0.459904 0.504526 0.972196 -0.460296 0.504876 0.970225 -0.460685 0.505226 このあたりは長いので省略 0.990025 0.456707 1.993081 0.992016 0.456299 1.994463 0.994009 0.455889 1.995845 0.996004 0.455477 1.997229 0.998001 0.455064 1.998614 1.000000 0.454649 2.000000