1

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

例如:

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

其中fdf分别是函数及其导数

但是我该怎么做呢?

4

3 回答 3

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
于 2013-10-10T01:07:26.080 回答
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);
}
于 2013-10-10T01:28:54.250 回答
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;
}

test 中的第一个参数说:取一个名为 func 的函数,它有一个 int 作为输入,并返回 void。你会用你的函数和它的导数做同样的事情。

于 2013-10-10T01:07:42.137 回答