私は現在、FDTD シミュレーションを実行するためのスキームを学習しようとしていますが、ガウス関数を 2 次元で構築するのに問題があります。
フォーラムで、1D のこの可能性を見つけました。
(define ( (gaussx sigma) x)
(exp (- (/ (vector3-dot x x) (* 2 sigma sigma)))))
カリー化を正しく理解していれば、次と同等です。
(define (gauss sigma)
(lambda(x)
(exp (- (/ (vector3-dot x x) (* 2 sigma sigma))))))
関数を x 方向と y 方向の両方に沿ってガウスにしたいのですが、これが機能しない理由がわかりません。
(define (gauss sigma)
(lambda(x)
(lambda(y)
(exp (- (/ (+ (vector3-dot y y) (vector3-dot x x)) (* 2 sigma sigma))))
電話すると
(gauss 1)
次のメッセージが表示されます。
ERROR: Wrong type (expecting real number): # <procedure> #f (y)
誰かが私が間違っていることを見ていますか? 他のソリューションも試しましたが、ここでロジックが得られないようです...
助けてくれてどうもありがとう!
よろしくメイ