今日はスキームで簡単な微分関数を書きました。g(x) = (f (x+h) -f(x))/h のような関数を返すように求められました。これは関数を返すのに十分ですか、それとも値を返すだけですか?
(define (der f h)
(lambda (x)
(/ (- (f(+ x h)) (f x)) h)))
今日はスキームで簡単な微分関数を書きました。g(x) = (f (x+h) -f(x))/h のような関数を返すように求められました。これは関数を返すのに十分ですか、それとも値を返すだけですか?
(define (der f h)
(lambda (x)
(/ (- (f(+ x h)) (f x)) h)))
はい、問題のコードは関数を返しています(それlambda
が目的です)。valueを返す場合、(lambda (x)
と対応する閉じ括弧の行がありません。
また、手順は正しいですが、質問に記載されている式は正しくないことに注意してください。次のようにする必要があります。
g(x) = (f(x+h) - f(x))/h ; notice that x is the parameter to the second call to f
ちなみに、微分関数を定義どおりに使用する正しい方法は次のとおりです。
(define der-sqr (der square 1e-10)) ; create the derivative *function*
(der-sqr 10) ; apply the function
=> 20.000072709080996