【发布时间】:2020-05-07 00:58:15
【问题描述】:
我有一种使用梯形法则计算函数积分的方法。它工作正常:
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;
}
但是,如您所见,它仅适用于 ex 或您硬编码到其中的任何内容。
我想知道如何向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;
}
【问题讨论】:
-
请参阅Pointers to functions,除非您在某处输入了
function,否则您所写的内容并未提供所需的语法。 (但是是的,你可以做你想做的事)另见Function pointer as parameter -
看看std::function,它可以很高兴地接受一个函数指针或一个lambda。
-
如果你真的很懒,把
function改成auto。
标签: c++ numerical-methods generic-programming