Я хочу выполнить численное интегрирование функции f с помощью функции qtrap, определенной в «Численных рецептах в C».
double qtrap(double (*func)(double), double a, double b);
Как показано, это одномерное интегрирование переменной типа double.
Но функция, которую я хочу интегрировать, имеет дополнительный параметр 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» не объявлен.
Спасибо за любые предложения.
x
в вашем коде. Очевидно, что компилятор не знает, что с ним делать, но и мы тоже. - person SergeyA   schedule 06.03.2019fctp1_t = f1d;
вы пытаетесь присвоить что-то (я предположил, что это что-то определено) типу. Я не тестировал ни одного компилятора, но предположил, что любой хотя бы приличный будет жаловаться. - person pmg   schedule 06.03.2019qtrap()
на что-то вродеdouble qtrap2(double (*func)(double, int), double a, double b);
? - person pmg   schedule 06.03.2019