/////gradient.c /////傾きが最大となる点を検出するプログラム /////2013/12/25 by Takashi Kojima #include #include #include #define N 1000 int main(){ int i; double x[N]; double y[N]; double grad[N]; double ave_grad[N]; double max_grad, max_x; double min_grad, min_x; double abs_max_grad, abs_max_x; int data_length=0; //観測データの読み込み FILE *fp; char *filename1 = "s0.1_d0.5.dat"; fp = fopen(filename1, "r"); if( fp == NULL ){ printf("Can't open file %s\n", filename1); exit(1); } i=0; while(fscanf(fp, "%lf %lf", &x[i], &y[i]) != EOF){ data_length++; i++; } printf("Finished reaing.\n"); fclose(fp); //勾配計算とその周囲4つによる平均化 for(i=0 ; i=max_grad){ max_grad = grad[i]; max_x = x[i]; } if(grad[i]<=min_grad){ min_grad = grad[i]; min_x = x[i]; } } if( abs(max_grad) < abs(min_grad) ){ abs_max_grad = min_grad; abs_max_x = max_x; }else{ abs_max_grad = max_grad; abs_max_x = min_x; } printf("grad_max=%lf (x=%lf)\n", max_grad, max_x); printf("grad_min=%lf (x=%lf)\n", min_grad, min_x); printf("abs_grad_max=%lf (x=%lf)\n", abs_max_grad, abs_max_x); return 0; }