Решение упражнения 1.39 из SICP

25 October, 2007 (21:15) | Решения упражнений

Еще одно простое упражнение, сроди упражнению 1.38.

Просто приведу определение процедуры для вычисления тангенса по формуле Ламберта:

(define (tan-cf x k)
  (cont-frac (lambda (i) (if (= i 1) x (- (* x x))))
             (lambda (i) (- (* 2 i) 1))
             k))

Comments

Comment from Spok
Date: November 26, 2013, 3:44 pm

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

(lambda (i) (+ i (- i 1)))

По сути выдает тот же результат.

Comment from alexk
Date: July 31, 2014, 7:45 pm

Еще числитель и знаменатель правой части можно домножить на -x, тогда в числителях цепной дроби всегда будет x^2.

(define (tan-cf x k)
  (* (- (/ 1.0 x)) (cont-frac (lambda (i) (- (square x))) (lambda (i) (- (* i 2) 1)) k))
  )

Write a comment