我正在制作一个程序,该程序针对不同的幂 n 值和常数 a 找到函数的积分。我的程序似乎工作正常,但我的结果中有一个小的舍入错误,我不知道为什么。我知道我有一个错误,因为我的一个朋友也在制作相同的程序,他的结果与我的略有不同,而且他绝对是正确的,因为在计算器上进行积分可以得到更接近他的值。下面是我的结果和他的 a=2 和 n=1。
他的结果:0.189070
我的结果:0.189053
我尝试了几乎所有我能想到的东西,但仍然无法弄清楚我从哪里得到错误,任何帮助指出我是个白痴的地方将不胜感激!:p
我的程序:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#define debug 0
#define N (double)10000
double Integrand(double x, int a, int n);
double Integral(double *x, double dx, int a, int n);
int main (int argc, char* argv[])
{
int j,a,n=0,count=0,size=(int)N;
double dx=1/N, x[size];
sscanf(argv[1], "%d", &a);
for(j=0;j<N;j++) {
x[j]=(double)(j)*dx;
}
for(n=1;n<=10;n++) {
printf("n is %d integral is %lf\n",n,Integral(x,dx,a,n));
}
return(EXIT_SUCCESS);
}
double Integral(double *x, double dx, int a, int n)
{
int i;
double result=0;
for(i=0;i<N;i++) {
result +=(double)((Integrand((double)x[i],a,n))*dx);
}
return(result);
}
double Integrand(double x, int a, int n)
{
double result;
result=(double)(((pow(x,(double)n))/(x+(double)a)));
return(result);
}