Конечная цепная дробь

а. Бесконечная цепная дробь (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 порождает рекурсивный процесс, напишите вариант, который порождает итеративный процесс. Если она порождает итеративный процесс, напишите вариант, порождающий рекурсивный процесс.


Комментарии отсутствуют.

Необходима авторизация

Вы должны авторизоваться для создания комментария.

Вход