Умножение двух комплексных чисел на схеме - PullRequest
0 голосов
/ 15 января 2019

У меня есть представление данных комплексных чисел, но я не знаю, как умножить два комплексных числа. Может быть, кто-то может мне помочь?

(define (complex-num a b) 
      (cons a b))
(define (real x) 
      (car x)) 
(define (imag x) 
      (cdr x)) 

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Давайте попробуем умножить два комплексных числа

(a + bi) * (c + di) = (a + bi) * c + (a + bi) * di
                    = ac + bci  + adi + bdii
                    = ac + bci + adi - bd     (here we use that i*i = -1)
                    = ac-bd + (bc+ad)i

Если мы поставим z1=a+bi и z2=c+di, тогда мы можем перевести это на Схему:

(define (multiply z1 z2)
  (let ([a (real z1)]
        [b (imag z1)]
        [c (real z2)]
        [d (imag z2)])
    (complex-num ..compute ac-bd..  ..compute bc+ad.. )))
0 голосов
/ 16 января 2019
(define (complex-mult a b)
  (make-rectangular (- (* (real-part a) (real-part b)) (* (imag-part a) (imag-part b)))
                    (+ (*(real-part a) (imag-part b)) (*(real-part b) (imag-part a)))))

е, г:

]=> (complex-mult 2+3i 5+2i)

 ;Value: 4+19i

]=> (complex-mult -i +i)

;Value: 1
...