gpt4 book ai didi

c - 使用指向函数的指针进行数值积分始终返回 0

转载 作者:行者123 更新时间:2023-11-30 16:45:50 24 4
gpt4 key购买 nike

我正在尝试使用教授给我的函数来计算多项式函数的积分(多项式例如:ax^2+bx+c)。其功能是:

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;
}

最佳答案

您需要更改两件事。首先你的多项式函数没有任何意义。您说它需要采用 ax^2+bx+c 的形式,但在您的代码中多项式是 (ax^3)/3+(bx^2)/2+c *x。你的函数应该是:

double integralPoly(double x, double a, double b, double c){
return (a*pow(x,2)) +(b*x) + c;
}

您还需要更改 printf。 %d 是整数类型说明符,需要 double,因此需要使用 %f 例如:

printf("sum = %f",sum);

现在程序的输出是:

sum = 32.666016

这对于您的参数来说是正确的。

关于c - 使用指向函数的指针进行数值积分始终返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43964825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com