函数作为C ++中的输入

时间:2013-10-10 00:56:25

标签: c++ algorithm numerical-methods numerical-analysis newtons-method

我正在为C ++中的 Newton's Method 编写一个函数 我希望能够指定一个在算法中使用的函数,但我希望它作为输入。

例如:

double newton(f,df,tolerance,initial_guess,max_iterations)

其中 f df 分别是函数及其衍生

但我该怎么做?

3 个答案:

答案 0 :(得分:1)

您可以使用模板执行此操作:

#include <math.h>
#include <stdio.h>

template<class F>
void foo(F f, double x) {
  printf("f(0) = %f\n", f(x));
}

int main() {
  foo(sinf, 0);
  foo(cosf, 0);
}

输出:

f(0) = 0.000000
f(0) = 1.000000

答案 1 :(得分:0)

您可以将函数指针声明为输入:这是一个基本示例:

void printNumber (int input) {
    cout << "number entered: " << input << endl;
}

void test (void (*func)(int), int input) {
    func(input);
}

int main (void) {
    test (printNumber, 5);
    return 0;
}

测试中的第一个参数说:取一个名为func的函数,它有一个int作为输入,并返回void。你会对你的功能及其衍生物做同样的事情。

答案 2 :(得分:0)

作为替代方案,您可以在C ++ 11中编写。

(从@ Anycom的代码修改,^ _ ^)

#include <math.h>
#include <stdio.h>
#include <functional>


void foo(std::function<double(double)> fun, double x) {
  printf("f(0) = %f\n", fun(x));
}

int main() {
  foo(sinf, 0);
  foo(cosf, 0);
}