[ create a new paste ] login | about

Link: http://codepad.org/yDUrq4Cd    [ raw code | output | fork ]

C, pasted on Jun 13:
/* e(-x^2) の区間 -1≦x≦1 における定積分の近似値を求める */
/* 数値積分には複合中点則を使用 */
#include<stdio.h>
#include<math.h>     /* 指数関数の計算に必要 */


#define N  10   /* 区間の分割数 */
#define XMIN  -1.0   /* 区間の左端 */
#define XMAX  1.0    /* 区間の右端 */


double midpointrule(double xmin, double xmax, int n);   /* 定積分計算をする関数のプロトタイプ宣言 */

double func(double x);       /* 被積分関数を定義する部分のプロトタイプ宣言 */

main()
{
	int n = N;
	double xmin = XMIN;
	double xmax = XMAX;
	double val;
	
	val = midpointrule(xmin, xmax, n);   /* 定積分計算 */
	
	printf("e^(-x^2) の区間 -1≦x≦1 における定積分の\n");
	printf("%d 点を用いた中点則による近似値は %18.14lf です\n",n,val);

}


/* 複合中点則を利用した数値積分を行う関数 */
double midpointrule(double xmin, double xmax, int n)
{
	double dx;
	double x;
	double val = 0.0;
	int j;
	
	dx = (xmax - xmin)/((double)n);
	
	for (j = 0;j < n;j++){
		x = xmin + ((double)j + 0.5)*dx;     /* 各区間の中点を計算 */
		val += func(x);
	}
	val*= dx;
	
	return val;
}



/* 被積分関数を設定 */
double func(double x)
{
	return exp(-x*x);      /* ここに被積分関数の具体的なものが入る */
}


Output:
1
2
In function `func':
undefined reference to `exp'


Create a new paste based on this one


Comments: