我正在用 C++为牛顿法编写一个函数。
我希望能够指定要在算法中使用的函数,但我希望它作为输入。
例如:
double newton(f,df,tolerance,initial_guess,max_iterations)
其中f和df分别是函数及其导数。
但是我该怎么做呢?
我正在用 C++为牛顿法编写一个函数。
我希望能够指定要在算法中使用的函数,但我希望它作为输入。
例如:
double newton(f,df,tolerance,initial_guess,max_iterations)
其中f和df分别是函数及其导数。
但是我该怎么做呢?
您可以使用模板执行此操作:
#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
作为替代方案,您可以在 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);
}
您可以将函数指针声明为输入:这是一个基本示例:
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。你会用你的函数和它的导数做同样的事情。