Паскаль. Основы программирования



              

Глава Числовые последовательности - часть 7


Разделим  n-й  член  на (n-1)-й, получим:

Отсюда легко получить рекуррентную формулу:

Одной формулы недостаточно, еще необходимо задать некоторые начальные значения, первые члены последовательности, желательно нулевой член.  

Получаем:

 и

 Итак, если последовательность задана формулой n-го члена,  тогда, чтобы задать ее рекуррентной формулой, необходимо  найти частное от деления n-го члена на (n - 1)-й, а затем  умножить (n - 1)-й член на частное. Это произведение будет  равно n-му члену и мы получаем нужную формулу. К ней необходимо добавить значение некоторых первых членов и, таким образом, последовательность будет задана. Коротко этот процесс можно записать так:

После выполнения программы вы, конечно, обратили внимание на то, что независимо от того какую точность вы указываете значение результата будут выдаваться с 12-ю знаками после запятой (такой формат задан в программе). И нам трудно определить сколько десятичных знаков являются верными.

Было бы очень удобно, указав точность, получать в результате только требуемое количество десятичных знаков, например, указав 0.001, мы получали бы в результате 3 знака после запятой и не более.

Это можно сделать с помощью следующей функции:

{ Функция вычисления порядка - кол-во знаков после запятой }

   Function t(eps : real) : integer;

         var

            k : integer;

         begin

            k := -1;

            repeat

                eps := eps*10;

                 k := k + 1

            until eps > 1;

            t := k

         end;

Ее работа проста. Введенное значение точности (eps) последовательно умножается на 10 до тех пор, пока ее значение не станет больше 1.

Например, для значения eps = 0.001 процесс определения порядка будет проходить так:

 

Переменная k подсчитывает число выполняемых циклов. Но число циклов будет на 1 больше, чем количество знаков после запятой. Почему? Да потому, что цикл выполняется до тех пор пока, пока значение eps станет больше 1. Это сделано из тех соображений, что значение eps никогда не станет точно равно 1, ибо для этой переменной установлен вещественный тип real, а это значит, что eps не будет равно целому числу, хотя в примере кажется, что

 но это не так.


Содержание  Назад  Вперед