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


Бесконечные произведения


Напомним основные понятия, относящиеся к бесконечным произведениям.

Определение. Если 

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

Бесконечные произведения

называют бесконечным  произведением.

Станем последовательно перемножать числа (1), составляя частичные произведения

Бесконечные произведения

Эту последовательность частичных произведений

Бесконечные произведения
 мы всегда будем сопоставлять символу (2).

Предел P частичного произведения

Бесконечные произведения
 при
Бесконечные произведения
 (конечный или бесконечный)

Бесконечные произведения

называют значением

произведения (2) и пишут:

Бесконечные произведения

Если бесконечное произведение имеет конечное значение P и притом отличное от 0, то само произведение называют сходящимся, в противном случае - расходящимся.

Достаточно одному из сомножителей произведения быть нулем, чтобы и значение всего произведения также было равно нулю. В дальнейшем этот случай будет исключен из рассмотрения, так что для нас всегда

Бесконечные произведения

4.1. Примеры некоторых замечательных бесконечных произведений

Пример 1

Бесконечные произведения

Так как частичное произведение

Бесконечные произведения

то бесконечное произведение сходится, и его значением будет

Бесконечные произведения

Проверим этот факт, для чего составим программу вычисления произведе­ния: 

Бесконечные произведения

Составим процедуру, которая с заданной точностью вычисляет это произведение и включим ее в программу. Зачем нам нужна процедура, если можно сразу составить программу?

Ответ понятен. Нам придется составлять еще много программ, в которых не только вычисляются произведения, но и выполняется ряд других задач. Изменив только одну процедуру, мы сможем использовать новое произведение для поставленных в программе задач.


Процедура

      Procedure

Multiplication(eps : real; var Mult : real);

            var

                n     : longint;

               Mult1 : real;

            begin

               n := 2; Mult1 := 1;

               repeat

                   Mult1 := Mult1*(1 - 1/sqr(n));

                   n := n + 1;

                   Mult := Mult1*(1 - 1/sqr(n))

               until abs(Mult - Mult1) < eps

            end;

Программа

Program Multiply1;


      uses WinCrt;

      var

        Mult, eps : real;

{----------------------------------------------------------------------------------------}

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

      Function

t(eps : real) : integer;

            var

               k : integer;

            begin

               k := -1;

               repeat

                   eps := eps*10;

                   k := k + 1

               until eps > 1;

               t := k

            end;

{----------------------------------------------------------------------------------------}

      Procedure Multiplication(eps : real; var Mult : real);

            var

                n     : longint;

               Mult1 : real;

            begin

               n := 2; Mult1 := 1;

               repeat

                   Mult1 := Mult1*(1 - 1/sqr(n));

                   n := n + 1;

                   Mult := Mult1*(1 - 1/sqr(n))

               until abs(Mult - Mult1) < eps

            end;

{----------------------------------------------------------------------------------------}

      begin

         write('Введите точность вычисления '); readln(eps);

         Multiplication(eps, Mult);

         writeln('Значение произведения равно ', Mult:6:t(eps));

         writeln('С точностью до ', eps:1:t(eps))

      end.

Пример 2.

4.2. Формула Валлиса (J. Wallis)

Формула Валлиса имеет для нас не только исторический интерес, но она поможет применять методику, которая будет использоваться при вычислении числа
Бесконечные произведения
 с помощью этой формулы.

Итак, формула Валлиса имеет вид:
Бесконечные произведения


или

Бесконечные произведения


Этот предел равносилен разложению числа
Бесконечные произведения
 в бесконечное произведение

Бесконечные произведения


Она же приводит к формулам

Бесконечные произведения
 
Бесконечные произведения
 или
Бесконечные произведения
.

Но надо заметить, что для вычисления числа
Бесконечные произведения
 существуют методы, гораздо быстрее ведущие к цели.

Составим процедуру, а затем и программу вычисления числа
Бесконечные произведения
 по последней формуле.

Процедура

      Procedure

Wallis(eps : real; var Mult : real);

            var

               n     : longint;



               Mult1 : real;

            begin

               n := 1; Mult := 1;

               repeat

                  Mult := Mult*(4*sqr(n)/(4*sqr(n)-1));

                  n := n + 1;

                  Mult1 := 4*sqr(n)/(4*sqr(n)-1)

               until Mult1 < eps

            end;

