Файл: ИНДИВИД ЗАДАНИЕ ЭКОНОМИСТЫ _Методичка.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 10.07.2024

Просмотров: 137

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

здесь aiэлемент ряда (слагаемое с номером i), k- соответствует номеру слагаемого.

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

a1 =

(− 1)1

= - 1 .

1 !

 

 

На его основе, применяя полученную рекуррентную формулу можно найти все остальные сла-

гаемые в сумме:

 

 

 

 

 

(-1)

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

(−1)

 

 

 

a

 

=

 

(-1)

× a

=

1

a

 

=

× a

 

= -

 

a

 

=

(-1)

× a

 

=

1

 

a

 

=

× a

 

= ...

 

 

 

2 ,

 

 

 

6 ,

 

 

n-1

 

n-2

 

2

 

2

1

 

 

3

 

3

 

2

 

 

4

 

4

 

3

 

24

 

 

n -1

 

an

=

(-1)

× an -1

= ....

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Полученный принцип расчета суммы легко реализовать в виде блок схемы для последующей реализации на любом языке программирования, включая и алгоритмический язык Паскаль. Для ре- шения задачи понадобятся некоторые переменные. Во-первых, переменная, в которой будет поме- щено данное значение целого числа n, введем переменную с именем n. целого типа, чтобы избежать путаницы. Во вторых, потребуется вещественная переменная для накопления суммы обозначим ее, например, через S. В третьих, введем переменную i целого типа, в качестве счетчика слагаемых, она будет играть вспомогательную роль при организации вычислений с использованием оператора цик- ла.

В четвертых, потребуется некоторая переменная для расчета слагаемого. Поскольку в большин- стве алгоритмических языков допускается рекурсивное обращение к переменным, при котором раз- решается для расчета переменной в выражении использовать имя самой переменной, необходимости ввода массива значений для слагаемого нет. После расчета слагаемого его значение необходимо со- хранять только до момента расчета следующего. Поэтому можно использовать переменную только одну, причем простого вещественного типа. Обозначим эту переменную, например, через а.. Тогда, для расчета на основе рекуррентной формулы, можно использовать выражение вида:

а= -1/i*a.

Поскольку при расчете очередного значения этой переменной программа будет обращаться к преды- дущему ее значению.

ЗАМЕЧАНИЕ. Следует отметить, что в случае если значение элементов ряда (слагаемых) бу- дут использоваться в дальнейших вычислениях и их необходимо сохранить, переменную, отве- чающую за слагаемое, следует описывать как структурированную переменную типа массив.

Организовав повторные вычисления слагаемого за счет изменения дополнительной переменной i, которая обеспечивает переход от текущего слагаемого к последующему, набираем сумму и выводим ее на экран. В данном случае, поскольку число шагов, которые необходимо будет выполнить для расчета суммы известно, так как число слагаемых (а соответственно и число шагов) задается опреде- ленным числом n, для организации цикла можно использовать оператор цикла с параметром, где в качестве параметра цикла и будет использована переменная i.

Итак, блок-схема алгоритма расчета суммы имеет вид:

- 22 -


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

Во-первых, все переменные должны быть описаны. Поэтому в разделе описаний переменных введем переменные а для расчета слагаемого, и s для расчета суммы, вещественного типа и две переменные i- в качестве параметра цикла, n в качестве числа слагаемых целого типа.

Во-вторых, поскольку число шагов, которые необходимо будет выполнить для расчета суммы известно, так как число слагаемых (а соответственно и число шагов) задается определенным чис-

лом n, для организации цикла можно использовать оператор цикла с параметром. Однако следует помнить, что в теле цикла с параметром должен быть использован только один оператор языка Паскаль и поэтому нам придется использовать составной оператор.

В-третьих, перед использованием оператора цикла необходимо будет приписать всем перемен- ным, участвующим в циклических вычислениях некие начальные значения. Переменная а (сла- гаемое) до начала цикла должна иметь значение, соответствующее первому слагаемому суммы, то есть ей необходимо присвоить значение равное -1. Это значение сразу же можно добавить в сумму, для этого переменной S, перед началом цикла следует присвоить значение равное перво- му слагаемому, то есть а.

В-четвертых, поскольку первое слагаемое в сумме уже учтено, при организации цикла перебор параметров цикла (переменная i) следует начинать не с 1, а с 2 до n включительно.

С учетом этих особенностей реализация алгоритма на языке Паскаль выглядит так:

Program TASK (input, output);

{Заголовок программы}

Var a,s: real; i, n: integer;

{Описание переменных}

Begin

{Начало программы}

Clrscr:

{Процедура очистки экрана}

Writeln(’Программа расчета суммы’);

{Вывод пояснений к программе}

Writeln(’Укажите необходимое число слагаемых’);

{Организация диалога}

Write(’n = ’); read(n);

{Ввод значения переменной n }

a:= -1; S:= a;

{Установка начальных значений }

For i:=2 to n do begin

{Заголовок цикла }

a:=(-1)/i*a;

{Расчет слагаемого }

S:= S+a; end;

{Добавление слагаемого в сумму}

Writeln(’Сумма равна, S = ’,S:6:4);

{Вывод результата на экран}

Repeat Until Keypressed;

{Процедура «задержки» экрана }

End.

{Конец программы}

- 23 -


Пример 4. Рассчитать сумму при заданном натуральном значении n

(−1)

i

S = å

 

, с точностью ε = 0,001.

i !

 

i =1

 

 

Решение.

Запишем условия задачи в развернутом виде:

(−1)i

 

