Комплексная функция в схеме - PullRequest
0 голосов
/ 10 марта 2019

Я пытаюсь создать функцию, которая использует гамму и дельту для вычисления сложного квадратного корня.У меня уже определены вспомогательные функции, но я не знаю, что делать с реальной функцией, потому что гамма и дельта принимают два параметра, а у complex-sqrt только один.Может кто-нибудь помочь, пожалуйста?

enter image description here

(define (sgn b)
  (cond ((> b 1) 1)
        ((= b 0) 0)
        (else -1)))

(define (gamma a b)
  (cond ((= a 0) 0)
        ((= b 0) 0)
        (else (sqrt(/ (+ a (sqrt (+ (* a a) (* b b)))) 2)))))
(define (delta a b)
  (* (sign b) (sqrt (/ (+ (* -1 a) (sqrt (+ (* a a) (* b b)))) 2))))

(define (complex-sqrt x)
  (+ gamma delta))

1 Ответ

0 голосов
/ 10 марта 2019

Два параметра gamma и delta являются действительной и мнимой частями комплексного числа.Так что вам нужно просто разделить x на его действительные и мнимые части перед вызовом этих функций.

И в результате gamma возвращает действительную часть, а delta возвращает мнимую часть.Таким образом, вам не нужно добавлять два результата, вы используете их в качестве аргументов при создании нового комплексного числа.

(define (complex-sqrt x)
  (let ((a (real-part x))
        (b (imag-part x)))
    (make-complex (gamma a b) (delta a b))))

Замените realpart, imagpart и make-complex фактической функциейимена, которые вы определили в реализации комплексного числа из лаборатории этой недели, как указано в инструкциях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...