练习 1.39

这题直接将相应的 \(N\) 函数和 \(D\) 函数给出就行了。

其中, \(N_i\) 只有当 \(i\)\(1\) 时返回 \(x\) ,其他情况下都返回 \(-(x^2)\) (因为连分式内 \(D_i\) 进行的是减法操作)。

\(D_i\) 则返回 \(i\) 所指定的位置的奇数,也即是,当 \(i\)\(1\) 时,返回第一个奇数 \(1\)\(i\)\(2\) 时,返回第二个奇数 \(3\) ,以此类推。

;;; 39-tan-cf.scm

(load "37-iter-cont-frac.scm")

(define (tan-cf x k)
    
    (define (N i)
        (if (= i 1)
            x
            (- (square x))))

    (define (D i)
        (- (* i 2) 1))

    (exact->inexact (cont-frac N D k)))

可以使用 MIT Scheme 内置的 tan 函数和 tan-cf 进行对比测试,验证 tan-cf 的正确性:

1 ]=> (load "39-tan-cf.scm")

;Loading "39-tan-cf.scm"...
;  Loading "37-iter-cont-frac.scm"... done
;... done
;Value: tan-cf

1 ]=> (tan 10)

;Value: .6483608274590866

1 ]=> (tan-cf 10 100)

;Value: .6483608274590866

1 ]=> (tan 25)

;Value: -.13352640702153587

1 ]=> (tan-cf 25 100)

;Value: -.13352640702153587

讨论

blog comments powered by Disqus