(−1)1

 

(−1)

2

 

(−1)

3

 

(−1)

4

 

(−1)n−2

 

(−1)n−1

 

(−1)n

 

S = å

 

=

 

+

 

 

+

 

 

+

 

 

+ ... +

 

 

+

 

 

+

 

+ … .

i !

1!

2!

 

3!

 

4!

 

(n

2)!

(n -1)!

n!

i =1

 

 

 

 

 

 

 

 

 

 

 

Формально эту сумму можно представить в общем виде как сумму из бесконечного числа слагае- мых:

S = a1 + a2 + a3 + a4 +...+ an-2 + an-1 + an + … ,

где

(−1)1

(−1)

2

 

(−1)3

 

 

(−1)n−2

(−1)n−1

(−1)n

 

 

 

 

a1 =

 

, a2 =

 

 

, a3 =

 

... a

n−2 =

 

, a n-1 =

 

, an =

 

, … .

1!

2!

 

3!

(n − 2) !

(n -1)!

n!

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

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

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

a х = ехр(х* ln( a))

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

(-1) i = ехр(i* ln( -1))

не может быть использована для вычислений. Расчет знаменателя также стандартными средствами невозможен.

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

- 24 -


ak

 

 

(-1)k

 

(-1)k

 

(k -1)!

 

(-1)k -1 × (-1)

 

(k -1)!

 

-1

 

=

 

k !

 

=

×

=

×

=

.

ak−1

(-1)

k -1

k !

(-1)

k -1

(k -1)!× k

 

(-1)

k -1

k

 

 

 

 

 

 

 

 

 

 

 

(k -1)!

Откуда получаем рекуррентную формулу, связывающую слагаемое с номером k с предыдущим слагаемым с номером (k-1):

ak = -k1×ak−1 ,

здесь aiэлемент ряда (слагаемое с номером i),k- соответствует номеру слагаемого.

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

a1 = (−11!)1 = - 1 .

На его основе, применяя полученную рекуррентную формулу можно найти все остальные сла- гаемые в сумме:

a

 

=

 

(-1)

× a

=

1

a

 

=

(-1)

× a

 

= -

1

 

a

 

=

(-1)

× a

 

=

1

 

a

 

=

(−1)

× a

 

= ...

 

 

 

 

2 ,

 

 

 

6 ,

 

 

…. ,

n-1

 

n-2

,

 

2

 

2

1

 

 

3

 

3

 

2

 

 

4

 

4

 

3

 

24

 

 

n -1

 

an

=

(−1)

× an -1

= ..., и т. д.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

Однако следует учесть, что в отличие от предыдущей задачи, число слагаемых в данной задаче заранее не известно. Поэтому использовать принцип расчета суммы предыдущей задачи в данном случае не представляется возможным. Расчет слагаемых и их суммы организуем с использованием операторов цикла с предварительной проверкой условия или последующей проверкой условия, в этом случае, условием продолжения или завершения цикла (в зависимости от выбранного типа опе- ратора цикла) будет условие достижения значения очередного слагаемого значения заданной точно- сти.

Для решения задачи понадобятся некоторые переменные. Во-первых, переменная, в которой бу-

дет помещено данное значение заданной точности ε, введем переменную с именем eps вещественно- го типа. (Ее можно ввести и как константу, соответственно ее описав) Во вторых, потребуется веще- ственная переменная для накопления суммы обозначим ее, например, через S. В третьих, введем переменную i целого типа, в качестве счетчика слагаемых, она будет играть вспомогательную роль при организации вычислений с использованием оператора цикла.

В четвертых, потребуется некоторая переменная для расчета слагаемого. Поскольку в большин- стве алгоритмических языков допускается рекурсивное обращение к переменным, при котором раз- решается для расчета переменной в выражении использовать имя самой переменной, необходимости ввода массива значений для слагаемого нет. После расчета слагаемого его значение необходимо со- хранять только до момента расчета следующего. Поэтому можно использовать переменную только одну, причем простого вещественного типа. Обозначим эту переменную, например, через а.. Тогда, для расчета на основе рекуррентной формулы, можно использовать выражение вида:

а= -1/i*a.

- 25 -


Поскольку при расчете очередного значения этой переменной программа будет обращаться к преды- дущему ее значению.

ЗАМЕЧАНИЕ. Следует отметить, что в случае если значение элементов ряда (слагаемых) бу- дут использоваться в дальнейших вычислениях и их необходимо сохранить, переменную, отве- чающую за слагаемое, следует описывать как структурированную переменную типа массив.

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

еена экран. Расчеты продолжаем пока требуемая точность не будет достигнута.

Блок схема алгоритма имеет следующий вид:

С использованием цикла с предусловием

С использованием цикла с постусловием

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

Во- первых, все переменные должны быть описаны. Поэтому в разделе описаний переменных введем переменные а для расчета слагаемого, и s для расчета суммы, вещественного типа и переменную i- в качестве параметра цикла целого типа, а также переменную eps в качестве за- данной точности, описав ее как константу вещественного типа.

Во вторых, поскольку число шагов, которые необходимо будет выполнить для расчета суммы не известно, для организации цикла можно использовать оператор цикла с предварительной про- веркой условия. Однако следует помнить, что в теле цикла с предусловием должен быть исполь- зован только один оператор языка Паскаль и поэтому нам придется использовать составной опе- ратор. Можно воспользоваться для организации цикла и оператором цикла с постусловием, и в этом случае составной оператор в теле цикла не потребуется, в силу особенностей этого операто- ра цикла.

- 26 -