В настоящее время я пытаюсь изучить схему для запуска моделирования 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)
Кто-нибудь видит, что я делаю неправильно? Я также пробовал другие решения, но, похоже, я не понимаю здесь логики...
Спасибо большое за вашу помощь!
С уважением Мэй