Степенныe ряды представленные в виде бесконечных потоков
В разделе 2.5.3 мы увидели, как реализовать систему арифметики многочленов, используя представление многочленов в виде списка термов. Подобным же образом можно работать со степенными рядами (power series), например
представленными в виде бесконечных потоков. Будем представлять последовательность
a₀ + a₁x + a₂x² + a₃x³ + ···
как поток, элементами которого являются коэффициенты
a₀, a₁, a₂, a₃, ...
.
а. Интеграл последовательности
a₀ + a₁x + a₂x² + a₃x³ + ···
есть последовательность
где
c
— произвольная константа. Определите процедуру
integrate-series
, которая на входе принимает поток
a₀, a₁, a₂, ...
, представляющую степенной ряд, и возвращает поток
a₀, (1/2)a₁, (1/3)a₂, ...
коэффициентов при неконстантных членах интеграла последовательности. (Поскольку в результате отсутствует постоянный член, он не представляет собой степенной ряд; при использовании
integrate-series
мы через
cons
будем присоединять к началу соответствующую константу.)
б. Функция
x → eˣ
равна своей собственной производной. Отсюда следует, что
eˣ
и интеграл
eˣ
суть одна и та же последовательность, с точностью до постоянного члена, который равен
e⁰ = 1
. Соответственно, можно породить последовательность для
eˣ
через
(define exp-series
(cons-stream 1 (integrate-series exp-series)))
Покажите, как породить последовательности для синуса и косинуса, опираясь на то, что производная синуса равна косинусу, а производная косинуса равна минус синусу:
(define cosine-series
(cons-stream 1 <??>))
(define sine-series
(cons-stream 0 <??>))
Комментарии отсутствуют.