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

関数ポインターを入力として宣言します。基本的な例を次に示します。

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 の最初のパラメーターは次のように述べています。入力として int を持ち、void を返す func という名前の関数を取得します。関数とその導関数についても同じことを行います。

于 2013-10-10T01:07:42.137 に答える