У меня есть метод вычисления интеграла функции с использованием правила трапеции. Он отлично работает:
double trap_method(double a, double b, double n){
int i = 1; double area = 0; double h = (b-a)/(n-1);
double x = a+h;
while(i <= n-2){
area = area + exp(x)*h;
x = x+h;
i++;
}
area = area + (exp(a) + exp(b)) * h/2;
return area;
}
Однако, как вы можете видеть, он работает только для e x или любого другого кода, который вы в нем жестко закодировали.
Мне было интересно, как я могу добавить параметр к trap_method
так, чтобы я мог просто изменить выражение, которое я хочу интегрировать, во все, что я хочу каждый раз. Что-то вроде:
double trap_method(double a, double b, double n, function f){
int i = 1; double area = 0; double h = (b-a)/(n-1);
double x = a+h;
while(i <= n-2){
area = area + f(x)*h;
x = x+h;
i++;
}
area = area + (f(a) + f(b)) * h/2;
return area;
}