Конечная цепная дробь
а. Бесконечная цепная дробь (continued fraction) есть выражение вида
f = N₁
-------------
D₁ + N₂
-----------
D₂ + N₃
-----------
D₃ + ...
В качестве примера можно показать, что расширение бесконечной цепной дроби при всех
Ni
и
Di
, равных 1, дает
1/φ
, где
φ
— золотое сечение (описанное в разделе 1.2.2). Один из способов вычислить цепную дробь состоит в том, чтобы после заданного количества термов оборвать вычисление. Такой обрыв — так называемая конечная цепная дробь (finite continued fraction) из
k
элементов, — имеет вид
N₁
---------------
D₁ + N₂
-----------
+ Nk
-------
Dk
Предположим, что
n
и
d
— процедуры одного аргумента (номера элемента
i
), возвращающие
Ni
и
Di
элементов цепной дроби. Определите процедуру
cont-frac
так, чтобы вычисление
(cont-frac n d k)
давало значение
k
-элементной конечной цепной дроби. Проверьте свою процедуру, вычисляя приближения к
1/φ
с помощью
(cont-frac (lambda (i) 1.0)
(lambda (i) 1.0)
k)
для последовательных значений
k
. Насколько большим пришлось сделать
k
, чтобы получить приближение, верное с точностью 4 цифры после запятой?
б. Если Ваша процедура
cont-frac
порождает рекурсивный процесс, напишите вариант, который порождает итеративный процесс. Если она порождает итеративный процесс, напишите вариант, порождающий рекурсивный процесс.
Комментарии отсутствуют.