0
我想用我的教授给出的函数来计算多项式函数(多项式如:ax^2 + bx + c)的积分。功能是:使用指向函数的指针的数值积分总是返回0
double numbericalIntegration(double a ,double b ,double(*func)(double)){
double delta = (b - a)/32;
double sum=0, x;
for(x= a+0.5*delta; x<b ; x+=delta)
{
sum+=(*func)(x);
}
return sum*delta;
}
我改变了很多,为了整合多项式函数。但我得到了答案0.为什么呢?如果有人试图纠正我的工作,我会很感激。我的代码是:
double integralPoly(double x, double a, double b, double c){
return (a*pow(x,3))/3 +(b*pow(x,2))/2 + (c*x);
}
double numbericalIntegration(double a ,double b ,double(*func)(double,double,double,double), double firstNum, double secondNum, double thirdNum){
double delta = (b - a)/32;
double sum=0, x;
for(x= a+0.5*delta; x<b ; x+=delta)
{
sum+=(*func)(x, firstNum, secondNum, thirdNum);
}
return sum*delta;
}
int main()
{
double (*func)(double,double,double,double);
func = integralPoly;
double sum = numbericalIntegration(2,4,func,1,1,4);
printf("sum = %d",sum);
return 0;
}
您尝试打印'double',其格式为'%d',用于'int'。你需要'%e','%f'或'%g'中的一个,你也应该在数字后面打印一个换行符'\ n'。打开您的编译器警告,以了解这种格式不匹配。 –
你知道这些数字的预期输出是什么? – Nebeski