我正在为C ++中的 Newton's Method 编写一个函数 我希望能够指定一个在算法中使用的函数,但我希望它作为输入。
例如:
double newton(f,df,tolerance,initial_guess,max_iterations)
其中 f 和 df 分别是函数及其衍生。
但我该怎么做?
答案 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);
}