数値積分

Java で、積分を数値的に計算してみました。

数式で積分を計算するのではなく、数値的に計算したものです。

区間を区切って区間と値を掛け合わせ、全部足してやります。


    public double integral(double start, double end)
    {
	double sum=0;
	double step=.01;
	for(double x=start;x<end;x+=step)
	    {
		sum+=g(x)*step;
	    }
	return sum;
    }

数値積分をとる方法のひとつに、シンプソンの公式というのがあります。

ラグランジェ補間の多項式として近似的に計算するものです。

多項式として扱い、区間を等分に区切って積分します。


    public double simpson(double start,double end,int n)
    {
	double sum=0;
	double h=(end-start)/(2.0*n);
	for(int i=0;i<=2*n;i++)
	    {
		double f=g(start+i*h);
		if(i==0 || i==2*n)
		    sum+=f;
		else if(i%2==1)
		    sum+=4.0*f;
		else
		    sum+=2.0*f;
	    }
	sum*=h/3.0;
	return sum;
    }
inserted by FC2 system