0

我想知道是否有人对编写 mandelbrot 流有任何建议。我为自己编写了以下函数来提供帮助:

(define (make-complex a b) (cons a b))
(define (real-coeff c) (car c))
(define (imag-coeff c) (cdr c))
(define (c-add c d)
      (make-complex (+ (real-coeff c) (real-coeff d))
                   (+ (imag-coeff c) (imag-coeff d))))
(define (c-mult c d)
    (make-complex (- (* (real-coeff c) (real-coeff d))
                  (* (imag-coeff c) (imag-coeff d)))
               (+ (* (real-coeff c) (imag-coeff d))
                  (* (imag-coeff c) (real-coeff d)))))
(define (c-length c)
   (define (square x) (* x x))
        (sqrt (+ (square (real-coeff c))
              (square (imag-coeff c)))))

我有那个 fz(x) = x2 +z。流应返回:a、fz(a)、fz(fz(a))、fz(fz(fz(a)))。我对如何使用我编写的函数来创建具有此输出的流感到困惑。任何人都对去哪里有一些好的建议?

4

2 回答 2

3

从值开始z并使您的功能fz(x)如下:

(define (make-fz z) (lambda (x) (+ z (* 2 x))))

现在,使用 srfi-41 流库,按照您的指示定义一个流:尝试一下(使用zof 0):

> (stream->list (stream-take 10 (stream-iterate (make-fz 0) 1)))
(1 2 4 8 16 32 64 128 256 512)

注意:stream-iterate定义如下:

(define-stream (stream-iterate fz a)
  (stream-cons a (stream-iterate fz (fz a))))
于 2013-11-20T23:18:04.843 回答
1

正如 uselpa 所说,Scheme 具有内置的复数。您提到的功能提供如下:

  • make-rectangular
  • real-part
  • imag-part
  • +
  • *
  • magnitude

至于你问题的第二部分,什么是z?在不知道自己想要什么的情况下很难回答这个问题。

于 2013-11-20T19:51:07.797 回答