Yamamoto's Laboratory

プログラム例

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


no counter