Конспект лекций по программированию для начинающих. Гладков В.П. - 111 стр.

UptoLike

Составители: 

113
10.7.2. Получение рекуррентных формул для последовательностей
Довольно часто в практике программирования возникают задачи вычисления
значений различных конечных сумм: полиномов, отрезков степенных рядов,
коэффициенты которых заданы явными выражениями в зависимости от номера
члена, и т.п.
Если формула общего члена последовательности содержит мультипликативные
операции, то для того, чтобы получить формулу, по которой следующий член
последовательности вычисляется на
основе предыдущего, нужно найти отношение
двух соседних членов последовательности. Рассмотрим пример.
Пример 10.33. Вычислить значение многочлена (отрезка степенного ряда для
e
x
).
y =
x
i!
= 1+x+
xx
n
i
i=0
n
2n
++
12 12
...
...
,
здесь x и n - заданные числа.
Решение. Обозначим общий член ряда через u
i
, так что
y = u где u =
x
i!
i
i=0
n
i
i
,.
Найдем отношение
(
)
u
u
=
xi-1
i! x
=
x
i
отсюда u = u
x
i
i
i-1
i
i-1
ii-1
!
,.
Таким образом, зная член u
i-1
, можно вычислить член u
i
, выполнив всего две
операции. Получаем фрагмент 30 программы.
{ фрагмент 30 }
y:=0; {начальное значение суммы }
u:=1; {первое слагаемое определим, поставив i=0 в формулу }
i:=1; {вычисления начинаются с первого члена ряда}
while i<=n do {цикл, пока не получено n членов ряда }
begin y:=y+u; {добавить очередной член к сумме }
u:=u*x/i; {вычислить следующий член на основе предыдущего }
i:=i+1 {изменить номер члена ряда }
end;
Пример 10.34. Вычислить значение многочлена (отрезка степенного ряда для
e
x
) с точностью до ε.
y =
x
i!
= 1+x+
x
+...,
i
i=0
2
12
здесь x и ε - заданные числа.
Решение. Вычислить сумму с точностью до ε, значит, продолжать
суммирование очередного слагаемого до тех пор, пока оно больше ε. Поскольку
заранее неизвестно, сколько раз выполняется тело цикла, то в данном случае имеем
итерационный цикл. Используя результаты предыдущего примера, получаем
фрагмент 31.
{ фрагмент 31 }
read(x,eps);
y:=0;
u:=1;
                                           113

       10.7.2. Получение рекуррентных формул для последовательностей
     Довольно часто в практике программирования возникают задачи вычисления
значений различных конечных сумм: полиномов, отрезков степенных рядов,
коэффициенты которых заданы явными выражениями в зависимости от номера
члена, и т.п.
     Если формула общего члена последовательности содержит мультипликативные
операции, то для того, чтобы получить формулу, по которой следующий член
последовательности вычисляется на основе предыдущего, нужно найти отношение
двух соседних членов последовательности. Рассмотрим пример.
     Пример 10.33. Вычислить значение многочлена (отрезка степенного ряда для
 x
e ).
          n
             xi           x2                xn
   y =   ∑
         i=0 i!
                = 1+ x +
                         1⋅ 2
                              +... +
                                     1 ⋅ 2 ⋅ ... ⋅ n
                                                     , здесь x и n - заданные числа.
    Решение. Обозначим общий член ряда через ui, так что
            n
                               xi
     y = ∑ u i , где u i =        .
           i=0                 i!
    Найдем отношение
      ui       x i ⋅ (i -1)!   x                        x
           =                 = , отсюда u i = u i-1 ⋅ .
     u i-1       i! ⋅ x i-1
                               i                        i
    Таким образом, зная член ui-1, можно вычислить член ui, выполнив всего две
операции. Получаем фрагмент 30 программы.
    { фрагмент 30 }
    y:=0;                        {начальное значение суммы }
    u:=1;                        {первое слагаемое определим, поставив i=0 в формулу }
    i:=1;                        {вычисления начинаются с первого члена ряда}
    while i<=n do {цикл, пока не получено n членов ряда }
    begin       y:=y+u;          {добавить очередной член к сумме }
                u:=u*x/i;        {вычислить следующий член на основе предыдущего }
                i:=i+1           {изменить номер члена ряда }
    end;
    Пример 10.34. Вычислить значение многочлена (отрезка степенного ряда для
 x
e ) с точностью до ε.
               xi             x2
     y = ∑           = 1+ x +       +..., здесь x и ε - заданные числа.
           i=0 i!             1⋅ 2
    Решение. Вычислить сумму с точностью до ε, значит, продолжать
суммирование очередного слагаемого до тех пор, пока оно больше ε. Поскольку
заранее неизвестно, сколько раз выполняется тело цикла, то в данном случае имеем
итерационный цикл. Используя результаты предыдущего примера, получаем
фрагмент 31.
    { фрагмент 31 }
    read(x,eps);
    y:=0;
    u:=1;