我想使用“C中的数字配方”中定义的qtrap函数对函数f进行数值积分。
double qtrap(double (*func)(double), double a, double b);
如图所示,它是double类型变量的1-d积分。
但是我想要集成的函数有一个额外的参数a:
double f(double x, int a)
{
return a + x * x;
}
现在我正在寻找一种方法来为不同的a值集成f。
我的想法到现在为止:
typedef double (*fctp1_t)(double); //function pointer type for 1 arg
typedef double (*fctp2_t)(double, int); //function pointer type for 2 args
int a = 10;
fctp1_t = f1d;
f1d = reduceArgument(f, a);
qtrap(f1d, 0, 1);
使用reduceArgument这样的东西:
fctp1_t reduceArgument(fctp2_t f2d, int ia)
{
return f2d(x, ia);
}
此代码导致错误:'x'未声明。
谢谢你的任何建议。
C不允许构建这样的函数。您有两种方法可以解决您的问题: