【发布时间】:2019-07-28 06:32:39
【问题描述】:
我想使用“C 中的数值配方”中定义的 qtrap 函数对函数 f 进行数值积分。
double qtrap(double (*func)(double), double a, double b);
如图所示,它是双精度类型变量的一维积分。
但是我要集成的函数多了一个参数a:
double f(double x, int a)
{
return a + x * x;
}
现在我正在寻找一种方法来整合 f 以获得不同的 a 值。
到目前为止我的想法:
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' undeclared。
感谢您的任何建议。
【问题讨论】:
-
打开编译器警告并注意警告。
-
好吧,使用 -Wall 我不会收到编译器警告。
-
您的代码中有一个随机变量
x。显然编译器不知道如何处理它,但我们也不知道。 -
x 是函数 f 的积分变量。我看到编译器无法处理 x;这就是我被卡住的原因;这就是我问这个问题的原因。我希望这个问题对于人类来说是清楚的。
标签: c parameter-passing numerical-integration