<jupyter_start><jupyter_text>SICP 习题 （1.39）解题总结 SICP 习题1.39沿着习题1.37， 1.38的方向继续前行，要求我们根据德国数学家J.H.Lambert的公式定义tan-cf过程，用于计算正切函数的近似值。J.H.Lambert的公式如下：$$ tan (x) = \frac {x} {1 - \frac {x^2} {3 - \frac {x^2} {5 - \frac {x^2} {...}}} } $$ 可以发现，这个和之前的无穷连分式是一样一样的，所不同的就是N是一个变量，不是固定数值。不过这个已经难不倒我们啦，可以从公式中发现,除了第一个N是x，其它的N都是x平方，D对应的数值是1,3,5，就是所有奇数，以数字n为下标的话可以通过(（n * 2）-1) 得到。最后直接定义以下过程搞定：<jupyter_code>(define (tan-cf x k)
  (cont-frac 
   (lambda (i)
     (if (= i 1) 
	 x
	 (- (* x x))))
   (lambda (i)
     (- (* i 2.0) 1))
   k))
(define (cont-frac n d k)
  (define (cont-frac-inner n d cur-k)
    (if (< cur-k k)
	(/ (n cur-k) (+ (d cur-k) (cont-frac-inner n d (+ cur-k 1))))
	(d cur-k)))
  (cont-frac-inner n d 1))
(tan-cf (/ 3.14159 4) 100)
(tan-cf (/ 3.14159 2) 100)
(tan-cf (/ 3.14159 1) 100)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.22141119221411193, 'fraction_numerical': 0.07177615571776155, 'mean_word_length': 3.4486486486486485, 'pattern_counts': {'":': 0, '<': 6, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '397319', 'license': 'MIT', 'n_tokens_mistral': 563, 'n_tokens_neox': 533, 'n_words': 80, 'path': 'cn/.ipynb_checkpoints/sicp-1-39-checkpoint.ipynb', 'repo_name': 'DamonDeng/sicp_exercise', 'size': '822'}