Я делаю программу, которая находит интеграл функции для разных значений степени n и константы a. моя программа, кажется, работает правильно, но я получаю небольшую ошибку округления в своих результатах, и я не могу понять, почему. я знаю, что у меня есть ошибка, так как мой друг также делает ту же программу, и его результаты немного отличаются от моих, и он определенно правильный, так как выполнение интегрирования на калькуляторе дает значения, намного более близкие к его. ниже мои результаты и его результаты для a = 2 и n = 1.
Его результат: 0,189070
мой результат: 0,189053
я пытался пройти и бросить почти все, что я могу придумать, но все еще не могу понять, откуда я получаю свою ошибку, любая помощь в указании того, где я идиот, будет очень признательна! :п
Моя программа:
#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);
}