1

我必须编写一个程序,将函数传递给另一个函数e^(-x)e^(-x^2)称为calculateIntegral(),然后计算函数的积分。

限制:

  • calculateIntegral()是将用于计算两者积分的e^(-x)函数e^(-x^2)
  • 我只能将传递的函数、a边界b和区间数作为函数的参数calculateIntegral()

我曾考虑过更改x为,例如,-x在函数外部并将其分配给另一个变量以计算 in e^(x),但随后我必须将其作为另一个参数包含在calculateIntegral().

有没有办法改变原来的e^(x),所以当它被传递到时calculateIntegral()e^(-x)剩下的函数只需将边界插入到该方程中进行计算?

4

1 回答 1

3

您想要的是对被积函数进行参数化,因此您希望能够将f必须积分的函数作为参数传递。在 C 中,这可以通过函数指针来完成:

// IntegrandT now is the type of a pointer to a function taking a double and
// returning a double
typedef double (*IntegrandT)(double);

// The integration function takes the bound and the integrand function
double f(double min, double max, IntegrandT integrand)
{
    // here integrand will be called as if it were a "normal" function
}

// Your example functions
double minusExp(double x)
{
    return exp(-x);
}

double unitaryGaussian(double x)
{
    return exp(-x*x);
}

// now you can do
double res=f(-10, 10, minusExp);
double res2=f(-10, 10, unitaryGaussian);

有关函数指针的更多详细信息,请查看您的 C 手册。

于 2014-03-05T01:18:04.193 回答