Следует заметить, что оценка погрешности в этой процедуре отличается от оценки погрешности в процедуре примера 1. Такая оценка вытекает из математических соображений, n-й множитель в произведении Валлиса   
Бесконечные произведения
  "быстрее" стремится к нулю, чем разность между n - 1-м произведением и n-м.





Программа

Program Problem2;

      uses WinCrt;

      var

        Mult, eps : real;

{----------------------------------------------------------------------------------------}

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

      Function

t(eps : real) : integer;

            var

               k : integer;

            begin

               k := -1;

               repeat

                   eps := eps*10;

                   k := k + 1

               until eps > 1;

               t := k

            end;

{----------------------------------------------------------------------------------------}

      Procedure Wallis(eps : real; var

Mult : real);

            var

               n     : longint;

               Mult1 : real;

            begin

               n := 1; Mult := 1;

               repeat

                  Mult := Mult*(4*sqr(n)/(4*sqr(n)-1));

                  n := n + 1;

                  Mult1 := 4*sqr(n)/(4*sqr(n)-1)

               until Mult1 < eps

            end;

{----------------------------------------------------------------------------------------}

      begin

        write('Введите точность вычисления '); readln(eps);

        Wallis(eps, Mult);

        writeln('Значение числа Пи равно ', 2*Mult:6:t(eps));

        writeln('С точностью до ', eps:1:t(eps))

      end.

4.3. Полный эллиптический интеграл 1-го рода



Для полного эллиптического интеграла 1-го рода установлена формула

Бесконечные произведения
 

где переменная
Бесконечные произведения
 определяется рекуррентным соотношением:

Бесконечные произведения
,  (0 < k < 1).

Эта формула дает разложение K(k) в бесконечное произведение

Бесконечные произведения


Процедура

      Procedure

Elliptic(k, eps : real; var Kk : real);

            var

               Kk1 : real;

            begin

               Kk1 := k;

               repeat

                  k := (1 - sqrt(1 - sqr(k)))/(1 + sqrt(1 - sqr(k)));

                  Kk1 := Kk1*(1 + k);

                  k := (1 - sqrt(1 - sqr(k)))/(1 + sqrt(1 - sqr(k)));

                  Kk := Kk1*(1 + k);

               until abs(Kk1 - Kk) < eps;

               Kk := Kk*Pi/2

            end;

Программа

 

Program Problem3;

      uses WinCrt;

      var

        Kk, k, eps : real;

{----------------------------------------------------------------------------------------}

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

      Function

t(eps : real) : integer;

            var

               k : integer;

            begin

               k := -1;

               repeat

                   eps := eps*10;

                   k := k + 1

               until eps > 1;

               t := k

            end;

{----------------------------------------------------------------------------------------}

      Procedure Elliptic(k, eps : real; var

Kk : real);

            var

               Kk1 : real;

            begin

               Kk1 := k;

               repeat

                  k := (1 - sqrt(1 - sqr(k)))/(1 + sqrt(1 - sqr(k)));

                  Kk1 := Kk1*(1 + k);

                  k := (1 - sqrt(1 - sqr(k)))/(1 + sqrt(1 - sqr(k)));

                  Kk := Kk1*(1 + k);

               until abs(Kk1 - Kk) < eps;

               Kk := Kk*Pi/2

            end;

{----------------------------------------------------------------------------------------}

      begin

        write('Введите значение k (0 < k < 1) '); readln(k);



        write('Введите точность вычисления '); readln(eps);

        Elliptic(k, eps, Kk);

        writeln('Значение интеграла равно ', Kk:6:t(eps));

        writeln('С точностью до ', eps:1:t(eps))

      end.

Задание 5

Известен предел: 
Бесконечные произведения


Теперь мы можем записать это так:
Бесконечные произведения


В частности, при
Бесконечные произведения
 придем к разложению:

Бесконечные произведения


Если вспомнить, что
Бесконечные произведения
 то это разложение можно переписать в виде

Бесконечные произведения


Эта формула впервые была предложена Ф. Виетом (F. Viet) и является вместе с формулой Валлиса примерами первых бесконечных произведений.

Используя формулу (1) составьте программу вычисления числа
Бесконечные произведения
.

 


Содержание раздела